隨機森林
「隨機樹系」 (RF) 是由決策樹組成,其中每個決策樹都會以特定隨機雜訊訓練。隨機森林是聚集最多的決策樹形式。本單元會討論幾種建立獨立決策樹的技巧,以提升建立有效隨機樹系的機率。
行李
「Bagging」(匯總) (「bootstrap「agg」(匯總)) 是指針對訓練集中的範例隨機子集訓練每個決策樹。換句話說,隨機樹系中的每個決策樹都會以不同子集進行訓練。
投球是萬靈丹。每個決策樹都會使用與原始訓練集相同的數量範例進行訓練。舉例來說,如果原始訓練集包含 60 個樣本,則每個決策樹都會以 60 個樣本進行訓練。不過,執行檢查作業只會根據這些範例的「子集」 (通常是 67%) 訓練每個決策樹。因此,在訓練指定的決策樹時,子集中的 40 個範例中有部分必須重複使用。這種重複使用方式稱為「搭配替代訓練」
舉例來說,表 6 顯示行李如何將六個樣本分散在三種決策樹上。請注意以下事項:
- 每個決策樹總共會提供六個樣本。
- 每個決策樹都會用一組不同的範例進行訓練。
- 每個決策樹都會重複使用特定範例。舉例來說,範例 #4 在訓練決策樹 1 中使用了兩次,因此在決策樹 1 中,範例 #4 的已知權重已有效增加一倍。
表 6. 針對三個決策樹提供六個訓練樣本。每個數字都代表特定決策樹 (1-3) 訓練資料集中重複出現的次數 (#1-6)。
訓練樣本 | ||||||
---|---|---|---|---|---|---|
#1 | #2 | #3 | #4 | #5 | 第六 | |
原始資料集 | 1 | 1 | 1 | 1 | 1 | 1 |
決策樹 1 | 1 | 1 | 0 | 2 | 1 | 1 |
決策樹 2 | 3 | 0 | 1 | 0 | 2 | 0 |
決策樹 3 | 0 | 1 | 3 | 1 | 0 | 1 |
在檢查作業中,每個決策樹幾乎都會根據原始訓練集內的樣本總數接受訓練。如果使用更多樣本或更少的樣本訓練每個決策樹,通常會降低隨機樹系的品質。
雖然原始隨機森林紙中未列出範例,但樣本的取樣有時「必須替換」才能完成;也就是說,一個訓練範例不能在決策樹訓練集中重複出現。例如,在上表中,所有值都是 0 或 1。
bootstrap_training_dataset=False
屬性取樣
屬性取樣表示系統會在每個節點中隨機測試一組功能,而非尋找「所有」可用功能的最佳條件。系統會在決策樹的每個節點中隨機取樣一組受測試的功能。
以下決策樹狀圖說明瞭屬性 / 特徵取樣。決策樹是以 5 個功能 (f1-f5) 進行訓練。藍色節點代表測試的功能,而白色節點則未經測試。該條件是以經過最佳測試的特徵 (以紅色外框表示) 建構而成。
圖 21. 屬性取樣。
屬性取樣的比率是重要的正規化超參數。上圖使用了約 3⁄5 的比例。許多隨機樹系實作都會測試用於迴歸和 sqrt(特徵數量) 功能的 1/3。
在 TF-DF 中,下列超參數控制項屬性取樣:
num_candidate_attributes
num_candidate_attributes_ratio
舉例來說,如果設為 num_candidate_attributes_ratio=0.5
,系統會在每個節點上測試一半的功能。
停用決策樹狀結構正則化功能
隨機森林中的個別決策樹在訓練時不修剪。(請參閱過度配適和修剪)。這會產生過度複雜的樹狀結構,且預測品質不佳。這些樹狀圖不再將個別樹狀結構正規化,而是能夠產生更準確的整體預測結果。
我們expect隨機樹系的訓練和測試準確率會有所不同。隨機樹的訓練準確率通常會較高 (有時等於 100%)。不過,隨機樹系中非常高的訓練準確率為「一般」,並不表示隨機樹系過度填充。
兩種隨機來源 (封裝和屬性取樣) 可確保決策樹之間的相對獨立性。這種獨立性會修正個別決策樹的過度配適。因此,整體不會過度配適。我們會在下一個單元中說明這項非直覺效果。
純粹隨機樹林可以訓練,沒有深度或每分葉觀測條件下限。在實際操作時,限制每分葉的最大深度和最小觀察次數是有益的。根據預設,許多隨機樹系會使用下列預設值:
- 最大深度為 16
- 每分葉 (最多 5 個) 的觀察次數下限。
您可以調整這些超參數。
雜訊的清晰度
為什麼隨機噪音可提升隨機森林的品質?圖 22 展示了古典 (修剪) 決策樹和隨機樹林的預測結果,以及使用橢圓形圖案訓練而成的隨機樹林。
對決策樹和決策樹系的演算法而言,刪節號模式難以透過與軸對齊的條件來學習,因此做出很好的範例。請注意,裁舊決策樹的預測結果品質無法與隨機樹系相同。
圖 22. 真值與單一經過修剪的決策樹狀圖及隨機樹系產生的預測結果比較。
下一張圖顯示隨機樹系前三個未修剪決策樹的預測結果;也就是說,所有決策樹都會由下列組合訓練:
- 行李
- 屬性取樣
- 停用修剪功能
請注意,比起上圖中裁切決策樹的預測結果,這三個決策樹狀圖的個別預測結果較差。不過,由於個別決策樹狀圖的錯誤僅有弱相關性,因此三種決策樹會組合在一起,形成有效的預測。
圖 23. 三個未經修剪的決策樹狀圖,可有效建立運作機制。
由於隨機樹系的決策樹不會被修理,因此訓練隨機樹係不需要驗證資料集。在實際運作時,最好使用所有可用的資料訓練模型,特別是小型資料集。
訓練隨機樹系時,只要加入越多決策樹,錯誤幾乎都會減少;也就是說,模型的品質幾乎都會提升。是,新增更多決策樹狀圖,幾乎一律會「減少」隨機樹系的錯誤。換句話說,新增更多決策樹並不能讓隨機樹系過度配適。到了某個階段,模型只會停止進步Leo Breiman 以其說法:「Random Forests 不會過度配適,因為加入更多樹木」。
舉例來說,下圖顯示隨機樹系模型的測試評估,但隨著決策樹增多。精確度會快速提升,直到穩定度大約在 0.865 左右為止。不過,新增更多決策樹並不能降低準確度;換句話說,模型不會過度配適。此行為在大部分情況下都是真實的,而且不受超參數影響。
圖 24. 隨著隨機樹林加入更多決策樹,準確率也會維持不變。