Random Forest (隨機森林)
Random Forest (隨機森林) 可以想成:
用很多棵 Decision Tree (決策樹) 一起投票做決策。
單棵樹容易不穩定,
隨機森林透過「多棵樹 + 隨機性」來降低過擬合、提高泛化能力。
核心想法(白話)
- 不只訓練一棵樹,而是訓練很多棵
- 每棵樹看到的資料都不完全一樣(Bootstrap 抽樣)
- 每次切分時只看一部分特徵(feature randomness)
- 最後把所有樹的結果整合
- 分類:多數決(vote)
- 回歸:平均值(average)
為什麼比單棵樹穩定
單棵樹對資料很敏感,資料稍微改變,樹可能差很多。
隨機森林透過「平均多棵樹」:
- 把單棵樹的隨機誤差互相抵消
- 降低模型方差(variance)
- 通常有更好的測試集表現
什麼時候適合用
- 你想要比單棵樹更穩定的結果
- 資料有非線性關係
- 不想做太多特徵工程,也希望先拿到不錯 baseline
- 分類與回歸都可使用
優點
- 泛化通常比單棵樹好
- 對特徵縮放不敏感(通常不需先做 scaling)
- 可處理數值與類別特徵(視前處理方式)
- 可輸出特徵重要性(feature importance)
限制
- 可解釋性比單棵樹低
- 訓練與推論成本較高(因為有很多棵樹)
- 特徵重要性可能偏好高基數特徵
- 外插能力弱(回歸時對訓練範圍外預測有限)
常見重要參數
n_estimators:樹的數量(越多通常越穩定,但更慢)max_depth:每棵樹最大深度(防止過深過擬合)max_features:每次切分可看的特徵數min_samples_split:節點最少樣本才可再切min_samples_leaf:葉節點最少樣本數
和 Decision Tree 快速對照
- Decision Tree (決策樹):單棵樹,快、好解釋,但容易波動
- Random Forest (隨機森林):多棵樹整合,較穩定、泛化好,但較難解釋
實務小建議
- 先用 Random Forest 當 baseline 很常見
- 類別不平衡時,記得看 Confusion Matrix (混淆矩陣)、F1,而不只看 Accuracy
- 可用 OOB(out-of-bag)估計快速檢查泛化表現