随机森林

R 中的监督学习:回归

Nina Zumel and John Mount

Win-Vector, LCC

随机森林

将多个多样的决策树取平均

  • 降低过拟合
  • 提升模型表达力
  • 更细粒度的预测
R 中的监督学习:回归

构建随机森林模型

  1. 从训练数据抽取自助样本
  2. 为每个样本生长一棵树
    • 在每个节点,从所有变量的随机子集里选最优分裂变量
    • 直至长成完整树
  3. 评分时,用所有树评估该样本并取平均。
R 中的监督学习:回归

示例:自行车租赁数据

cnt ~ hr + holiday + workingday + 
  weathersit + temp + atemp + hum + windspeed

R 中的监督学习:回归

使用 ranger() 的随机森林

model <- ranger(fmla, bikesJan, 
                num.trees = 500, 
                respect.unordered.factors = "order")
  • formuladata
  • num.trees(默认 500)— 至少用 200
  • mtry — 每个节点尝试的变量数
    • 默认:总变量数的平方根
  • respect.unordered.factors — 建议设为 "order"
    • 对分类变量进行"安全"哈希
R 中的监督学习:回归

使用 ranger() 的随机森林

model
Ranger result
...
OOB prediction error (MSE):       3103.623 
R squared (OOB):                  0.7837386

随机森林会返回样本外性能估计。

R 中的监督学习:回归

使用 ranger() 进行预测

bikesFeb$pred <- predict(model, bikesFeb)$predictions

predict() 输入:

  • 模型
  • 数据

预测保存在元素 predictions 中。

R 中的监督学习:回归

评估模型

计算 RMSE:

bikesFeb %>% 
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2)))
      rmse
1 67.15169
模型 RMSE
Quasipoisson 69.3
随机森林 67.15
R 中的监督学习:回归

评估模型

R 中的监督学习:回归

评估模型

R 中的监督学习:回归

让我们练习!

R 中的监督学习:回归

Preparing Video For Download...