第五章-一起看決策樹如何做出決策?


在前面我們學習了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的基尼指數定義為

\[Gini(D, A) = \frac{|D_1|}{D}Gini(D_1) + \frac{D_2}{D}Gini(D_2) \]

決策樹模型

定義:分類決策樹模型是一種描述對實例進行分類的樹形結構。決策樹由節點和有向邊組成,結點有兩種類型:內部結點和葉結點。內部結點表示一個特征或屬性,葉結點表示一個類。用決策樹分類,從根結點開始,對實例的某一個特征進行測試,根據測試結果,將實例分配到其子結點;這時,每一個子結點對應着該特征的一個取值。如此遞歸下去,直至到達葉結點。最后將所有實例進行分類

決策樹模型示意圖:

損失函數和剪枝(Pruning)策略

在決策模型中,會存在一個很重要的步驟,那就是剪枝,剪枝能決定最后的決策樹的樣子。

當遇到一系列的連續值,這是該怎么辦?此時需要將連續值進行離散化,也即是需要選取連續值的分界點

  • 剪枝的原因:決策樹的過擬合風險過大時,每個葉子節點就分成了一個數據,結果不太如意。
  • 剪枝策略:預剪枝,后剪枝。
    • 預剪枝:邊建立決策樹邊進行剪枝的操作(更加實用),比如在選擇若干個特征進行先構造決策樹。限制深度,葉子節點個數、葉子樣本點數、信息增益量等;
    • 后剪枝:邊建立完決策樹后進行剪枝操作。通過一定的衡量標准,葉子節點越多,損失越大。

DT模型是以極小化決策樹的整體損失函數或代價函數,可定義如下:

\[C_\alpha(T) = C(T) + \alpha * |T_(leaf)| \]

  • 前半部分表示對訓練數據的擬合程度。
  • 后半部分表現模型復雜程度。
  • 用於對樹規模的懲罰程度,取值為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算法的核心是在決策樹各個節點上運用信息增益准則選擇特征,遞歸構建決策樹

算法描述:

\[輸入:訓練數據集D,特征集A,閾值\varepsilon;\\ 輸出:決策樹T.\\ (1) 若D中所有實例屬於同一個類C_K,則T為單節點樹,並將C_K作為該節點的類標記,返回T;\\ (2) 若A=\phi,則T為單節點樹,並將D中實例數最大的類C_K作為該節點的類標記,返回T.\\ (3) 否則,計算A中特征對D的信息增益,選擇信息增益最大的特征A_g;\\ (4) 如果A_g的信息增益小於閾值\varepsilon,則置T為單節點樹,並將D中實例中最大的類作為該節點的類標記,返回T;\\ (5) 否則,對A_g每一個可能值a_i,依A_g=a_i將D分割為若干個非空子集D_i,將D_i中實例數最大的類為該節點的標記,\\構建子節點,由結點以及子節點構成樹T,返回T;\\ (6) 對第i個子節點,以D_i為訓練集,以A-\{A_g\}為特征集,遞歸地調用(1)~(5),得到子樹T_i,返回T。 \]

C4.5算法

C4.5算法和ID3算法相似,並對ID3算法做了改進。其核心是采用信息增益比來選取特征。

\[輸入:訓練數據集D,特征集A,閾值\varepsilon;\\ 輸出:決策樹T.\\ (1) 若D中所有實例屬於同一個類C_K,則T為單節點樹,並將C_K作為該節點的類標記,返回T;\\ (2) 若A=\phi,則T為單節點樹,並將D中實例數最大的類C_K作為該節點的類標記,返回T.\\ (3) 否則,計算A中特征對D的信息增益比,選擇信息增益比最大的特征A_g;\\ (4) 如果A_g的信息增益小於閾值\varepsilon,則置T為單節點樹,並將D中實例中最大的類作為該節點的類標記,返回T;\\ (5) 否則,對A_g每一個可能值a_i,依A_g=a_i將D分割為若干個非空子集D_i,將D_i中實例數最大的類為該節點的標記,\\構建子節點,由結點以及子節點構成樹T,返回T;\\ (6) 對第i個子節點,以D_i為訓練集,以A-\{A_g\}為特征集,遞歸地調用(1)~(5),得到子樹T_i,返回T。 \]

CART算法

CART算法包含兩步:決策樹生成和決策樹剪枝

CART生成

決策樹生成就是遞歸構建二叉決策樹的過程。對回歸樹使用平方誤差最小化准則,對分類書用基尼指數(GINI INDEX)組笑話准則,進行特征選擇,生成二叉樹。

  1. 回歸樹的生成

    通常使用最小二乘回歸樹生成算法進行生成回歸樹。

    \[輸入:訓練數據集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) \]

  2. 分類樹的生成

    分類樹用基尼指數選擇最優特征,同時決定該特征的最優二值切分點。

    CART生成算法描述:

    \[輸入:訓練數據集D,停止計算的條件;\\ 輸出:CART決策樹.\\ 根據訓練數據集,從根結點開始,遞歸地對每一個結點進行如下操作,構建決策樹:\\ (1)設結點地訓練集為D,計算現有特征對該數據集的基尼指數。此時,對每一個特征A,對可能取得每一個值a,\\ 根據樣本點對A=a得測試為"是"或"否"將D分割成D_1和D_2,計算A=a得基尼指數。\\ (2)在所有可能得特征A和可能得切分點a中,選擇最小的基尼指數得特征以及對應的切分點。\\ 由此,從現結點生成兩個子結點,將訓練集依特征分配到兩個子結點中去。\\ (3)對兩個子節點遞歸調用(1),(2),直至滿足條件;\\ (4) 生成CART決策樹。 \]


免責聲明!

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



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