隨機森林

R 中的監督式學習:回歸

Nina Zumel and John Mount

Win-Vector, LCC

隨機森林

多個多樣的決策樹取平均

  • 降低過擬合
  • 提升模型表現力
  • 更細緻的預測
R 中的監督式學習:回歸

建立隨機森林模型

  1. 從訓練資料抽取自助樣本(bootstrap)
  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() 輸入:

  • model
  • data

可從元素 predictions 取得預測值。

R 中的監督式學習:回歸

評估模型

計算 RMSE:

bikesFeb %>% 
  mutate(residual = cnt - pred) %>%
  summarize(rmse = sqrt(mean(residual^2)))
      rmse
1 67.15169
Model RMSE
Quasipoisson 69.3
Random forests 67.15
R 中的監督式學習:回歸

評估模型

R 中的監督式學習:回歸

評估模型

R 中的監督式學習:回歸

一起來練習吧!

R 中的監督式學習:回歸

Preparing Video For Download...