機器學習相關知識整理系列之一:決策樹算法原理及剪枝(ID3,C4.5,CART)


決策樹是一種基本的分類與回歸方法。分類決策樹是一種描述對實例進行分類的樹形結構,決策樹由結點和有向邊組成。結點由兩種類型,內部結點表示一個特征或屬性,葉結點表示一個類。

1. 基礎知識

在信息學和概率統計中,熵(entropy)是表示隨機變量不確定性的度量。設\(X\)是一個取有限個值得離散隨機變量,其概率分布為:$$P(X = x_i) = p_i, i = 1,2,3,...,n$$
則隨機變量\(X\)的熵定義為:$$H(X) = - \sum_{i=1}^{n}p_i\log{p_i}$$
通常上式中對數以\(2\),或者\(e\)為底。由定義知,熵依賴於\(X\)的分布,而於\(X\)的取值無關,所以\(X\)的熵記作\(H(p)\),即:

\[H(p) = - \sum_{i=1}^{n}p_i\log{p_i} \]

熵越大,隨機變量的不確定性就越大,\(0\leq H(p) \leq \log{n}\)

1.1 條件熵

設有隨機變量\((X,Y)\),其聯合概率分布為:

\[P(X=x_i, Y=y_j) = p_{ij}, i = 1,2,...,n; j = 1,2,...,n \]

條件熵表示\(H(Y|X)\)在已知隨機變量\(X\)的條件下隨機變量\(Y\)的不確定性,定義為:

\[H(Y|X) = \sum_{i=1}^{n}p_i H(Y|X=x_i) \]

這里,\(p_i=P(X=x_i), i = 1,2,...,n\)。當熵和條件熵中的概率由數據估計(極大似然估計)得到時,所對應的熵分別為經驗熵和經驗條件熵。

1.2 信息增益

信息增益表示得知特征\(A\)的信息而使得類\(Y\)的信息的不確定性減少的程度。特征\(A\)對訓練數據集\(D\)的信息增益\(g(D,A)\),定義為集合\(D\)的經驗熵與特征\(A\)給定條件下\(D\)的經驗條件熵之差,即:

\[g(D,A) = H(D) - H(D|A)$$對於數據集$D$,信息增益依賴於特征,不同的特征往往具有不同的信息增益,信息增益大的特征往往具有更強的分類能力。 根據信息增益准則的特征選擇方法:對訓練數據集(或子集)$D$,計算其每個特征的信息增益,並比較它們的大小,選擇信息增益最大的特征。 設訓練數據集為$D$,$|D|$表示其樣本容量,即樣本個數。設有K個類$C_k,k = 1,2,...,K$,$|C_k|$為屬於類$C_k$的樣本個數,$\sum_{k=1}^{K}|C_k| = |D|$。設特征$A$有$n$個不同的取值${a_1,a_2,...,a_n}$,根據特征$A$的取值將$D$划分為$n$個子集$D_1,D_2,...,D_n$,$|D_i|$為$D_i$的樣本個數,$\sum_{i=1}^{n}|D_i| = |D|$。記子集$D_i$中屬於類$C_k$的樣本集合為$D_{ik}$,即$D_{ik} = D_i\cap C_k$。 (1)數據集$D$的經驗熵$H(D)$ $$H(D) = - \sum_{k=1}^{K}{\frac{|C_k|}{|D|} \log\frac{|C_k|}{|D|} }\]

(2)特征\(A\)對數據集\(D\)的經驗條件熵\(H(D|A)\)

\[H(D|A) = \sum_{i=1}^{n}\frac{|D_i|}{|D|}H(D_i) = - \sum_{i=1}^{n}\frac{|D_i|}{|D|} \sum_{k=1}^{K}{\frac{|D_{ik}|}{|D_i|} \log _{2} \frac{|D_{ik}|}{|D_i|}} \]

(3)信息增益\(g(D,A) = H(D) - H(D|A)\)

1.3 信息增益比

信息增益作為划分數據集的特征,存在偏向與選擇取值較多的特征的問題。信息增益比可以改進改問題。特征\(A\)對訓練數據集\(D\)的信息增益比\(g_R(D,A)\)定義為其信息增益\(g(D,A)\)與訓練數據集\(D\)關於特征\(A\)的值得熵\(H_A(D)\)之比,即:

