隨機森林

「隨機樹系」 (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。

YDF 代碼
您可以在 YDF 中使用下列指派方式啟用訓練,而不必替換下列項目: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 個) 的觀察次數下限。

您可以調整這些超參數。

YDF 代碼
您可以使用 YDF 的 Tuner,輕鬆調整超參數。詳情請參閱 YDF 的微調教學課程

雜訊的清晰度

為什麼隨機噪音可提升隨機森林的品質?圖 22 展示了古典 (修剪) 決策樹和隨機樹林的預測結果,以及使用橢圓形圖案訓練而成的隨機樹林。

對決策樹和決策樹系的演算法而言,刪節號模式難以透過與軸對齊的條件來學習,因此做出很好的範例。請注意,裁舊決策樹的預測結果品質無法與隨機樹系相同。

三張插圖。第一個標有「真值」字樣的插圖是完美的橢圓。第二個名為「修剪後的決策樹」的插圖
位於橢圓形和矩形之間。第三個插圖是標註「Random Forest」的圖表並不算是橢圓形,但與標示為「修剪後的決策樹」的插圖更近了橢圓。

圖 22. 真值與單一經過修剪的決策樹狀圖及隨機樹系產生的預測結果比較。

下一張圖顯示隨機樹系前三個未修剪決策樹的預測結果;也就是說,所有決策樹都會由下列組合訓練:

  • 行李
  • 屬性取樣
  • 停用修剪功能

請注意,比起上圖中裁切決策樹的預測結果,這三個決策樹狀圖的個別預測結果較差。不過,由於個別決策樹狀圖的錯誤僅有弱相關性,因此三種決策樹會組合在一起,形成有效的預測。

三個帶有雜訊的刪節號。

圖 23. 三個未經修剪的決策樹狀圖,可有效建立運作機制。

由於隨機樹系的決策樹不會被修理,因此訓練隨機樹係不需要驗證資料集。在實際運作時,最好使用所有可用的資料訓練模型,特別是小型資料集。

訓練隨機樹系時,只要加入越多決策樹,錯誤幾乎都會減少;也就是說,模型的品質幾乎都會提升。是,新增更多決策樹狀圖,幾乎一律會「減少」隨機樹系的錯誤。換句話說,新增更多決策樹並不能讓隨機樹系過度配適。到了某個階段,模型只會停止進步Leo Breiman 以其說法:「Random Forests 不會過度配適,因為加入更多樹木」。

舉例來說,下圖顯示隨機樹系模型的測試評估,但隨著決策樹增多。精確度會快速提升,直到穩定度大約在 0.865 左右為止。不過,新增更多決策樹並不能降低準確度;換句話說,模型不會過度配適。此行為在大部分情況下都是真實的,而且不受超參數影響。

比較準確率與上一段所述決策樹數量的比較圖。

圖 24. 隨著隨機樹林加入更多決策樹,準確率也會維持不變。