1. 程式人生 > >決策樹(decision tree)

決策樹(decision tree)

方法 生成算法 ogr np完全 信息熵 cti 標記 ges 樹形

決策樹是一種基本的分類和回歸方法。本章主要討論用於分類的決策樹,決策樹模型呈樹形結構,在分類問題中,表示基於特征對實例進行分類的過程,它可以認為是if-then規則的集合,也可以認為是定義在特征空間與類空間上的條件概率分布。其主要優點是模型具有可讀性,分類速度快。學習時,利用訓練數據,根據損失函數最小化的原則建立決策樹模型。預測時,對新的數據,利用決策樹模型進行分類。

決策樹學習通常包括3個步驟:特征選擇、決策樹的生成和決策樹的修剪。這些決策樹學習的思想主要源於ID3算法和C4.5算法以及CART算法。

決策樹模型

定義:分類決策樹模型是一種描述對實例進行分類的樹形結構,決策樹由結點(node)和有向邊(directed edge)組成,結點有兩種類型:內部結點(internal node)和葉節點(leaf node)。內部結點表示一個特征或屬性,葉結點表示一個類。

用決策樹分類,從根結點開始,對實例的某一特征進行測試,根據測試結果,將實例分配到其子結點;這時,每一個子結點對應著該特征的一個取值。如此遞歸地對實例進行測試並分配,直至達到葉結點。最後將實例分到葉結點的類中。

技術分享圖片

決策樹與if-then規則

可以將決策樹看成一個if-then規則的集合。將決策樹轉換成if-then規則的過程是這樣的:

1.由決策樹的根結點到葉結點的每一條路徑構建一條規則;

2.路徑上內部結點的特征對應著規則的條件,而葉結點的類對應著規則的結論。

決策樹的路徑或其對應的if-then規則集合具有一個重要的性質:互斥並且完備。這就是說,每一個實例都被一條路徑或一條規則所覆蓋,而且只被一條路徑或一條規則所覆蓋。這裏所謂覆蓋是指實例的特征與路徑上的特征一致或實例滿足規則的條件。

決策樹與條件概率分布

決策樹還表示給定特征條件下類的條件概率分布。這一條件概率分布定義在特征空間的一個劃分上。將特征空間劃分為互不相交的單元或區域,並在每個單元定義一個類的概率分布就構成了一個條件概率分布。決策樹的一條路徑對應於劃分中的一個單元。決策樹所表示的條件概率分布由各個單元給定條件下類的條件概率分布組成。假設X為表示特征的隨機變量,Y為表示類的隨機變量,那麽這個條件概率分布可以表示為P(Y|X)。X取值於給定劃分下單元的集合,Y取值於類的集合。各葉結點(單元)上的條件概率往往偏向某一個類,即屬於某一類的概率較大。決策樹分類時將該結點的實例強行分到條件概率大的那一類去。

下圖表示了特種空間的一個劃分。大正方形表示特征空間。這個大正方形被若幹個小矩形分割,每個小矩形表示一個單元。特征空間劃分上的單元構成了一個集合,X取值為單元的集合。假設只有兩類正類負類,Y=+1 -1;小矩形數字表示單元的類。第二個圖表示給定條件下類的條件概率分布。P(Y=+1|X=c)>0.5時屬於正類,實際上對應的就是矩形框的面積。

技術分享圖片

決策樹學習

假設給定訓練數據集D={(x1,y1),(x2,y2),……..(xN,yN)}

其中xi=(xi(1) ,xi(2),…….,xi(n))T為輸入實例(特征向量),n為特征個數,yi∈{1,2,…..K}為類標記,i=1,2,3,……,N,N為樣本容量。學習目標是根據給定的訓練數據集構建一個決策模型,使它能夠對實例進行正確的分類。

決策樹學習本質上是從訓練數據集中歸納出一組分類規則。與訓練數據集不相矛盾的決策樹(即能對訓練數據進行正確分類的決策樹)可能多個,也可能一個也沒有。我們需要的是一個與訓練數據矛盾較小的決策樹,同時具有很好的泛化能力。從另一個角度看,決策樹學習是由訓練數據集估計條件概率模型。基於特征空間劃分的類的條件概率模型有無窮多個。我們選擇的條件概率模型應該不僅對訓練數據有很好地擬合,而且對未知數據有很好地預測。

決策樹學習用損失函數表示這一目標,如下所述,決策樹學習的損失函數通常是正則化的極大似然函數。決策樹學習的策略是以損失函數為目標函數的最小化。

