過度配適與修剪

使用上述演算法,假設範例可以分隔,藉此訓練出對訓練樣本進行完美分類的決策樹。但是,如果資料集內含雜訊,這個樹狀圖就會過度配適資料,並顯示測試準確率不佳。

下圖顯示具雜訊的資料集,在特徵 x 和標籤 y 之間具有線性關係。上圖還顯示以這個資料集進行訓練的決策樹,沒有任何類型的正則化。此模型正確預測所有訓練範例 (模型的預測與訓練範例相符)。不過,在含有相同線性模式和不同雜訊例項的新資料集中,模型的效能會不佳。

一般的斜率為 +1,但因為資料集非常吵雜,個別資料點有時遠離最合適的線條。

圖 12. 雜訊的資料集。

 

如要限制決策樹超寬鬆,請在訓練決策樹時套用下列一或兩項正規化條件:

  • 設定深度上限:避免決策樹超出最大深度,例如 10。
  • 設定分葉中的樣本數量下限:系統不會將樣本數量低於特定數量的分葉視為分割作業。

下圖說明每個分葉範例數量下限的影響。模型擷取的雜訊較少。

三張圖顯示不同值對每葉子樣本數量的影響。不同的值為 2、5 和 10。

圖 13. 區分每個分葉的樣本數量下限。

您也可以在訓練後選擇性移除 (修剪) 某些分支,也就是將某些非分葉節點轉換來離開,藉此正規化。如要選取要移除的分支版本,常見的解決方案是使用驗證資料集。也就是說,如果移除分支版本來改善驗證資料集上的模型品質,則該分支版本會遭到移除。

以下繪圖說明這個概念。在這裡,我們會測試如果非葉綠節點變成分葉 (也就是修剪橘色節點),就能改善決策樹狀圖的驗證準確率。

兩種決策樹。一個決策樹狀圖包含 9 個節點,另一個已截斷至僅 6 個節點,方法是將其中一個條件轉換為樹葉。

圖 14. 將條件及其子項修整為分葉。

 

下圖說明使用 20% 的資料集做為驗證來修剪決策樹的影響:

此圖顯示依據直線理想模型所拖曳的模型

圖 15. 使用 20% 的資料集修剪決策樹。

 

請注意,使用驗證資料集可減少用於初步訓練決策樹的範例數量。

許多模型建立者會套用多個條件。舉例來說,您可以執行下列所有作業:

  • 每個分葉套用樣本數量下限。
  • 套用最大深度來限制決策樹的成長幅度。
  • 修剪決策樹。
YDF 代碼
在 YDF 中,系統會為所有裁舊超參數預先設定學習演算法的預設值。例如,兩個裁舊超參數的預設值如下:
  • 樣本數量下限為 5 個 (min_examples = 5)
  • 10% 的訓練資料集會保留 10% 以供驗證 (validation_ratio = 0.1)。
您可以設定 validation_ratio=0.0,停用驗證資料集的修剪功能。

這些條件會引入需要調整的新超參數 (例如最大樹狀結構深度),通常會採用自動超參數調整功能。一般來說,決策樹狀圖的速度夠快,足以訓練使用超參數調整搭配交叉驗證的情況。例如,在包含「n」範例的資料集上:

  • 將訓練樣本分成非重疊群組。例如 p=10
  • 所有可能的超參數值;例如,最大深度為 {3,5,6,7,8,9},樣本數為 {5,8,10,20}。
    • 評估每個群組對其他 p-1 小組接受訓練的決策樹品質。
    • 所有群組的平均評估結果。
  • 選取平均值評估值最高的超參數值。
  • 使用所有「n」範例搭配所選超參數來訓練最終決策樹。

在本節中,我們說明瞭決策樹狀圖限制過度配適的方式。儘管有這些方法,遵循和過度配適是決策樹的主要弱點。決策樹系引入了限制過度配適的新方法,這將在稍後說明。

直接解讀決策樹狀圖

決策樹很容易解釋。也就是說,即使只變更幾個範例,也能完全改變決策樹狀圖的結構,進而改變解讀方式。

基於決策樹的建構方式,將訓練範例分區,就能用決策樹 (而非模型) 來解讀資料集本身。每個分葉都代表資料集的特定角落。

YDF 代碼
在 YDF 中,您可以使用 model.describe() 函式查看樹狀結構。您也可以使用 model.get_tree() 存取及繪製個別樹狀結構。詳情請參閱 YDF 的模型檢查教學課程

不過,間接解釋也能夠提供豐富資訊。