随机森林(randomForest)是利用多棵决策树对样本数据进行训练并预测的分类器。算法预测输出的类别标签 是由算法内部 多棵决策树 生成的标签的众数决定的。
内部构造:
假设数据集有m个变量,算法对数据集进行分裂,随机有放回的取出n(n<m)个变量和部分数据案例生成一个决策树(树不用剪枝,最大化生长),一直这样不断生成决策树,树多了就是森林了,加上又是随机分裂的,所以称随机森林了(我个人理解的)
因为随机分裂,所以算法中的决策树之间无关联,当一个新数据输入模型时,会根据算法中各决策树输出的标签的类别,取众数作为输出标签。
randomforest的优点:
1.相比于决策树,可以很好的避免过拟合问题。
2.能处理维度很高的数据集。
3.创建随机森林 是无偏估计
4.实现简单
R中randomForest包中的rondomForest函数
rf_m=randomForest(label~.,data[train],ntree=50,nPerm=10,mtry=3,proximity=TRUE,importance=TRUE)
leabel~.:代表需要预测的列,
ntree:生成决策树的数目
nperm:计算importance时的重复次数 #可以不写
mtry:选择的分裂属性的个数 #可以不写
proximity=TRUE:表示生成临近矩阵 # 可以不写
importance=TRUE:输出分裂属性的重要性 #可以不写
rf_pred = predict(rf_m,data[test])
可以用gmodel包中的CrossTable 验证结果。