當損失函數確定以後,學習問題就變為在損失函數意義下選擇最優決策樹的問題。因為從所有可能的決策樹中選取最優決策樹是NP完全問題,所以現實中決策樹學習算法通常采用啟發式方法,近似求解這一最優化問題。這樣得到的決策樹是次最優的。

決策樹學習的算法通常是一個遞歸地選擇最優特征,並根據該特征對訓練數據進行分割,使得對各個子數據集有一個最好的分類的過程。這一過程對應著對特征空間的劃分,也對應著決策樹的構建。

開始,構建根結點,將所有訓練數據集都放在根結點。選擇一個最優特征,按照這一特征將訓練數據集分割成子集,使得各個子集有一個在當前條件下最好的分類。如果這些子集已經能夠被基本正確分類,那麽構建葉結點,並將這些子集分到所對應的葉結點中去;如果還有子集不能被基本正確分類,那麽就對這些子集選擇新的最優特征,繼續對其進行分割,構建相應的結點,如此遞歸地進行下去,直至所有訓練數據子集被基本正確分類,或者沒有合適地特征為止。最後每個子集都被分到葉結點上,即都有了明確的分類,這就生成了一棵決策樹。

以上方法生成的決策樹可能對訓練數據有很好的分類能力,但對未知的測試數據卻未必有很好的分類能力,即可能發生過擬合現象。我們需要對已生成的樹自下而上進行剪枝,將樹變得更簡單,從而使其具有更好的泛化能力。具體地,就是去掉過於細分的葉結點,使其回退到父結點,甚至更高的結點,然後將父結點或更高的結點改為新的葉結點。

決策樹的工作過程一般可以分為三步:
1、特征選擇
2、決策樹生成
3、剪枝

1.特征選擇

特征選擇在於選取對訓練數據具有分類能力的特征。這樣可以提高決策樹學習的效率。如果利用一個特征進行分類的結果與隨機分類的結果沒有很大差別,則稱這個特征沒有分類能力。通常特征選擇的準則是信息增益或信息增益比。

在信息論與概率統計中,熵表示隨機變量不確定性的度量。設X是一個取有限個值得離散隨機變量,其概率分布為:

技術分享圖片 則隨機變量X的熵定義為:

技術分享圖片 條件熵 H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性:技術分享圖片條件熵 經驗熵和經驗條件熵:當熵和條件熵中的概率由數據估計(特別是極大似然估計)得到時,所對應的熵與條件熵分別稱為經驗熵和條件經驗熵。

信息增益 信息增益表示得知特征X的信息而使得類Y的信息的不確定性減少的程度。特征A對訓練數據集D的信息增益g(D,A),定義為集合D的經驗熵H(D)與特征A給定條件下D的經驗條件熵H(D|A)之差,即:

技術分享圖片

信息增益 一般地,熵H(Y)與條件熵H(Y|X)之差稱為互信息。決策樹學習中的信息增益等價於訓練數據集中類與特征的互信息。 於是我們可以應用信息增益準則來選擇特征,信息增益表示由於特征A而使得對數據集D的分類的不確定性減少的程度。對數據集D而言,信息增益依賴於特征,不同的特征往往具有不同的信息增益。信息增益大的特征具有更強的分類能力。

信息增益算法 設訓練數據集為D,|D|表示其樣本容量,即樣本個數。設有K 個類Ck,k=1,2,???,K,|Ck|為屬於類Ck的樣本個數,∑Kk=1|Ck|=|D|。設特征A有n個不同的取值a1,a2,???,an,根據特征A的取值將D劃分為n個子集D1,D2,???,Dn為Di的樣本個數,∑ni=1|Di|=|D|。記子集Di中屬於類Ck的樣本的集合為Dik。 具體信息如下:
技術分享圖片

信息增益的計算

信息增益比 以信息增益作為劃分訓練數據集的特征,存在偏向於選擇取值較多的特征的問題。使用信息增益比可以對這一問題進行校正。 信息增益比表示特征A對訓練數據集D的信息增益比。gR(D,A)定義為其信息增益g(D,A)與訓練數據集D關於特征A的值的熵HA(D)之比,即:技術分享圖片

信息增益比

基尼系數
分類問題中,假設有K個類,樣本點屬於第k類的概率為pk,則概率分布的基尼系數定義為:
技術分享圖片

基尼系數

若樣本集合D根據特征A是否取某一可能值a被分割成D1和D2 兩部分,即:
技術分享圖片

對A的劃分 則在特征A的條件下,集合D的基尼指數定義為:
技術分享圖片

基尼系數

