決策樹的生成
有了資訊增益和資訊增益比,我就可以以此衡量特徵的相對好壞,進而可以用於決策樹的生成。相對應的基於資訊增益計算的方法所生成的決策樹的演算法我們叫做ID3演算法,而基於資訊增益的演算法我們叫做C4.5,二者唯一的區別就在於一個使用資訊增益衡量特徵好壞而另外一個使用資訊增益比,因此本文重點講述ID3演算法。
ID3演算法
- 特殊情況判斷
- 如果資料集中所有的樣本均屬於同一類\(C_k\),那麼直接將\(C_k\)作為該結點的類別標記,並返回決策樹\(T\)。
- 如果此時特徵集合\(A=\varnothing\)為空,那麼將\(D\)中相同類別數最多樣本的類別作為該結點的類別標記並返回\(T\)。
- 若沒有出現上述特殊情況,則計算\(A\)中各特徵的資訊增益\(g(D, A_i)\),並選擇資訊增益最大的特徵\(A_g\)。
- 若\(A_g\)的資訊增益小於閾值\(\epsilon\),那麼同樣的,將\(D\)中相同類別數最多的樣本的類別作為該結點的類別標記並返回\(T\)。
- 否則使用\(A_g=a_i\)再次將訓練集分割為若干非空子集\(D_i\),其中\(a_i\)是特徵\(A_g\)的每個可能取值,然後對每一個\(D_i\)以其例項數最大的類作為標記構建子節點。
- 對第\(i\)個子結點以\(D_i\)為訓練集,特徵集合\(A=A - {A_g}\)為特徵集,遞迴呼叫\((1)-(5)\)。
下面是更形象化的圖示:
決策樹的剪枝
為了減少決策樹的複雜度,並降低過擬合,對決策樹進行剪枝是十分有必要的。
代價複雜度剪枝
設決策樹\(T\)的葉子結點個數為\(|T|\),葉子結點表示為\(t\),\(N_t\)表示\(t\)上的所有樣本點,\(N_{tk}\)表示第\(k\)類的樣本點,\(H_t(T)\)表示葉子節點\(t\)上的經驗熵(損失)。
\[H_t(T) = -\sum_{k=1}^K\frac{N_{tk}}{|N_{t}|}\mathrm{log}\frac{N_{tk}}{|N_{t}|}
\]
那麼決策樹的損失函式可以定義為
\[C_\alpha(T)=\sum_{t=1}^{|T|}\frac{|N_t|}{|N|}H_t(T)+\alpha |T|
\]
前一項表示模型對訓練資料的預測誤差。
演算法
對每個葉子節點的父節點進行剪枝,設剪枝前樹的損失為\(T_\alpha(T_A)\),為剪枝的為\(T_\alpha(T_B)\),若滿足
\[T_\alpha(T_A) <= T_\alpha(T_B)
\]
則表明需要進行剪枝,此過程持續進行,直到無法再繼續剪枝。