隨機森林

R 的樹狀模型機器學習

Sandro Raabe

Data Scientist

隨機森林

  • 適用高維度資料
  • 易於使用
  • 開箱即用的效能
  • 多個套件皆有實作:rangerrandomForest
  • tidymodels 介面:rand_forest()(在 parsnip 套件中)
R 的樹狀模型機器學習

概念

  • 基本想法(與 bagging 相同):在自助抽樣上訓練多棵樹
  • 關鍵差異:樹間使用隨機特徵 $\rightarrow$ 隨機森林
R 的樹狀模型機器學習

直覺

隨機森林示意圖

R 的樹狀模型機器學習

程式碼:指定隨機森林模型

  • 函式名稱:rand_forest()

超參數:

  • mtry:每個節點可見的特徵,預設:
    $$\left\lfloor\sqrt\text{num predictors}\right\rfloor$$
  • trees:森林中的樹數
  • min_n:允許的最小節點大小
rand_forest(

mtry = 4,
trees = 500,
min_n = 10) %>%
# Set the mode set_mode("classification") %>%
# Use engine ranger or randomForest set_engine("ranger")
R 的樹狀模型機器學習

程式碼:指定隨機森林模型

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

set_mode("classification") %>%
set_engine("ranger")
Random Forest Model Specification

(classification)
Main Arguments: trees = 100
Computational engine: ranger
R 的樹狀模型機器學習

訓練森林

spec %>% fit(still_customer ~ ., data = customers_train)
parsnip model object

Fit time:  631ms 
Ranger result

Number of trees:                  100 
Sample size:                      9116 
Number of independent variables:  19 
Mtry:                             4 
Target node size:                 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...