随机森林算法原理

RF是以决策树为基学习器构建bagging的基础上,进一步在决策树的训练过程中引入随机属性,简言之 RF就是 bagging+决策树,如果非必要的话,没有必要从头到尾重新搭建基学习器,已有的包可以解决当前问题即可。但是也存在一个问题,即现有的包中都将0/1赋予同样的权重,所以当样本不均衡且更关注负样本时,此时投票函数需要进一步的优化。

  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)#查看特征的重要性

发布了67 篇原创文章 · 获赞 159 · 访问量 48万+

猜你喜欢

转载自blog.csdn.net/qq_41371349/article/details/104838314