決策樹剪枝算法


算法目的:決策樹的剪枝是為了簡化決策樹模型,避免過擬合。

算法基本思路:減去決策樹模型中的一些子樹或者葉結點,並將其根結點作為新的葉結點,從而實現模型的簡化。

模型損失函數
1. 變量預定義:|T|表示樹T的葉節點個數,t表示樹T的葉節點,同時, Nt 表示該葉節點的樣本點個數,其中屬於k類的樣本點有 Ntk 個,K表示類別的個數, Ht(T) 為葉結點t上的經驗熵, α0 為參數
2. 損失函數: Ca(T)=t=1|T|NtHt(T)+α|T|
3. 簡化表示: C(T)=t=1|T|NtHt(T)
4. 經驗熵: Ht(T)=kKNtkNtlogNtkNt

損失函數簡化形式: Ca(T)=C(T)+α|T|

這里的經驗熵反應了一個葉結點中的分類結果的混亂程度,經驗熵越大,說明該葉節點所對應的分類結果越混亂,也就是說分類結果中包含了較多的類別,表明該分支的分類效果較差。所以,損失函數越大,說明模型的分類效果越差。
決策樹的剪枝通常分為兩種,即預剪枝、后剪枝。
預剪枝是在決策樹生成過程中,對樹進行剪枝,提前結束樹的分支生長。
后剪枝是在決策樹生長完成之后,對樹進行剪枝,得到簡化版的決策樹。
下面的算法,是后剪枝的實現步驟。

算法步驟:

輸入:生成算法產生的整個樹T,參數 α
輸出:修剪后的子樹 Tα
1. 計算每個結點的經驗熵
2. 遞歸地從樹的葉結點向上回縮
設一組葉結點回縮到父結點之前與之后的整體樹分別為 TB TA ,其對應的損失函數值分別是 Cα(TB) Cα(TA) ,如果 Cα(TA)Cα(TB) ,即如果進行剪枝,損失函數變小,就進行剪枝,將父結點變為新的葉結點
3. 返回(2),直至不能繼續為止,得到損失函數最小的子樹 Tα


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM