五、剪枝處理
過擬合:在決策樹學習過程中,為了盡可能正確分類訓練樣本,結點划分過程將不斷重復,有時會造成決策樹分支過多,這時就可能會因訓練樣本學得太好,以致於把訓練集自身的一些特點當作所有數據都具有的一般性質導致過擬合。
剪枝:對付過擬合的一種重要手段,通過主動去掉一些分支來降低過擬合的風險。
基本策略:預剪枝和后剪枝。
預剪枝:對每個結點划分前先進行估計,若當前結點的划分不能帶來決策樹的泛化性能的提升,則停止划分,並標記為葉結點。
后剪枝:現從訓練集生成一棵完整的決策樹,然后自底向上對非葉子結點進行考察,若該結點對應的子樹用葉結點能帶來決策樹泛化性能的提升,則將該子樹替換為葉結點。
如何評估:留出法,即預留一部分數據用作“驗證集”以進行性能評估。
舉例:
我們將西瓜數據集隨機分成兩部分,如圖5.0.1所示:

圖 5.0.1
假設我們采用信息增益准則來進行划分屬性選擇,則從圖5.0.1的訓練集中會生成一個決策樹,如圖5.0.2.

圖5.0.2
划分前:5個正例,5個負例,擁有樣本數最對的類別。根據前面講到的信息增益准則,得到了一個決策樹。進行了5次划分
1、預剪枝
基於信息增益准則,我們會選取屬性“臍部”來對測試集進行划分,並產生三個分支。然而,是否應該進行這個划分呢?預剪枝要對划分前后的泛化性能進行估計。
划分之前,所有樣例集中在根結點,如圖5.1.1

圖5.1.1
在用屬性“臍部”划分之后,如圖5.1.2

圖5.1.2
基於預剪枝策略從表5.0.1數據所生成的決策樹如圖5.1.3

圖5.1.3
2、后剪枝
后剪枝先從訓練集中生成一棵完整的決策樹,其驗證集精度測得為 42.9%。

首先考慮結點⑥,若將其替換為葉結點,根據落在其上的訓練樣例{7,15},將其標記為“好瓜”,測得驗證集精度提高至 57.1%,於是決定剪枝:


然后考慮結點⑤,若將其替換為葉結點,根據落在其上的訓練樣例{6,7,15},將其標記為“好瓜”,測得驗證集精度仍為 57.1%,可以不剪枝:

對結點②,若將其替換為葉結點,根據落在其上的訓練樣例{1,2,3,14},將其標記為“好瓜”,測得驗證集精度提升至 71.4%,決定剪枝:

對結點③和①,先后替換為葉結點,均未測得驗證集精度提升,於是不剪枝:

最終,后剪枝得到的決策樹:

3、預剪枝與后剪枝優缺點比較
(1)時間開銷
• 預剪枝:訓練時間開銷降低,測試時間開銷降低
• 后剪枝:訓練時間開銷增加,測試時間開銷降低
(2)過/欠擬合風險
• 預剪枝:過擬合風險降低,欠擬合風險增加
• 后剪枝:過擬合風險降低,欠擬合風險基本不變
(3)泛化性能:后剪枝通常優於預剪枝
