隨機森林 (Random Forest)

基於決策樹的集成學習方法,透過多棵樹的預測匯總提高準確性和穩定性

概述

隨機森林由 Leo Breiman 於 2001 年提出,屬於 Bootstrap Aggregating(Bagging)的變體。它通過建構多棵決策樹並匯總它們的預測結果來提高模型的準確性和穩定性。核心思想是「三個臭皮匠,勝過諸葛亮」——通過組合多個弱分類器形成一個強分類器。隨機森林在傳統 Bagging 的基礎上加入了隨機特徵選擇,進一步減少了各棵樹之間的相關性。

原理與建構過程

Bootstrap Sampling:對每棵樹從訓練資料中進行有放回的隨機抽樣,每個子集約包含 63.2% 的原始樣本,未被選中的樣本稱為袋外樣本 (OOB)。 特徵隨機選擇:在每個節點分裂時,從隨機選擇的特徵子集中選擇最佳分裂,分類問題通常設為 sqrt(n_features)。 建構決策樹:每棵樹在隨機選擇的訓練子集上使用隨機選擇的特徵子集完整建構(不剪枝)。 預測匯總:分類問題使用多數投票,回歸問題使用平均值。

特徵重要性

隨機森林的一個重要優勢是可以計算特徵重要性。基於不純度減少的重要性在每棵樹分裂時記錄特徵對不純度的降低量,匯總後正規化即得到重要性分數。基於排列的重要性通過隨機打亂特徵值來測量模型效能的下降。這對於了解哪些特徵對預測最重要以及進行特徵選擇非常有用。

調參數指南

n_estimators:樹的數量,越多越好但回報遞減,一般 100-500 足夠。 max_depth:最大深度,None 表示不限制(可能過擬合),一般 10-30 是合理的起始點。 max_features:每個分裂考慮的特徵數,'sqrt' 是分類的經典選擇。 min_samples_split/min_samples_leaf:增加這些值會使模型更保守,有助於減少過擬合。

優缺點

優點:準確率高、穩定性強、可處理高維資料、可處理缺失值、可並行訓練、內建特徵重要性。 缺點:訓練時間較長、預測時間較長、可解釋性較低、在噪音較大的資料上可能過擬合。隨機森林在 Kaggle 競賽中廣受歡迎,是許多資料科學專案的強力基線模型。

相關連結