随机森林

R 中的树模型机器学习

Sandro Raabe

Data Scientist

随机森林

  • 适合高维数据
  • 易于使用
  • 开箱即用的性能
  • 多个包可用:rangerrandomForest
  • tidymodels 对这些包的接口:rand_forest()(在 parsnip 包中)
R 中的树模型机器学习

思路

  • 基本思路(与袋外法相同):在自助样本上训练树
  • 关键区别:树间使用随机预测变量 → 随机森林
R 中的树模型机器学习

直觉

随机森林示意图

R 中的树模型机器学习

编码:指定随机森林模型

  • 函数名:rand_forest()

超参数:

  • mtry:每个节点可见的预测变量;默认:
    $$\left\lfloor\sqrt\text{预测变量数}\right\rfloor$$
  • trees:森林中的树数
  • min_n:最小节点样本数
rand_forest(

mtry = 4,
trees = 500,
min_n = 10) %>%
# 设置模式 set_mode("classification") %>%
# 使用引擎 ranger 或 randomForest set_engine("ranger")
R 中的树模型机器学习

编码:指定随机森林模型

spec <- rand_forest(trees = 100) %>%

set_mode("classification") %>%
set_engine("ranger")
随机森林模型规范

(分类)
主要参数: trees = 100
计算引擎:ranger
R 中的树模型机器学习

训练森林

spec %>% fit(still_customer ~ ., data = customers_train)
parsnip 模型对象

训练时间:631ms 
Ranger 结果

树数量:                     100 
样本量:                     9116 
自变量数量:                 19 
Mtry:                       4 
目标节点最小样本:           10
R 中的树模型机器学习

变量重要性

rand_forest(mode = "classification") %>%
    set_engine("ranger", importance = "impurity") %>%

fit(still_customer ~ ., data = customers_train) %>%
vip::vip()

vip 图

R 中的树模型机器学习

来"种"一片随机森林!

R 中的树模型机器学习

Preparing Video For Download...