在前面我們學習了KNN是一種基本的分類和回歸方法。今天我們繼續來學習另一個也能進行分類和回歸的方法——決策樹(Decision Tree)。那么對此,決策樹到底是如何做出決策的呢?請接下來往下看——
思維導圖(內容概覽)
衡量標准
對於一個統計學習方法,我們需要從模型+決策+算法逐步入手。但是在認識模型之前,特征的選取又是顯得特別重要,在決策樹法中,存在一些比較重要的概念,即選取特征的標准。
-
評估離散程度常用的有方差、熵、基尼指數
- 方差:適用於連續隨機變量,數值有實際意義。
- 熵:適用於離散隨機變量,數值沒有實際意義。
- 基尼指數:適用於離散隨機變量,數值沒有實際意義。
-
熵:用於表示隨機變量的不確定(混亂)程度,記作
\[H(X) = -\sum_{i=1}^n p_i \log p_i \] -
條件熵:在一直隨機變量X的條件下,隨機變量Y的不確定性(混亂程度)記作
\[H(Y|X) = \sum_{i=1}^np_iH(Y|X=x_i) \] -
信息增益:在得知特征X的信息而使得類Y的信息的不確定性減少程度,記作
\[g(D, A) = H(D) - H(D|A) \] -
信息增益比:
-
信息增益的缺陷:偏向於選擇取值較多的特征。
-
概念:對於A特征的信息增益比,就是信息增益與訓練數據集關於特征A的熵之比,記作
\[g_r(D, A) = \frac{g(D, A)}{H_A(D)} \]
-
-
基尼指數(K為類別數量,Pk為屬於k類的概率)定義為:
\[Gini(p) = \sum_{k=1}^Kp_k(1-p_k) = 1 - \sum_{k=1}^Kp^2_k \] -
在特征A的條件下,集合D的基尼指數定義為
決策樹模型
定義:分類決策樹模型是一種描述對實例進行分類的樹形結構。決策樹由節點和有向邊組成,結點有兩種類型:內部結點和葉結點。內部結點表示一個特征或屬性,葉結點表示一個類。用決策樹分類,從根結點開始,對實例的某一個特征進行測試,根據測試結果,將實例分配到其子結點;這時,每一個子結點對應着該特征的一個取值。如此遞歸下去,直至到達葉結點。最后將所有實例進行分類。
決策樹模型示意圖:
損失函數和剪枝(Pruning)策略
在決策模型中,會存在一個很重要的步驟,那就是剪枝,剪枝能決定最后的決策樹的樣子。
當遇到一系列的連續值,這是該怎么辦?此時需要將連續值進行離散化,也即是需要選取連續值的分界點。
- 剪枝的原因:決策樹的過擬合風險過大時,每個葉子節點就分成了一個數據,結果不太如意。
- 剪枝策略:預剪枝,后剪枝。
-
- 預剪枝:邊建立決策樹邊進行剪枝的操作(更加實用),比如在選擇若干個特征進行先構造決策樹。限制深度,葉子節點個數、葉子樣本點數、信息增益量等;
- 后剪枝:邊建立完決策樹后進行剪枝操作。通過一定的衡量標准,葉子節點越多,損失越大。
DT模型是以極小化決策樹的整體損失函數或代價函數,可定義如下:
- 前半部分表示對訓練數據的擬合程度。
- 后半部分表現模型復雜程度。
- 用於對樹規模的懲罰程度,取值為0是表示只考慮模型與訓練數據的擬合程度,不考慮模型復雜度,取值正無窮時則剛好相反。
決策樹的生成算法
-
如何切分特征
-
- 根節點的選擇應該用哪一個特征?該如何切分?
- 根節點的目標是通過一種衡量標准,來計算通過不同特征進行分支選擇后的分類的情況,找出最好的那個作為根節點,以此類推。
-
類別:每一種算法不同,衡量標准也不相同。
-
-
**ID3算法:信息增益 **
-
C4.5:信息增益率(解決了ID3的問題,考慮自身的熵)
-
CART:使用GINI系數作為衡量標准
-
GINI系數:
\[G_{ini}(p) = \sum_{k=1}^k{p_k(1-p_k)} = 1-\sum_{k=1}^Kp_k^2 \]
-
ID3算法
ID3算法的核心是在決策樹各個節點上運用信息增益准則選擇特征,遞歸構建決策樹。
算法描述:
C4.5算法
C4.5算法和ID3算法相似,並對ID3算法做了改進。其核心是采用信息增益比來選取特征。
CART算法
CART算法包含兩步:決策樹生成和決策樹剪枝。
CART生成
決策樹生成就是遞歸構建二叉決策樹的過程。對回歸樹使用平方誤差最小化准則,對分類書用基尼指數(GINI INDEX)組笑話准則,進行特征選擇,生成二叉樹。
-
回歸樹的生成
通常使用最小二乘回歸樹生成算法進行生成回歸樹。
\[輸入:訓練數據集D;\\ 輸出:回歸樹f(x).\\ 在訓練集所在的輸入空間中,遞歸地將每個區域划分為兩個子區域並決定每個子區域上的輸出值,構建決策樹:\\ (1) 選擇最優的切分變量j與切分點s,求解 \\ min_{j,s}[min_{c_j}\sum_{x_j\in R_1(j,s)}(y_i-c_i)^2+min_{c_j}\sum_{x_j\in R_2(j,s)}(y_i-c_i)^2],遍歷j,對j的切分點s,選擇最小的(j,s);\\ (2) 用選定的對(j,s)划分區域並決定相應的輸出值:\\ R_1(j,s)=\{x|s(j) \leq s\},R_2(j,s)=\{x|s(j) > s\} \hat{c_m}=\frac{1}{N_m}\sum{y_i},x\in R_m,m=1,2 \\ (3) 繼續對兩個子區域調用步驟(1),(2),直至滿足條件;\\ (4)將輸入空間划分成M個區域R_1,R_2,R_3...R_M,生成決策樹。\\ f(x)=\sum^M_{m=1}\hat{c_m}I(x\in R_m) \] -
分類樹的生成
分類樹用基尼指數選擇最優特征,同時決定該特征的最優二值切分點。
CART生成算法描述:
\[輸入:訓練數據集D,停止計算的條件;\\ 輸出:CART決策樹.\\ 根據訓練數據集,從根結點開始,遞歸地對每一個結點進行如下操作,構建決策樹:\\ (1)設結點地訓練集為D,計算現有特征對該數據集的基尼指數。此時,對每一個特征A,對可能取得每一個值a,\\ 根據樣本點對A=a得測試為"是"或"否"將D分割成D_1和D_2,計算A=a得基尼指數。\\ (2)在所有可能得特征A和可能得切分點a中,選擇最小的基尼指數得特征以及對應的切分點。\\ 由此,從現結點生成兩個子結點,將訓練集依特征分配到兩個子結點中去。\\ (3)對兩個子節點遞歸調用(1),(2),直至滿足條件;\\ (4) 生成CART決策樹。 \]