剪枝處理-----決策樹

剪枝處理

在之前的內容中提到過,決策樹建立的時候停止的三個理論條件,理論上,在給定的樣本集和中,一般要等到屬性劃分完或者樣本分類完成再停止,但是這樣很容易導致決策樹的過擬合。剪枝是決策樹對付「過擬合」的主要手段,剪枝顧名思義就是修剪決策樹,減少寬度和深度,使得樹不那麼複雜,可以有效防止「過擬合」。

決策樹剪枝的基本策略有「預剪枝」和「後剪枝」。

1. 預剪枝

預剪枝是指在決策樹生成的過程中,對每個結點在劃分前先進行估計,如果當前結點的劃分不能帶來決策樹泛化性能的提升,那麼停止劃分並且將當前結點標記爲葉子結點。

如上圖所示,在對第二層劃分之前,我們先將樣本集合輸入決策樹中,計算精度,比較劃分前後的精度,再決定這個結點是分支結點還是葉子結點。很明顯,預剪枝使得決策樹的很多分支都沒有「展開」,這樣不僅降低了過擬合的風險,也減少了決策樹的訓練時間開銷和預測時間開銷。但是另一方面,有些分支的當前劃分雖然不能提升泛化性能,但是在其基礎上進行的後續劃分可能會導致性能顯著提高。並且"預剪枝"使得決策樹中的多個分支不得已展開,會帶來欠擬合的風險。

2. 後剪枝

 後剪枝則是從訓練集生成一棵完整的決策樹,然後自底向上地對非葉子節點進行考察,如果將該結點對應地子樹替代爲葉子結點能帶來決策樹泛化性能地提升,那麼就將該子樹替換爲葉子結點

 如圖爲後剪枝地具體計算過程,直接自底向上,逐個計算分支結點直接變爲葉子結點之後地分類精度,在將分支結點替換爲葉子結點地時候,選擇分支結點下類別數多的作爲葉子結點,如「紋理」這個分支結點,在圖4.5中,有三個分支,其中兩個好瓜分支一個壞瓜分支,那麼在替換爲葉子結點地時候,選擇好瓜作爲葉子結點。

從預剪枝和後剪枝的圖中可以看出,後剪枝決策樹通常比預剪枝決策樹保留了更多的分支。一般情況,後剪枝決策樹的欠擬合風險小,泛化能力往往優於預剪枝決策樹。但是後剪枝決策樹的訓練時間更長,首先後剪枝決策樹本身就是基於完全決策樹上建立的,並且還需要自底向上的對樹中地所有非葉子節點進行逐一考察。

目前樓主做過的項目中還沒使用過剪枝處理,可能是因爲平時調sklearn中的庫習慣了,並且也可以使用網格搜索來進行決策樹參數的最佳選擇,所以還真沒特別關注這個。