5.3 決策樹的生成
5.3.1 ID3算法
核心是在決策樹各個節點上應用信息增益準則,遞歸地構建決策樹。
算法5.2(ID3算法)
輸入:訓練數據集D,特徵集A,閾值;
輸出:決策樹T
(1)若D中所有實例屬於第一類,則T爲單結點樹,並將類作爲該節點的標記,返回T
(2)若,則T爲單結點樹,並將D中實例最大的類作爲該結點的類標記,返回T
(3)否則,按算法5.1計算A中各特徵對D的信息增益,選擇信息增益最大的特徵
(4)如果的信息增益小於閾值,則置T爲單結點樹,並將D中實例最大的類作爲該結點的類標記,返回T
(5)否則,對的每一個可能值,依將D分割爲若干非空子集,將中實例數最大的類作爲標記,構建子結點,由結點及其子結點構成數T,返回T
(6)對第i個子結點,以爲訓練集,以爲特徵集,遞歸地調用(1)---(5)步,得到子樹,返回。
5.3.2 C4.5的生成算法
C4.5算法對ID3算法進行了改進,C4.5在生成的過程中,用信息增益比來選擇特徵
算法5.3(C4.5的生成算法)
輸入:訓練數據集D,特徵集A,閾值;
輸出:決策樹T
(1)若D中所有實例屬於第一類,則T爲單結點樹,並將類作爲該節點的標記,返回T
(2)若,則T爲單結點樹,並將D中實例最大的類作爲該結點的類標記,返回T
(3)否則,按式(5.10)計算A中各特徵對D的信息增益比,選擇信息增益比最大的特徵
(4)如果的信息增益比小於閾值,則置T爲單結點樹,並將D中實例最大的類作爲該結點的類標記,返回T
(5)否則,對的每一個可能值,依將D分割爲若干非空子集,將中實例數最大的類作爲標記,構建子結點,由結點及其子結點構成數T,返回T
(6)對第i個子結點,以爲訓練集,以爲特徵集,遞歸地調用(1)---(5)步,得到子樹,返回。
5.4 決策樹的剪枝
決策樹生成算法會出現過擬合,原因在於學習時過多地考慮如何提高對訓練數據的正確分類,從而構建出複雜的決策樹。解決這個問題的辦法是考慮決策樹的複雜度,對已生成的決策樹進行簡化。
在決策樹學習中將已生成的樹進行簡化的過程稱爲剪枝。剪枝從已生成的樹上裁掉一些子樹或葉結點,並將其根結點或父結點作爲新的葉結點,從而簡化分類樹模型。
剪枝通過極小化決策樹整體的損失函數或代價函數來實現。設樹的葉結點個數爲|T|,t是樹T的葉結點,該葉結點有個樣本點,其中k類的樣本點有個,k=1,2,...,K,爲葉結點t上的經驗熵,爲參數,則決策樹學習的損失函數可以定義爲
(5.11)
其中經驗熵爲
(5.12)
在損失函數中,將式(5.11)右端的第1項記作
(5.13)
則
(5.14)
表示模型對訓練數據的預測誤差,即模型與訓練數據的擬合程度,|T|表示模型複雜度,參數控制兩者之間的影響。較大的促使選擇較簡單的模型(樹),較小的促使選擇較複雜的模型(樹)。表示只考慮模型與訓練數據的擬合度,不考慮模型的複雜度。
剪枝就是當確定時,選擇損失函數最小的模型(子樹)。當值確定時,子樹越大,往往與訓練數據擬合越好,但是模型的複雜度就越高;相反,子樹越小,模型的複雜度越低,但往往與訓練數據的擬合不好。損失函數正好表示了對兩者的平衡。
可以看出,決策樹生成只考慮了通過提高信息增益(或信息增益比)對訓練數據進行更好的擬合。而剪枝通過優化損失函數還考慮了減小模型複雜度,決策樹生成學習局部模型,而決策樹剪枝學習整體模型。
算法5.4(樹的剪枝算法)
輸入:生成算法產生的整個樹T,參數
輸出:修剪後的子樹
(1)計算每個結點的經驗熵
(2)遞歸地從樹的葉結點向上回縮
設一組葉結點回縮到其父結點之前與之後的整體樹分別爲與,其對應的損失函數值分別是與,如果 (5.15)
則進行剪枝,即將父結點變爲新的葉結點。
(3)返回(2),直到不能繼續爲止,得到損失函數最小的子樹