\[g_R(D,A) = \frac{g(D,A)}{H_A(D)}$$其中$H_A(D) = - \sum_{i=1}^{n} \frac{|D_i|}{|D|} \log_2{\frac{|D_i|}{|D|} }$,$n$是特征A取值的個數。 ###1.4 基尼系數 后面補充 ##2. ID3算法 在決策樹各個結點上應用**信息增益**准則選擇特征,遞歸地構建決策樹。 給定訓練數據集$D$,**特征集**$S$,閾值$\epsilon$ (1)若$D$中所有實例屬於同一類$C_k$,則T為單結點樹,並將類$C_k$作為該結點的類標記,返回T; (2)若$S=\varnothing$,則T為單結點樹,並將D中實例數最大的類$C_k$作為該結點的類標記,返回T; (3)否則,計算$S$中各特征對$D$的信息增益,選擇信息增益最大的特征$S_g$; (4)如果$S_g$的信息增益小於閾值$\epsilon$,則置T為單結點樹,並將$D$中實例數最大的類$C_k$作為該結點的類標記,返回T; (5)否則,對$S_g$的每一個可能值$a_i$,將$D$分割為若干個非空子集$D_i$,將$D_i$中實例數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T (6)對第i個子節點,以$D_i$為訓練集,以$S-{S_g}$為特征集,遞歸調用步(1)-(5),得到字數$T_i$,返回$T_i$。 ##3. C4.5算法 C4.5算法與ID3算法相似,C4.5算法對ID3算法進行了改進。C4.5在生成的過程中,用信息增益比來選擇特征,過程與上述類似。 ##4. CART算法 后面再添加 ##5. 決策樹的評價 假定樣本的總類別為K個,對於決策樹的某**葉結點**,假定該葉結點含有樣本數目為$n$,其中第$k$類的樣本數目為$n_k,k = 1,2,...,K$。 (1)若該結點中某類樣本$n_j = n$,而$n_1,...n_{j-1},n_{j+1},...n_{K} = 0$,則該結點的熵$H_p=0$,最小; (2)若該結點中各類樣本數目$n_1=n_2=...=n_k=n/K$,則該結點熵$H_u=\ln K$,最大。 對所有葉結點的熵求和,該值越小說明對樣本的分類越精確。各個葉結點包含的樣本數目不同,可以使用樣本數加權求熵和。因此,評價函數:$$C(T) = \sum_{t \in leaf }N_t \cdot H(t)\]

該評價函數值越小越好,所以,可以稱為“損失函數”。

6. 剪枝

決策樹對訓練屬於有很好的分類能力,但是對於未知的測試集未必有好的分類能力,泛化能力弱,即可能發生過擬合現象。為防止過擬合,我們需要進行剪枝。
三種決策樹的剪枝過程算法相同,區別是對於當前樹的評價標准不同。

剪枝分為預剪枝和后剪枝:

6.1 預剪枝:

(1)每一個結點所包含的最小樣本數目,例如10,則該結點總樣本數小於10時,則不再分;
(2)指定樹的高度或者深度,例如樹的最大深度為4;
(3)指定結點的熵小於某個值,不再划分。

6.2 后剪枝:

總體思路:由完全樹\(T_0\)開始,剪枝部分結點得到\(T_1\),再次剪枝部分結點得到\(T_2\)...直到剩下樹根的樹\(T_k\);在驗證數據集上對這\(k\)個樹分別評價,選擇損失函數最小的樹\(T_a\)

設樹\(T\)的葉結點個數為\(|T|\),t是樹T的葉結點,該葉結點有\(N_i\)個樣本點,其中k類的樣本點有\(N_{ik}個,k=1,2,...,K\)\(H_t(T)\)為葉結點\(t\)上的經驗熵,\(\alpha \geq 0\)為參數,則決策樹學習的損失函數可定義為:

\[C_{\alpha}(T) = \sum_{t=1}^{|T|}N_t \cdot H(T) + \alpha |T| \]

其中經驗熵為$$H_t(T) = \sum_{t=1}^{|T|}{\frac{N_{tk}}{N_t} \log {2} \frac{N{tk}}{N_t}}$$

這時有:$$C_{\alpha}(T) = C(T) + \alpha |T|$$
\(C(T)\)表示模型對訓練數據集的預測誤差,即模型與訓練數據集的擬合程度。\(|T|\)表示模型的復雜度,參數\(\alpha \geq 0\)控制兩者之間的影響。較大的\(\alpha\)促使選擇較簡單的模型(樹),較小的\(\alpha\)促使選擇較復雜的模型(樹),當\(\alpha = 0\)時意味着只考慮模型與訓練數據的擬合程度,不考慮模型復雜度。

假定當前對以\(r\)為根的子樹剪枝,剪枝后,只保留\(r\)本身而刪掉所有的子結點。
\(r\)為根的子樹:

  • 剪枝后的損失函數:\(C_\alpha(r) = C(r) + \alpha\)
  • 剪枝前的損失函數:\(C_\alpha(R) = C(R) + \alpha \cdot |R_{leaf}|\)\(C(R)\)應該是小於\(C(r)\)
  • 令二者相等,求得:\(\alpha = \frac{C(r) - C(R)}{R_{leaf} -1}\)\(\alpha\)稱為結點\(r\)的剪枝系數。

對於給定的決策樹\(T_0\)

  • 計算所有內部結點的剪枝系數
  • 查找最小剪枝系數的結點,剪枝得決策樹\(T_k\)
  • 重復以上步驟,直到決策樹\(T_k\)只有一個結點;
  • 得到決策樹序列\(T_0,T_1,T_2...T_k\);
  • 使用驗證樣本集選擇最優子樹。

注:上述如存在錯誤還望指正。


免責聲明!

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



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