随机森林算法原理
程序员文章站
2022-07-14 15:14:07
...
RF是以决策树为基学习器构建bagging的基础上,进一步在决策树的训练过程中引入随机属性,简言之 RF就是 bagging+决策树,如果非必要的话,没有必要从头到尾重新搭建基学习器,已有的包可以解决当前问题即可。但是也存在一个问题,即现有的包中都将0/1赋予同样的权重,所以当样本不均衡且更关注负样本时,此时投票函数需要进一步的优化。
- 算法流程
① 假设存在数据集,有特征数N,有放回的抽样可以生 成抽样空间
②构建基学习器(决策树):就每一个抽样 (其中K<<M)生成决策树,并记录每一个决策树的结果
③ 训练T 次使 ,其中 是一种算法(绝对多数投票法,相对多数投票法,加权投票法等)
2. RandomForest包主要参数解释
formula:y~x1+x2+...+xk
data :数据集
na.action:缺失值的处理方式
ntree :生成树的数量 ,一般生成的数越多开销越大,一般而言不要太小
mtry: 随机抽样选取特征数,分类问题默认总特征数的平方根,回归问题默认为总特征的1/3
nodes:是否返回node
#以泰坦尼克号的数据集为例
setwd('E:/R')
data<-read.csv('E:/R/train.csv')
str(data)
data_new<-data[c(1,2,3,5,6,7,8,10)]
data_new<-na.omit(data_new)
rf<-randomForest(as.factor(Survived)~.,data=data_new)
plot(rf)
随机森林的OOB是17.23%,准确率为:83%,召回为:17.8%
可以看见,误差在150棵树的情况下比较稳定了,为节省计算开销,可以选择将ntree参数设置为150
rf<-randomForest(as.factor(Survived)~.,data=data_new,ntree=150)
此时,OOB为18.21%,准确度为82%,召回为17.8%
将随机抽样的特征数设置为4的时候,得到的OOB是最小的
varImpPlot(rf)#查看特征的重要性
上一篇: 在真实数据集上的随机森林模型参数调优
下一篇: Dubbo性能调优参数及原理