決策樹算法整理
決策樹(decision tree)是一種常見的分類和回歸算法,也是性能較好的提升樹算法(boosting tree)的基本分類器。
在分類問題中,決策樹模型是以樹的結構,基於特征來對樣本進行分類決策的,其內部結點表示一個特征,葉結點表示一個類別。它可以看作是if-then 規則的集合,也可以認為是定義在特征空間與類空間上的條件概率分布。
決策樹的損失函數為正則化的極大似然函數,學習策略是以損失函數為目標函數的最小化。其學習過程通常分為三個步驟:特征選擇、決策樹的生成和決策樹的修剪。
決策樹學習的算法通常是遞歸地選擇最優特征,不斷對數據集進行分割,構建決策樹。主要的算法有ID3、C4.5和CART算法。
本文從四個方面整理和決策樹模型有關的知識:
1、熵、信息增益和基尼指數
2、ID3算法和C4.5算法
3、決策樹剪枝
4、CART算法之回歸樹與分類樹
一、熵、信息增益和基尼指數
在決策樹模型中,信息增益、信息增益比和基尼指數是特征選擇的指標,分別用於ID3、C4.5和CART算法的特征選擇問題。下面從熵的概念開始,一步步理解這三個重要的概念。
1、熵與條件熵
(1)熵的概念:
熵(entropy)這個概念來自於信息論,是對隨機變量不確定性的度量。考慮一個取有限個值的離散隨機變量X,其概率分布為p(X=xi) =pi。首先怎麽度量看到X取某個具體值xi的信息呢?信息依賴於概率分布p(X),低概率事件有更高的信息量,於是信息定義為:h(X)=-logp(X)(一般以2為底)。那麽熵可以看做是隨機變量X的平均信息量:
熵只依賴於X的概率分布,而與X的取值無關,故X的熵也記作H(p)。熵越大,隨機變量的不確定性就越大,信息量也越大。特別的,當pi=0時,定義pi×logpi =0。
(2)條件熵的概念
設有隨機變量(X,Y),其聯合概率分布為:
那麽條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性,定義為在X給定的條件下,Y的條件概率分布的熵對X的數學期望:
在現實中,我們只能通過統計數據來估計熵和條件熵中的概率,進而得到熵和條件熵的估計值,相應的估計值稱為經驗熵和經驗條件熵。
2、信息增益
有了經驗熵和經驗條件熵的定義,那麽信息增益(information gain)就定義為二者之差,表示在訓練集中得知特征X的信息而使得類Y的不確定性減少的程度,也稱為特征與類之間的互信息。信息增益的定義為:特征A對訓練集D的信息增益g(D, A),是集合D的經驗熵H(D)和特征A給定條件下D的經驗條件熵H(D|A)之差,即
在特征A給定的條件下對數據集D進行分類時,信息增益表示由於特征A而使得對數據集D的分類的不確定性減少的程度。不同的特征往往具有不同的信息增益,而信息增益大的特征具有更強的分類能力。在實際運用時,逐一計算每個特征對數據集D的信息增益,然後選擇信息增益最大的特征進行分類。ID3算法便是根據信息增益準則來選擇特征的。
3、信息增益的計算方法
設訓練集為D,|D|表示其樣本容量。設有K個類Ck ,|Ck|為類Ck的樣本個數。設特征A有n個不同的取值ai ,將D劃分為n個子集Di ,|Di|為該子集的樣本個數。子集Di中屬於類 Ck 的樣本集合為 Dik ,|Dik|為Dik的樣本個數。那麽信息增益的計算方法為:
(1)計算數據集D的經驗熵H(D):
(2)計算特征A對數據集D的經驗條件熵H(D|A):
(3)計算信息增益:
g(D,A) = H(D) - H(D|A)
4、信息增益比
信息增益準則偏向取值較多的特征,當特征的取值較多時,該特征的信息增益往往比較大。極端的情況就是以編號作為特征,每個特征值都對應一個樣本,此時信息增益是最大的,但是不具備泛化能力。
因此使用信息增益比來校正這一問題,信息增益比 = 信息增益 * 懲罰參數,懲罰參數大時,特征的屬性值較少。C4.5算法就是根據信息增益比來選擇特征的。
以訓練數據集D的經驗熵H(D)的倒數作為懲罰參數,則信息增益比gR(D,A)為:
而信息增益比準則又傾向於取值較少的特征,因此C4.5並不是直接選擇信息增益比最大的特征,而是在候選特征中找出信息增益高於平均水平的特征,然後在這些特征中再選擇信息增益比最高的特征。
5、基尼指數
(1)基尼指數(Gini index)的定義:
基尼指數表示在樣本集合中一個隨機選中的樣本被分錯的概率,基尼指數越大,則表示集合中被選中的樣本被分錯的概率越大。基尼指數 = 樣本被選中的概率 × 樣本被分錯的概率。
在分類問題中,假設樣本集合D中有K個類,樣本點屬於第k類的概率為pk,則該概率分布的基尼指數就是:
特殊的,在二分類問題中,基尼指數為:Gini(p) = 2p(1-p)。
而給定樣本集合D,|Ck|為第k類樣本子集Ck的樣本數,樣本點屬於第k類的概率pk=(|Ck| / |D|),所以基尼指數為:
(2)CART中的基尼指數
CART是個二叉樹,也就是使用某個特征將樣本劃分為兩個集合:1. 等於給定的特征值的樣本集合D1 ; 2. 不等於給定的特征值的樣本集合D2。實際上是對擁有多個取值的特征的二值處理。
在CART算法中,樣本集合D根據特征A是否取某一可能的值a被分割為D1和D2兩個部分,即:
那麽在特征A的條件下,集合D的基尼指數定義為:
基尼指數Gini(D)表示集合D的不確定性,而基尼指數Gini(D,A)表示經過A=a分割後集合D的不確定性。基尼指數越大,樣本集合的不確定性越大。
因此運用基尼指數進行特征選擇時,選擇基尼指數最小的特征及其對應的切分點作為最優特征與最優切分點。
二、ID3算法和C4.5算法
1、ID3算法的核心是在決策樹各結點上應用信息增益準則選擇特征,遞歸地構建決策樹。
2、決策樹的ID3生成算法:
(1)從根節點開始,計算所有特征的信息增益,選擇信息增益最大的特征作為結點的特征,由該特征的不同屬性值建立子結點;
(2)對子節點遞歸地調用以上方法,構建決策樹;
(3)直到所有特征的信息增益非常小或者沒有特征可以選擇為止。
3、遞歸返回的條件:
(1)數據集中所有實例都屬於同一類了;
(2)當前的特征集為空集;
(3)特征的信息增益小於閾值。
4、由於ID3算法只有樹的生成,沒有樹的剪枝,所以容易產生過擬合。
5、C4.5算法的分類決策過程與ID3算法類似,不同在於用信息增益比來選擇特征。
三、決策樹的剪枝
1、為什麽要剪枝
決策樹的剪枝是指將生成的樹進行簡化的過程,把已生成的樹裁掉一些子樹或葉結點,並將其根結點或父節點作為新的葉結點。
對決策樹進行剪枝是為了解決過擬合問題。因為決策樹生成算法遞歸產生決策樹,在學習時過多考慮如何提高對訓練數據的正確分類,從而構建出了過於復雜的決策樹,因此要考慮決策樹的復雜度,對模型進行簡化。
2、怎樣剪枝
(1)決策樹的整體損失函數
決策樹的剪枝往往通過極小化決策樹整體的損失函數來實現。設樹T的葉結點個數為|T|,t是樹T的葉結點,該葉結點有Nt個樣本點,其中k類樣本點的個數為Ntk,Ht(T)是葉結點t上的經驗熵,α≥0是懲罰參數,則決策樹的整體損失函數為:
其中經驗熵Ht(T)為:
令損失函數中的第一項為C(T):
於是損失函數整理為:
C(T)表示模型與訓練數據的擬合程度,|T|表示模型的復雜度,參數α權衡二者的重要性。較大的α使得模型傾向於選擇簡單的樹,α=0意味著只考慮模型對訓練數據的擬合程度,不考慮模型復雜度。
可見決策樹生成學習的是局部模型,而決策樹剪枝學習的是整體模型。
(2)如何判斷是否需要剪枝
剪枝算法就是讓考慮了模型復雜度的損失函數極小化,等價於用正則化的極大似然估計進行模型選擇。
在剪枝操作中,設一組葉結點回縮到父結點之前與之後的整體樹分別為TB和TA,其對應的損失函數值分別為Cα(TB)和Cα(TA),如果Cα(TB) ≥ Cα(TA),則進行剪枝,將父結點變成新的葉結點。遞歸地進行操作,直至得到損失函數最小的子樹。
四、CART算法
CART(classification and regression tree)模型,叫做分類與回歸樹,既可以用於分類也可以用於回歸。它假設決策樹是二叉樹,每個內部結點特征的取值只取“是”和“否”,左分支取值為“是”,右分支取值為“否”。這樣的決策樹遞歸地二分每個特征,在給定輸入隨機變量X的條件下輸出隨機變量Y的條件概率分布。
CART算法也是由特征選擇、決策樹生成和決策樹剪枝三個步驟組成。
對回歸樹用平方誤差最小化準則,對分類樹用基尼指數最小化準則,進行特征選擇,生成二叉樹。
1、回歸樹的生成
假設X與Y分別為輸入和輸出變量,並且Y是連續變量,訓練數據集為D={(x1,y1), (x2,y2), ..., (xn,yn)}。已將輸入空間劃分為M個單元R1,R2,...,RM,並且在每個單元Rm上有一個固定的輸出值cm。
I(•)表示指示函數。則回歸樹模型表示為:
用平方誤差來表示回歸樹在單元Rm上對訓練數據的預測誤差,用平方誤差最小的準則來求解每個單元上的最優輸出,那麽由最小二乘法可知,單元Rm上的輸出的cm的最優值是Rm上所有輸入實例xi對應的輸出yi的均值,即:
。
於是具體步驟如下:
第一步:選擇第j個變量x(j)和它取的值s,作為切分變量和切分點,將輸入空間分為兩個區域:
第二步:求解下式得到最優切分變量j和最優切分點s:
第三步:用選定的最優對(j, s)劃分區域並決定輸出值:
第四步:對每個區域重復上述劃分過程,直到滿足停止條件。於是將輸入空間劃分為了M個區域R1, R2, ..., RM,生成決策樹:
2、分類樹的生成
分類樹用基尼指數選擇最優特征,同時決定該特征的最優二值切分點。
具體步驟如下:
第一步:樣本集合D根據每一個特征A,對其可能的取值a,根據A=a是否成立,被分割為D1和D2兩個部分,
然後計算在特征A條件下,集合D的基尼指數:
第二步:對所有可能的特征A及它們所有可能的切分點a,選擇基尼指數最小的特征及其切分點作為最優特征與最優切分點。依最優特征和最優切分點,從現結點生成兩個子結點,並分配訓練數據集。
第三步:對兩個子結點遞歸地調用第一步和第二步,直至滿足停止條件,生成決策樹。停止條件包括:特征集合為空,樣本集的基尼指數小於預定閾值,結點的樣本個數小於預定閾值。
CART的剪枝:略。
五、其他
在《機器學習之十一問支持向量機(SVM)》中,提到了支持向量機無法處理缺失值的問題,而決策樹可以。本來打算整理一下這個問題,結果發現真正要理解和說清楚,得手動計算缺失值的處理過程,篇幅太長。這個問題已經有博客整理得比較清楚了,就多看看博客嘍。
參考資料:
1、李航:《統計學習方法》
2、周誌華:《機器學習》
3、決策樹--信息增益,信息增益比,Geni指數的理解:https://www.cnblogs.com/muzixi/p/6566803.html
4、決策樹缺失值的處理:https://blog.csdn.net/u012328159/article/details/79413610決策樹算法整理