什麼是決策樹的剪枝?
對比日常生活中,環衛工人在大街上給生長茂密的樹進行枝葉的修剪。在機器學習的決策樹算法中,有對應的剪枝算法。將比較複雜的決策樹,化簡爲較爲簡單的版本,並且不損失算法的性能。
爲什麼要剪枝?
剪枝是決策樹算法防止過擬合的一種手段,因爲在學習過程中,決策樹根據訓練樣本進行擬合,生成了針對於訓練數據集精確性極高的模型。但是訓練數據集,不可避免是一種有偏的數據。
所以我們爲了提高決策樹的泛化性能,採取了剪枝的策略。使得決策樹不那麼對於訓練數據精確分類,從而適應任何數據。
剪枝策略的分類
剪枝算法可以分爲:預剪枝和後剪枝
預剪枝
預剪枝就是在決策樹生成過程中,在每次劃分時,考慮是否能夠帶來決策樹性能的提升。
- 如果可以提升決策樹的性能則會進行劃分。
- 如果不能則會停止生長。
一般的方法有如下幾種:
- 當樹的深度達到一定的規模,則停止生長。
- 達到當前節點的樣本數量小於某個閾值的時候。
- 計算每次分裂對測試集的準確性提升,當小於某個閾值,或不再提升甚至有所下降時,停止生長。
- 當信息增益,增益率和基尼指數增益小於某個閾值的時候不在生長。
優缺點
優點:思想簡單,算法高效,採用了貪心的思想,適合大規模問題。
缺點:提前停止生長,有可能存在欠擬合的風險。
後剪枝
後剪枝是先從訓練集生成一顆完整的決策樹,然後自底向上的對決策樹進行剪枝,與預剪枝最大的不同就是:
決策樹是否生長完整。
決策樹的生成是學習局部的模型,後剪枝則是學習整體的模型。
後剪枝算法的分類
- 錯誤率降低剪枝(REP)
- 悲觀剪枝(PEP)
- 代價複雜度剪枝(CCP)
- 最小誤差剪枝(MEP)
- CVP (Critical Value Pruning)
- OPP (Optimal Pruning)
本文以西瓜書爲例,錯誤率降低剪枝(REP)。
將數據分爲訓練集和測試集,用訓練集去生成一顆完整的決策樹,用測試集去剪枝。
該算法將樹上的每個節點都作爲剪枝的候選對象,通過如下步驟進行剪枝操作:
step1:刪除以此節點爲根節點的樹,
step2:使其成爲葉子結點,賦予該節點最常見的分類
step3:對比刪除前和刪除後的性能是否有所提升,如果有則進行刪除,沒有則保留。
優缺點
優點:可以最大限度的保留樹的各個節點,避免了欠擬合的風險。
缺點:相較於預剪枝的時間開銷巨大。
奧卡姆剃刀定律
奧卡姆剃刀是一種思想,在效果相同,性能一致的情況下,模型越簡單越好。在簡直過程中,若複雜的決策樹和簡答的決策樹的性能相同則優先選擇結構簡單的決策樹。
預告andTODO
1.決策樹的連續與缺失值的處理
2.Bagging——隨機森林
3.Boosting——Adamboost,GBDT,Xgboost
Reference
[1] 《機器學習》 p79-p83
[2] 《百面機器學習》p67-p68
[3] https://www.cnblogs.com/starfire86/p/5749334.html