1. 程式人生 > >秦剛剛的機器學習成長之路之決策樹總結

秦剛剛的機器學習成長之路之決策樹總結

決策樹之分類樹和迴歸樹

本文主要講解最常用的3種決策樹(ID、C4.5和CART),為了更加系統和全面的認識這3種常用的決策樹演算法,我將從以下4個部分進行講解:
1.決策樹學習演算法步驟有哪些?
2.常用的決策樹演算法有哪幾種?
3.決策樹剪枝
4.Gini指數與熵的關係

1.決策樹學習演算法步驟有哪些?

決策樹學習演算法通常包括以下3個步驟:

  • 特徵選擇
    選取對訓練資料具有分類能力的特徵。
    換句話說,特徵選擇是決定用哪個特徵來劃分特徵空間。
    特徵選擇的準則有資訊增益(ID3)、資訊增益比(C4.5)和基尼指數(CART中的分類樹)。
  • 樹的生成
    決策樹包括分類樹和迴歸樹。生成分類樹的方法有ID3,C4.5和CART分類樹,分別使用資訊增益,資訊增益比和基尼指數;生成迴歸樹的方法有CART迴歸樹,使用了最小二乘法(尋找最優切分變數與切分點)。
  • 樹的剪枝
    主要分為樹的剪枝演算法和CART剪枝演算法

2.常用的決策樹演算法介紹

決策樹演算法 特徵選擇準則
ID3 資訊增益
C4.5 資訊增益比
CART(迴歸樹) 最小二乘法
CART(分類樹) 基尼指數

下面將對以上決策樹演算法進行詳細講解

  • 1)ID3演算法
    ID3演算法的核心是在決策樹各個結點上應用資訊增益準則選擇特徵,遞迴地構建決策樹。具體方法

    為:從根結點開始,對結點計算所有可能的特徵的資訊增益,選擇資訊增益最大的特徵作為結點的特徵,由該特徵的不同取值建立子結點;再對子結點遞迴地呼叫以上方法,構建決策樹;直到所有特徵的資訊增益均很小或沒有特徵可以選擇為止。
    資訊增益計算的公式為:
    g ( D ,
    A ) = H ( D ) H ( D A ) g(D,A) = H(D)-H(D|A)

    H ( D ) = H(D)= 1 n C i D \sum_1^n\frac{|Ci|}{|D|} l o g 2 ( C i D ) log_2(\frac{|Ci|}{|D|}) ,k為類別數, C i |Ci| 表示屬於類i的樣本個數, D |D| 表示整個資料集的樣本個數。
    H ( D A ) = H(D|A)= 1 n D i D \sum_1^n\frac{|Di|}{|D|} H ( D i ) = H(Di)= 1 n D i D -\sum_1^n\frac{|Di|}{|D|} 1 k D i k D i \sum_1^k\frac{|Dik|}{|Di|} l o g 2 ( D i k D i ) log_2(\frac{|Dik|}{|Di|}) ,其中,n表示D被特徵A劃分的個數, D i k Dik 表示 D i Di 中屬於類k的樣本個數。

    資訊增益 g ( D , A ) g(D,A) 表示由於特徵A而使得對資料集D的分類的不確定性減少的程度。顯然,對於資料集D而言,資訊增益依賴於特徵,不同的特徵往往具有不同的資訊增益。資訊增益大的特徵具有更強的分類能力。

==ID3演算法==
輸入:訓練資料集D,特徵A,閾值ε
輸出:決策樹T
(1)若D中所有例項屬於同一類Ck,則T為單結點樹,並將類Ck作為該結點的類標記,返回T;
(2)若A=∅,則T為單結點樹,並將D中例項數最大的類Ck作為該結點的類標記,返回T;
(3)否則,按照資訊增益公式計算A中各特徵對D的資訊增益,選擇資訊增益最大的特徵Ag;
(4)如果Ag的資訊增益小於閾值ε,則置T為單結點樹,並將D中例項數最大的類Ck作為該結點的類標記,返回T;
(5)否則,對Ag中每一可能值ai,依Ag=ai將D分隔為若干非空子集Di,將Di中例項數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T;
(6)對第i個子結點,以Di為訓練集,以A-{Ag}為特徵集,遞迴地呼叫步(1)~(5),得到子樹Ti,返回Ti。
  • 2)C4.5演算法
    C4.5演算法在ID3演算法的基礎上進行了改進,具體表現為在生成樹的過程中使用了資訊增益比,改進了ID3使用資訊增益容易產生過擬合的缺點。
    特徵A對訓練資料集D的資訊增益比 g R ( D , A ) g_R(D,A) 定義為其資訊增益 g ( D , A ) g(D,A) 與訓練資料集D關於特徵A的值的熵 H A ( D ) H_A(D) 之比,即:
    g ( D , A ) = g ( D , A ) H A ( D ) g(D,A)=\frac{g(D,A)}{H_A(D)}
    其中, H A ( D ) = H_A(D)= 1 n D i D \sum_1^n\frac{|Di|}{|D|} l o g 2 D i D log_2\frac{|Di|}{|D|} ,n是特徵A取值的個數。
C4.5生成演算法
輸入:訓練資料集D,特徵集A,閾值ε
輸出:決策樹T
(1)若D中所有例項屬於同一類Ck,則T為單結點樹,並將類Ck作為該結點的類標記,返回T;
(2)若A=∅,則T為單結點樹,並將D中例項數最大的類Ck作為該結點的類標記,返回T;
(3)否則,按照資訊增益比公式計算A中各特徵對D的資訊增益比,選擇資訊增益比最大的特徵Ag;
(4)如果Ag的資訊增益比小於閾值ε,則置T為單結點樹,並將D中例項數最大的類Ck作為該結點的類標記,返回T;
(5)否則,對Ag中每一可能值ai,依Ag=ai將D分隔為若干非空子集Di,將Di中例項數最大的類作為標記,構建子結點,由結點及其子結點構成樹T,返回T;
(6)對第i個子結點,以Di為訓練集,以A-{Ag}為特徵集,遞迴地呼叫步(1)~(5),得到子樹Ti,返回Ti。
  • 3)CART演算法
    CART(Classification And Regression Tree ) 跟前面兩種決策樹演算法一樣,都是由特徵選擇、樹的生成及剪枝組成,既可以做分類也可以做迴歸。
  • CART迴歸樹
    假設 X X Y Y 分別為輸入和輸出變數,並且 Y Y 是連續變數,給的訓練資料集
    D = ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) D={(x_1,y_1),(x_2,y_2),...,(x_N,y_N)}
    考慮如何生成迴歸樹。
    一個迴歸樹對應著輸入空間的一個劃分以及在劃分的單元的輸出值。假設已將輸入空間劃分為 M M 個單元 R 1 , R 2 , . . . , R M R_1,R_2,...,R_M ,並且在每個單元 R m R_m