決策樹學習筆記
參考資料:
- 《機器學習》周志華
- 《統計學習方法》李航
1. 決策樹生成演算法
決策樹的演算法如圖所示:
第2行和第4行是對新生成節點進行類別標記。第9行開始是迴圈分裂node節點,為最優特徵的每一個值生成葉子節點。
第8行是重點,它決定了決策樹的生長方式:當我有不止一個特徵時,我該如何選擇一個”最優“特徵作為節點分裂的依據?
2. 劃分最優特徵
最優特徵是通過資訊熵和資訊增益來確定的。所謂的”最優“就是我們希望最早作為節點分裂依據的特徵是最具有區分度的,其分支節點儘可能屬於同一類別,也就是節點的”純度“越高。
2.1 資訊增益
資訊熵是度量樣本集合純度的常用指標。它利用了負對數函式 f(x) = -log(p), 該函式同時滿足了概率上升時不確定性的減少
其中,pk是樣本集D中第k類樣本所佔的比例。Ent(D)的值越小,D的純度越高。
資訊增益可以由資訊熵計算得到。假定離散屬性a由V個可能的取值,則用a對樣本集D進行劃分可以得到V個分支節點。定義資訊增益為:
\[Gain(D,a) = Ent(D) - \sum_{v=1}^V \frac{|D^V|}{|D|}Ent(D^v) \]其中,|Dv|/|D|權重使樣本數越多的分支節點的影響越大。最終選出的屬性是 a = argmaxa∈AGain(G, a)
2.2 增益率
單純通過資訊增益存在一個問題:如果資料中存在一個例如“id”的屬性,擁有極高的資訊純度,但並不能有效的作為分類特徵,決策樹不具備泛化能力。一種方法是從資料中刪除這一列。另一種方法則是使用增益率代替資訊增益作為特徵劃分依據。G4.5
演算法不直接通過資訊增益,而是通過增益率選擇最優劃分屬性。
IV(a)稱為屬性a的”固有值“,a可取的數目越多,IV(a)的值也就會越大。
2.3 基尼指數
CART決策樹使用基尼指數來劃分特徵:
\[Gini(D) = \sum^{|y|}_{k=1} \sum_{k'=k} p_k p_k' = 1- \sum^{|y|}_{k=1}p_k^2 \]基尼指數計算式最後一項是取出兩個樣本,屬於同一個標籤的概率總和,被1減後就是兩個樣本不屬於同意標籤的概率。所以基尼指數越小,資料集D的純度就越高。
3. 決策樹剪枝
剪枝是一種很好的防止過擬合的方法。決策樹生成過程只考慮提高資訊增益對訓練資料進行更好的擬合,剪枝則是通過優化損失函式來減小模型複雜度。決策樹生成學習區域性的模型,決策樹剪枝學習整體的模型。
決策樹的損失函式可以定義為:
\[C_{\alpha}(T) = \sum^{|T|}_{t=1}N_t H_t(T)+\alpha|T| \]其中,|T|是樹的節點個數,t是葉子節點,Nt是節點t的樣本點數,其中由Ntk個屬於k類的樣本點。Ht(T)是節點t的經驗熵,α>=0是引數。
經驗熵為:
\[H_t(T) = -\sum_{k}\frac{N_{tk}}{N_t} log \frac{N_{tk}}{N_t} \]剪枝過程:計算每個節點的經驗熵,遞迴地從樹的葉節點回縮。
記一組葉節點回縮到其父節點前後的整體決策樹分別為TB, TA,如果其對應的損失函式Cα(TA) <= Cα(TB),則進行剪枝,父節點變為新的葉節點。
4. 連續與缺失值
4.1 連續值處理
連續屬性:例如人的身高,從180 cm到181 cm之間有無數個數值。與之相對的是離散屬性,例如拋硬幣,之可能出現0和1,是有限種可能。
假設連續屬性a在樣本集D上出現了n個不同取值,可以將這n個數值排序,在其中選取一個分割點t,大於t的和不大於t的分別可以作為離散屬性處理。
例如,可以將資訊增益函式改寫為Gain(D, a, t) t∈T,選取出使得資訊增益最大的t作為分割點。
4.2 缺失值處理
一條資料中可能會有有一個或多個屬性的資料缺失。這個問題主要體現在影響屬性劃分上。
假設樣本資料中包含了無缺失值樣本,和在某個屬性上有缺失值的樣本。現在定義三個變數:
- ρ表示無缺失值樣本所佔的比例
- \tilde{pk}表示無缺失值樣本中第k類所佔的比例
- \tilde{rv}表示無缺失值樣本在屬性α上取值為αv的樣本所佔的比例
以此推廣資訊增益的計算式:
\[Gain(G,a) = \rho \times Gain(\tilde{D},a) = \rho \times (Ent(\tilde{D})-\sum^{V}_{v=1}(\tilde{D^v})) \]其中:
\[Ent(\tilde{D}) = -\sum^{|y|}_{k=1}\tilde{p_k} log_2 \tilde{p_k} \]直觀的來看,最終的結果是讓有缺失值的數值在缺失的屬性上劃入所有子節點,但是以不同的概率。