基尼系數Gini(D)表示集合D的不確定性,表示經A=a分割後集合D的不確定性。基尼系數越大,樣本集合的不確定性越大,與熵類似。
從下圖可以看出基尼指數和熵之半的曲線很接近,都可以近似地代表分類誤差率。

技術分享圖片

2.決策樹生成


ID3算法ID3算法的核心是在決策樹各個結點上應用信息增益準則選擇特征,遞歸地構建決策樹,具體方法是:從根結點(root node)開始,對結點計算所有可能的特征的信息增益,選擇信息增益最大的特征作為結點的特征,由該特征的不同取值建立子結點;再對子結點遞歸地調用以上方法,構建決策樹;直到所有特征地信息增益均很小或沒有特征可以選擇為止。最後得到一個決策樹。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

算法缺陷

ID3算法可用於劃分標準稱型數據,但存在一些問題:

  • 沒有剪枝過程,為了去除過渡數據匹配的問題,可通過裁剪合並相鄰的無法產生大量信息增益的葉子節點;
  • 信息增益的方法偏向選擇具有大量值的屬性,也就是說某個屬性特征索取的不同值越多,那麽越有可能作為分裂屬性,這樣是不合理的;
  • 只可以處理離散分布的數據特征
  • 總結基本思想:
    • 初始化屬性集合和數據集合
    • 計算數據集合信息熵S和所有屬性的信息熵,選擇信息增益最大的屬性作為當前決策節點
    • 更新數據集合和屬性集合(刪除掉上一步中使用的屬性,並按照屬性值來劃分不同分支的數據集合)
    • 依次對每種取值情況下的子集重復第二步
    • 若子集只包含單一屬性,則為分支為葉子節點,根據其屬性值標記。
    • 完成所有屬性集合的劃分

    註意:該算法使用了貪婪搜索,從不回溯重新考慮之前的選擇情況。

    C4.5算法

    C4.5算法與ID3算法相似,C4.5算法對ID3算法進行了改進。C4.5在生成的過程中,用信息增益比來選擇特征

    具體算法:

    輸入:訓練數據集D,特征集A,閾值ε;

    輸出:決策樹。

    (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
    
    

    決策樹的剪枝

    為什麽要進行剪枝呢?因為我們遞歸產生的決策樹往往可以對訓練數據分類很準確,但對於未知的測試數據的分類卻沒有那麽準確,即出現過擬合現象。過擬合的原因在於學習時過多地考慮如何提高對訓練數據地正確分類,從而構建出過於復雜的決策樹。解決這個問題的辦法是考慮決策樹的復雜度,對已生成的決策樹進行簡化。在決策樹中對已生成的決策樹進行簡化的過程叫剪枝。

    具體地,剪枝從已生成的樹上裁掉一些子樹或葉結點,並將其根結點或父結點作為新的葉結點,從而簡化分類樹模型。

    決策樹的剪枝往往通過極小化決策樹整體的損失函數(loss function)或代價函數。對loss function 進行正則化處理。設樹T的葉結點個數為|T|,t是樹T的葉結點,該葉結點有Nt個樣本點,其中k類的樣本點有Ntk個,k=1,2,….K,Ht(T)為葉結點t上的經驗熵,α≥0為參數,則決策樹學習的損失函數可以定義為

    Cα=Σi=1|T|NtHt(T)+α|T|

    其中經驗熵為

    Ht(T)=-ΣkNtk/NtlogNtk/Nt

    我們可以記Cα(T)=C(T) +α|T|

    C(T)表示模型對訓練數據的預測誤差,即模型與訓練數據的擬合程度,|T|表示模型復雜度,參數α≥0控制兩者之間的影響。

    樹的剪切算法

    輸入:生成算法產生的整個樹T,參數α;

    輸出:修剪後的子樹Tα

    (1)計算每個結點的經驗熵

    (2)遞歸地從樹地葉結點向上回縮

    設一組葉結點回縮到其父結點之前與之後地整體樹分別為TB與TA,其對應的損失函數值分別是Cα(TB)與Cα(TA),如果Cα(TA)≤Cα(TB)則進行剪枝,即將父結點變為新的葉結點。

    (3)返回(2),直至不能繼續為止,得到損失函數最小的子樹Tα。

    註意,式Cα(TA)≤Cα(TB)只需考慮兩個樹的損失函數的差,其計算可以在局部進行,所以,決策樹的剪枝算法可以由一種動態規劃的算法實現。



    參考文獻:

    1.http://blog.csdn.net/tuobadon/article/details/47382271

    2.統計學習方法

決策樹(decision tree)