本文主要總結決策樹中的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)可以處理多維度輸出的分類問題