機器學習總結(八)決策樹ID3,C4.5演算法,CART演算法
本文主要總結決策樹中的ID3,C4.5和CART演算法,各種演算法的特點,並對比了各種演算法的不同點。
決策樹:是一種基本的分類和迴歸方法。在分類問題中,是基於特徵對例項進行分類。既可以認為是if-then規則的集合,也可以認為是定義在特徵空間和類空間上的條件概率分佈。
決策樹模型:決策樹由結點和有向邊組成。結點一般有兩種型別,一種是內部結點,一種是葉節點。內部結點一般表示一個特徵,而葉節點表示一個類。當用決策樹進行分類時,先從根節點開始,對例項的某一特徵進行測試,根據測試結果,將例項分配到子結點。而子結點這時就對應著該特徵的一個取值。如此遞迴對例項進行測試分配 ,直至達到葉結點,則該例項屬於該葉節點的類。
決策樹分類的主要演算法有ID3,C4.5。迴歸演算法為CART演算法,該演算法既可以分類也可以進行迴歸。
(一)特徵選擇與資訊增益準則
特徵選擇在於選取對訓練資料具有分類能力的 特徵,而且是分類能力越強越好,這樣子就可以提高決策 樹 的效率。如果利用一個特徵進行分類,分類的結果與隨機分類的結果沒有差異,那麼這個特徵是沒有分類能力的。那麼用什麼來判別一個特徵的分類能力呢?那就是資訊增益準則。
何為資訊增益?首先,介紹資訊理論中熵的概念。
熵度量了隨機變數的不確定性,越不確定的事物,它的熵就越大。具體的,隨機變數X的熵定義如下:
條件熵H(Y|X)表示在已知隨機變數X的條件下隨機變數Y的不確定性,隨機變數X給定的條件下隨機變數Y的條件熵為H(Y|X),定義為X給定條件下Y的條件概率分佈的熵對X的數學期望:
資訊增益表示在已知特徵X的情況下,而使得Y的資訊的不確定性減少的程度。資訊增益的定義 式如下:
g(D,A)表示特徵A對訓練集D的資訊增益,其為集合D的經驗熵H(D)與在特徵A給定條件下D的經驗條件熵H(D|A)之差。一般熵與條件熵之差,稱為互資訊。在決策樹中,資訊增益就等價於訓練資料集中的類與特徵的互資訊。
具體資訊增益的計算
(1)計算資料集D的經驗熵H(D)
(2)計算特徵A對資料集D的經驗條件熵H(D|A):
(3)計算資訊增益
(二)ID3演算法
ID3演算法以資訊增益作為選擇特徵的準則
輸入:訓練資料集D,特徵集A(可以從訓練集中提取出來),閥值ε(用來實現提前終止);
(1)若當前節點中所有例項屬於同一類Ck,則該結點作為葉子節點,並將類別Ck作為該結點的輸出類;
(2)若A為空,則將當前結點作為葉子節點,並將資料集中數量最多的類作為該結點輸出類;
(3)否則,計算所有特徵的資訊增益,若此時最大的資訊增益小於閥值ε,則將當前結點作為葉子節點,並將資料集中數量最多的類作為該結點輸出類;
(4)若當前的最大資訊增益大於閥值ε,則將最大資訊增益對應的特徵A作為最優劃分特徵對資料集進行劃分,根據特徵A的取值將資料集劃分為若干個子結點;
(5)對第i個結點,以Di為訓練集,以Ai為特徵集(之前用過的特徵從特徵集中去除),遞迴的呼叫前面的1- 4 步。
ID3演算法的缺點:
(1)ID3演算法會偏向於選擇類別較多的屬性(形成分支較多會導致資訊增益大)
(2)ID3演算法沒有考慮連續值,對與連續值的特徵無法進行劃分
(3) ID3演算法對於缺失值的情況沒有做考慮。
(4)ID3演算法只有樹的生成,容易產生過擬合。
(5)ID3演算法採用貪心演算法,每次劃分都是考慮區域性最優化,而區域性最優化並不是全域性最優化,通常需對其進行剪枝,而決策樹剪枝是對模型進行整體優化。
(三)C4.5演算法
C4.5演算法與ID3演算法相似,不過在生成樹的過程中,採用資訊增益比來作為選擇特徵的準則。
增益比:
其中為特徵熵,n為特徵取值的數目。
C4.5演算法的訓練過程與ID3相似,見ID3演算法。
C4.5其實是針對ID3演算法的不足改進後的演算法,採用資訊增益比,是為了解決ID3演算法會偏向於選擇類別多的屬性的問題。而對於ID3演算法不能對連續值進行劃分的問題 ,C4.5採用連續值特徵離散化的。此外,C4.5還從以下兩方面考慮了缺失值的問題:一是在樣本某些特徵缺失的情況下選擇劃分的屬性,二是選定了劃分屬性,對於在該屬性上缺失特徵的樣本的處理。對於ID3存在的過擬合問題,C4.5採用了引進正則化係數,對決策樹進行剪枝。
(四)CART演算法
CART樹既可以用於 分類 ,也可以用於迴歸。CART樹的生成過程同樣包括特徵選擇,樹的生成及剪枝。
與ID3,C4.5演算法不同的是,首先,CART進行特徵選擇時,迴歸樹用的平方誤差最小化的準則,而對於分類樹用基尼係數。對於平方誤差好理解。主要介紹下分類時用的基尼係數,基尼係數代表了模型的不純度,基尼係數越小,則不純度越低,特徵越好。這和資訊增益(比)是相反的。具體的,在分類問題中,假設有K個類別,第k個類別的概率為pk, 則基尼係數的表示式為:
如果是二類分類問題,計算就更加簡單了,如果屬於第一個樣本輸出的概率是p,則基尼係數的表示式為:
簡單明瞭的理解基尼係數那就是,從集合中隨機選取兩個樣本,兩個樣本的類別不一致的概率,所以這概率越低,說明劃分的集合的不純度就越低。
對於樣本D,如果根據特徵A的某個值a,把D分成D1和D2兩部分,則在特徵A的條件下,D的基尼係數表示式為:
基尼係數用於度量時,與熵之半,分類誤差率的關係。可見,基尼係數和熵之半的曲線非常接近,都可以近似的代表分類誤差率
此外,CART樹在生成過程中,生成的是二叉樹。即CART樹在生成過程中僅僅是對特徵的值進行二分,而不是多分。
CART分類樹建立的過程:
對於給定訓練資料集D,從根結點開始遞迴的建立二叉決策樹:
1)根據資料集D中每個特徵A,以及其可能的取值a,按照取值的‘是‘和‘否’將資料集分成兩部分,然後計算基尼係數 。
2)在所有可能的特徵A以及他們所有可能的切分點a中,選擇基尼指數最小的特徵及其對應的切分點作為最優特徵的與最優切分點。
依最優特徵和最優切分點,將現結點生成兩個子結點,將訓練資料集依特徵分配到兩個子結點中。
3)遞迴的呼叫1)2)步驟,直至達到停止條件
停止條件有:結點中的樣本數小於預定的閾值,或者樣本集的基尼係數小於預定的閾值(此時基尼係數已經非常小,樣本基本屬於同一 類),
或者結點樣本中沒有更多的特徵。
CART迴歸樹建立的過程:
首先說下分類樹和迴歸樹的區別吧,分類樹樣本輸出的值為離散的類別值(如二分類輸出的值為0和1),而回歸樹樣本輸出的是連續值。
在分類樹中,採用基尼係數 來對特徵進行劃分。而在CART迴歸樹用的平方誤差最小化準則,具體就是對於任意劃分特徵A,
對應的任意劃分點s兩邊劃分成的資料集D1和D2,求出使D1和D2各自集合的均方差最小,同時將D1和D2的均方差之和最小所對應的特徵和特徵值作為劃分點。
表示式如下:
其中,c1為D1資料集的樣本輸出均值,c2為D2資料集的樣本輸出均值
1)對於資料集D,通過平方誤差準則(上面式子),選擇最優的切分變數和切分點;
2)用選定的最優切分變數和切分點劃定兩個子區域區域,並輸出該區域資料集樣本的均值。
3)繼續對兩個子區域進行呼叫步驟1)和2),直至滿足停止條件
4)最後將樣本空間劃分成M個區域,即M個葉結點,以及M個與葉結點對應的輸出值。
CART樹的剪枝
CART樹的剪枝就是加入先驗的過程,其損失函式如下:
Cα(T)=C(T)+α|T|
其中T為任意子樹,C(T)為對訓練資料的預測誤差(如基尼係數),|T|為葉結點的個數,α>=0為引數,Cα(T)為整體損失。
正則化項的加入能夠起到剪枝的作用 ,從而降低了模型的複雜度。而α引數起到了平衡模型複雜度與訓練資料擬合度的 作用。
(五)總結
決策樹的缺點
1)決策樹演算法屬於貪心的演算法,在生成樹的過程中只考慮區域性最優形成,而不考慮整體最優,所以生成的樹容易產生過擬合,
(即對訓練集的分類很正確,但是對未知的資料分類卻沒那麼準確,泛化能力不強)。所以需要在決策樹生成後對其進行剪枝,
也就是說簡化模型的複雜度,一般通過加正則化項來進行剪枝。
2)決策樹對訓練資料的變化敏感,資料集變化,樹就會發生變化;該缺點可以通過整合樹來解決。譬如隨機森林,隨機森林的資料樣本擾動。
3)決策樹沒有考慮變數之間相關性,每次篩選都只考慮一個變數(因此不需要歸一化)
決策樹的優點:
1)簡單直觀,模型解釋性好
2)基本不需要預處理,不需要提前歸一化,處理缺失值
3)使用決策樹預測的代價是O(log2m)。 m為樣本數
4)既可以處理離散值也可以處理連續值
5) 對於異常點的容錯能力好,健壯性高
6)可以處理多維度輸出的分類問題