一、算法理念:三个臭皮匠胜过一个诸葛亮
随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。
在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
二、实现过程:随机采样+完全分裂+投票分类
①假设我们设定训练集中的样本个数为N,然后通过有重置的重复多次抽样来获得这N个样本,这样的抽样结果将作为我们生成决策树的训练集;
②如果有M个输入变量,每个节点都将随机选择m(m<M)个向量;
③每棵决策树都最大可能地进行生长而不进行剪枝;
④通过对所有的决策树进行加总来预测新的数据(在分类时采用多数投票,在回归时采用平均)。
三、实现方法:R
创建分类器
m <- randomForest ( train, ntree = 500, mtry =sqrt(p), nPerm,importance=TRUE)
train 是包含训练数据集的数据框
ntree 是一个整数,制定树的数目
mtry 是一个可选的整数,代表每次划分中随机选择的变量的数目,默认是sqrt(p),p是数据中的总变量数
nPerm 表示计算importance时的重复次数,数值大于1给出了比较稳定的估计
importance 表示输出分裂属性的重要性
Tm]�,
进行预测:
p<- predict (m, test, type = "response”)
m 是randomForest函数训练的模型
test 是包含测试集的数据框,与训练集数据的结构相同
type 可以是"response"、"prob”、“votes"中的一个,分别表示输出的预测向量是预测类别、预测概率或者投票数的矩阵。
四、案例分析——ATM选址
1)定义
因变量Y:ATM连续12个月的交易笔数平均值,日均交易量大于等于70笔则定义为1
自变量X:ATM地址周边300m的GIS信息,并根据实际含义分为19种类别
研究目标:找出对交易笔数影响较大的一组变量,从而预测交易笔数较高的布点地址
数据来源: ATM交易笔数+高德地图的GIS数据
2)R代码说明:
①将数据行变量进行随机性抽样,70%作为训练样本,30%作为验证样本
②建立500棵树的随机森林模型
③规定输出变量,变量重要性,训练模型,验证模型