• bagging有个很大的缺点,就是树相关性太强了。
  • 随机森林在bagging的基础上,削弱了变量之间的相关性

  • 在分类树的构造上:

    • $(Y_i,X_{i1},\cdots,X_{ip})\quad i=1,\dots,n$
    • 每次分裂时,从所有变量($p$个)随机选$m$个出来
    • 从$m$个变量中选择最佳的分裂方法
  • 分类:$\mathrm{m}=\lfloor\sqrt{p}\rfloor$

  • 回归:$\mathrm{m}=\lfloor p / 3\rfloor$

  • 特征重要性:

    • 每一棵决策树,用它的OOB样本计算误差,记为errOOB1
    • 对某个特征(也就是某个$\vec X_i$)加入噪声处理,再计算errOOB2

    • 求和$\sum (errOOB2-errOOB1)/B$

1
2
3
4
5
6
library(randomForest) # 这个R包可以处理NA值
fit = randomForest(class~., data = , na.action = na.omit)
varImpPlot(fit)
# 速度更快的R包,但是不能处理NA值
library(ranger)
fit = ranger(class~., data =)