過度配適與修剪
使用上述演算法,假設範例可以分隔,藉此訓練出對訓練樣本進行完美分類的決策樹。但是,如果資料集內含雜訊,這個樹狀圖就會過度配適資料,並顯示測試準確率不佳。
下圖顯示具雜訊的資料集,在特徵 x 和標籤 y 之間具有線性關係。上圖還顯示以這個資料集進行訓練的決策樹,沒有任何類型的正則化。此模型正確預測所有訓練範例 (模型的預測與訓練範例相符)。不過,在含有相同線性模式和不同雜訊例項的新資料集中,模型的效能會不佳。
圖 12. 雜訊的資料集。
如要限制決策樹超寬鬆,請在訓練決策樹時套用下列一或兩項正規化條件:
- 設定深度上限:避免決策樹超出最大深度,例如 10。
- 設定分葉中的樣本數量下限:系統不會將樣本數量低於特定數量的分葉視為分割作業。
下圖說明每個分葉範例數量下限的影響。模型擷取的雜訊較少。
圖 13. 區分每個分葉的樣本數量下限。
您也可以在訓練後選擇性移除 (修剪) 某些分支,也就是將某些非分葉節點轉換來離開,藉此正規化。如要選取要移除的分支版本,常見的解決方案是使用驗證資料集。也就是說,如果移除分支版本來改善驗證資料集上的模型品質,則該分支版本會遭到移除。
以下繪圖說明這個概念。在這裡,我們會測試如果非葉綠節點變成分葉 (也就是修剪橘色節點),就能改善決策樹狀圖的驗證準確率。
圖 14. 將條件及其子項修整為分葉。
下圖說明使用 20% 的資料集做為驗證來修剪決策樹的影響:
圖 15. 使用 20% 的資料集修剪決策樹。
請注意,使用驗證資料集可減少用於初步訓練決策樹的範例數量。
許多模型建立者會套用多個條件。舉例來說,您可以執行下列所有作業:
- 每個分葉套用樣本數量下限。
- 套用最大深度來限制決策樹的成長幅度。
- 修剪決策樹。
- 樣本數量下限為 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」範例搭配所選超參數來訓練最終決策樹。
在本節中,我們說明瞭決策樹狀圖限制過度配適的方式。儘管有這些方法,遵循和過度配適是決策樹的主要弱點。決策樹系引入了限制過度配適的新方法,這將在稍後說明。
直接解讀決策樹狀圖
決策樹很容易解釋。也就是說,即使只變更幾個範例,也能完全改變決策樹狀圖的結構,進而改變解讀方式。
基於決策樹的建構方式,將訓練範例分區,就能用決策樹 (而非模型) 來解讀資料集本身。每個分葉都代表資料集的特定角落。
model.describe()
函式查看樹狀結構。您也可以使用 model.get_tree()
存取及繪製個別樹狀結構。詳情請參閱
YDF 的模型檢查教學課程。不過,間接解釋也能夠提供豐富資訊。