統計學習方法第5章【2】----決策樹的生成

5.3 決策樹的生成

5.3.1 ID3算法

核心是在決策樹各個節點上應用信息增益準則,遞歸地構建決策樹。

算法5.2(ID3算法)

輸入:訓練數據集D,特徵集A,閾值\varepsilon

輸出:決策樹T

(1)若D中所有實例屬於第一類C_{k},則T爲單結點樹,並將類C_{k}作爲該節點的標記,返回T

(2)若A=\phi,則T爲單結點樹,並將D中實例最大的類C_{k}作爲該結點的類標記,返回T

(3)否則,按算法5.1計算A中各特徵對D的信息增益,選擇信息增益最大的特徵A_{g}

(4)如果A_{g}的信息增益小於閾值\varepsilon,則置T爲單結點樹,並將D中實例最大的類C_{k}作爲該結點的類標記,返回T

(5)否則,對A_{g}的每一個可能值a_{i},依A_{g}=a_{i}將D分割爲若干非空子集D_{i},將D_{i}中實例數最大的類作爲標記,構建子結點,由結點及其子結點構成數T,返回T

(6)對第i個子結點,以D_{i}爲訓練集,以A-\left \{A_{g} \right \}爲特徵集,遞歸地調用(1)---(5)步,得到子樹T_{i},返回T_{i}

5.3.2  C4.5的生成算法

C4.5算法對ID3算法進行了改進,C4.5在生成的過程中,用信息增益比來選擇特徵

算法5.3(C4.5的生成算法)

輸入:訓練數據集D,特徵集A,閾值\varepsilon

輸出:決策樹T

(1)若D中所有實例屬於第一類C_{k},則T爲單結點樹,並將類C_{k}作爲該節點的標記,返回T

(2)若A=\phi,則T爲單結點樹,並將D中實例最大的類C_{k}作爲該結點的類標記,返回T

(3)否則,按式(5.10)計算A中各特徵對D的信息增益比,選擇信息增益比最大的特徵A_{g}

(4)如果A_{g}的信息增益比小於閾值\varepsilon,則置T爲單結點樹,並將D中實例最大的類C_{k}作爲該結點的類標記,返回T

(5)否則,對A_{g}的每一個可能值a_{i},依A_{g}=a_{i}將D分割爲若干非空子集D_{i},將D_{i}中實例數最大的類作爲標記,構建子結點,由結點及其子結點構成數T,返回T

(6)對第i個子結點,以D_{i}爲訓練集,以A-\left \{A_{g} \right \}爲特徵集,遞歸地調用(1)---(5)步,得到子樹T_{i},返回T_{i}

5.4 決策樹的剪枝

決策樹生成算法會出現過擬合,原因在於學習時過多地考慮如何提高對訓練數據的正確分類,從而構建出複雜的決策樹。解決這個問題的辦法是考慮決策樹的複雜度,對已生成的決策樹進行簡化。

在決策樹學習中將已生成的樹進行簡化的過程稱爲剪枝。剪枝從已生成的樹上裁掉一些子樹或葉結點,並將其根結點或父結點作爲新的葉結點,從而簡化分類樹模型。

剪枝通過極小化決策樹整體的損失函數或代價函數來實現。設樹的葉結點個數爲|T|,t是樹T的葉結點,該葉結點有N_{t}個樣本點,其中k類的樣本點有N_{tk}個,k=1,2,...,K,H_{t}(T)爲葉結點t上的經驗熵,\alpha \geqslant 0爲參數,則決策樹學習的損失函數可以定義爲

C_{\alpha }\left ( T \right )=\sum_{t=1}^{|T|}N_{t}H_{t}(T)+\alpha |T|                                      (5.11)

其中經驗熵爲

H_{t}(T)=-\sum_{k}\frac{N_{kt}}{N_{t}}log_{2}\frac{N_{kt}}{N_{t}}                                            (5.12)

在損失函數中,將式(5.11)右端的第1項記作

C\left ( T \right )=\sum_{t=1}^{|T|}N_{t}H_{t}(T)=-\sum_{t=1}^{|T|}\sum_{k=1}^{K}{N_{tk}}log_{2}\frac{N_{kt}}{N_{t}}            (5.13)

 C_{\alpha }\left ( T \right )=C\left ( T \right )+\alpha |T|                                                    (5.14)

C\left ( T \right )表示模型對訓練數據的預測誤差,即模型與訓練數據的擬合程度,|T|表示模型複雜度,參數\alpha \geqslant 0控制兩者之間的影響。較大的\alpha促使選擇較簡單的模型(樹),較小的\alpha促使選擇較複雜的模型(樹)。\alpha = 0表示只考慮模型與訓練數據的擬合度,不考慮模型的複雜度。

剪枝就是當\alpha確定時,選擇損失函數最小的模型(子樹)。當\alpha值確定時,子樹越大,往往與訓練數據擬合越好,但是模型的複雜度就越高;相反,子樹越小,模型的複雜度越低,但往往與訓練數據的擬合不好。損失函數正好表示了對兩者的平衡。

可以看出,決策樹生成只考慮了通過提高信息增益(或信息增益比)對訓練數據進行更好的擬合。而剪枝通過優化損失函數還考慮了減小模型複雜度,決策樹生成學習局部模型,而決策樹剪枝學習整體模型。

算法5.4(樹的剪枝算法)

輸入:生成算法產生的整個樹T,參數\alpha

輸出:修剪後的子樹T_{\alpha }

(1)計算每個結點的經驗熵

(2)遞歸地從樹的葉結點向上回縮

設一組葉結點回縮到其父結點之前與之後的整體樹分別爲T_{B }T_{A },其對應的損失函數值分別是C_{\alpha }(T_{B})C_{\alpha }(T_{A}),如果C_{\alpha }(T_{A})\leq C_{\alpha }(T_{B})                                                                                 (5.15)           

則進行剪枝,即將父結點變爲新的葉結點。

(3)返回(2),直到不能繼續爲止,得到損失函數最小的子樹T_{\alpha }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章