決策樹是一種基本的分類與回歸方法。分類決策樹是一種描述對實例進行分類的樹形結構,決策樹由結點和有向邊組成。結點由兩種類型,內部結點表示一個特征或屬性,葉結點表示一個類。
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)\),即:
熵越大,隨機變量的不確定性就越大,\(0\leq H(p) \leq \log{n}\)。
1.1 條件熵
設有隨機變量\((X,Y)\),其聯合概率分布為:
條件熵表示\(H(Y|X)\)在已知隨機變量\(X\)的條件下隨機變量\(Y\)的不確定性,定義為:
這里,\(p_i=P(X=x_i), i = 1,2,...,n\)。當熵和條件熵中的概率由數據估計(極大似然估計)得到時,所對應的熵分別為經驗熵和經驗條件熵。
1.2 信息增益
信息增益表示得知特征\(A\)的信息而使得類\(Y\)的信息的不確定性減少的程度。特征\(A\)對訓練數據集\(D\)的信息增益\(g(D,A)\),定義為集合\(D\)的經驗熵與特征\(A\)給定條件下\(D\)的經驗條件熵之差,即:
(2)特征\(A\)對數據集\(D\)的經驗條件熵\(H(D|A)\)
(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)\)之比,即:
該評價函數值越小越好,所以,可以稱為“損失函數”。
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\)為參數,則決策樹學習的損失函數可定義為:
其中經驗熵為$$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\);
- 使用驗證樣本集選擇最優子樹。
