class-決策樹Decision Tree


顧名思義,決策樹model是樹形結構,在分類中,表示基於特征對實例進行分類的過程。可以認為是“if-else”的合集,也可以認為是特征空間,類空間上條件概率分布。主要優點是分類速度快,可讀性好。學習時(training)根據loss function最小化原則建立決策樹model,預測時對新數據利用決策樹進行分類。常包括三個步驟*:特征選擇,決策樹生成,決策樹剪枝。思想來源是1986年Quinlan提出的ID3算法,1993年C4.5算法,Breiman在1984年提出的CART算法
 
內容:



1 決策樹model與training

1.1 決策樹概念

定義:分類決策樹模型描述對實例進行分類的樹形結構。決策樹由結點(node)有向邊(directed edge)組成。有兩種結點:(internal) node,leaf node,內部結點表示一個特征和屬性,葉子結點表示一個類。
過程:用決策樹分類,從根節點開始,對實例的某一特征進行測試,根據測試結果,將實例分配到子結點,這時每一個子結點對應一個該特征的取值,如此遞推對實例進行測試並分配,直至到達葉子結點,最后將實例的類放到葉子結點中。

1.2 決策樹與if-then規則

決策樹由根結點到葉子結點的每一條路徑構建一條規則;路徑上內部結點的特征對應規則的條件,葉子結點對應規則的結論。if-then規則具備的特點是:互斥且完備。即每一個實例都被一條路徑或一條規則所覆蓋,而且只被一條路徑或一條規則所覆蓋(實例滿足的規則條件)。

1.3 決策樹與條件概率分布

可以表示為特定條件下類的條件概率分布,其定義在特征空間的一個划分(partition)上,將特征空間划分為互不相交的單元(cell)或區域(region),並在每個單元上定義一個類的概率分布就構成了條件概率分布。表示為P(Y|X),放入概率大的葉子結點上,即決策樹分類時將該結點的實例強行分到條件概率大的那一類去。
具體過程可以解釋為:對於某一不知類別的實例x,從根節點輸入,然后判斷x的第一維滿足的條件,當找到滿足條件的node單元后,在將第二維數據判斷下一個條件,然后再分node,直到分到最后一個維度的數據規則,然后下一結點為leaf node。

1.4 Training the decision tree

這里主要是文字的講解。
訓練目標:損失函數(通常是正則化的極大似然函數),學習的策略就是將目標函數最小化。訓練的model應該是與訓練數據矛盾較小,盡管基於特征空間划分的類的條件概率model有多個,應該選擇對訓練集有很好的擬合度,並且也能對未知數據有很好的預測。
學習算法:遞歸的選擇最優特征,根據特征對訓練數據進行分割,使得對各個子數據集有一個最好的分類過程——對應特征空間的划分和決策樹的構建。首先,構建根節點,將所有的訓練數據都放在根節點。然后,選擇最優的特征,基於此將訓練數據集分割,使得各個子集在當前條件下最好的分類。最后,如果這些子集被正確分類,那么構建葉子結點,將這些子集對應到葉子結點中去;若還有子集不能正確分類那么對這些子集選擇最優特征,繼續分割,構建相應的結點,直到所有訓練數據集被正確分類或者沒有合適的特征為止,最后每個子集都分到葉子結點上,就有了明確的類。——這就生成了decision tree。
————此算法對訓練集可能有很好的分類能力,但是不一定對未知數據很好,可能會發生過擬合。解決方法是:樹剪枝

2 特征選擇

2.1 概述

特征選擇在於選取對訓練數據具有分類能力的特征,這樣可以提高決策樹的學習(訓練)效率。通常特征選擇准則是信息增益或信息增益比。特征選擇實質是決定用哪個特征來划分特征空間。

2.2 信息增益(Information Gain)

熵(entropy)是表示隨機變量不確定性的度量。
定義:
假設X是離散隨機有限值變量概率分布為P(X=xi)=pi, i=1,2,…n;則隨機變量X的熵為:(定義0log0=0)以2為底的單位為比特bit,以e為底的自然對數單位為納特nat,只與X的分布有關,與X本身無關。熵越大,隨機變量不確定性越大即0<=H(p)<=logn
幾種經典熵分布區曲線

條件熵(conditional entropy)H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性,定義為X給定條件下Y的條件概率分布的熵對X數學期望。pi=P(X=xi)


條件熵等定義和理解
http://blog.csdn.net/jxlijunhao/article/details/17690463
http://ccckmit.wikidot.com/st:mutualinformation


信息增益:得知特征X的信息而使得類Y的信息不確定性減少的程度。對於特征A對訓練數據集D的信息增益為g(D,A),定義為D經驗熵H(D)與特征A在給定條件下D的經驗條件熵H(D|A)之差:g(D,A)=H(D)-H(D|A)
注:一般等號右邊叫做互信息(mutual information),因此信息增益等價於訓練集中類與特征的互信息。
選擇方法:對訓練集D計算其每個特征的信息增益,並比較他們的大小,選擇信息增益最大的特征。

輸入:訓練集D和特征A
輸出:特征A對訓練集D的信息增益g(D,A).

2.3 信息增益比

信息增益是相對於訓練集而言的,並無絕對意義。即在經驗熵大的時候就變大, 反之變小。故提出信息增益比,定義為信息增益與訓練集增益之比:

3 決策樹生成

3.1 ID3算法

此算法的核心是在決策樹各個結點上應用信息增益准則來選擇特征,遞歸的構建決策樹。具體流程是:從根結點(root node)開始,對結點計算所有可能的特征信息增益,選擇信息增益最大的特征作為結點的特征,並由該特征不同取值建立子結點,再對子結點調用以上方法,構建決策樹;直到所有特征的信息增益均很小,或者沒有特征可以選擇為止,最后得到一個決策樹。ID3相當於用極大似然法進行概率模型的選擇。

注:該算法產生的樹容易過擬合。

3.2 C4.5算法

與ID3算法類似,但使用信息增益比來選擇特征。只需將以上算法中的信息增益換成信息增益比即可。

4 決策樹剪枝decision tree pruning

利用決策樹生成算法遞歸的產生決策樹,直到不能產生為止。此樹對訓練集分類十分准確,但對未知數據的測試分類容易發生過擬合。原因是在訓練數據集學習的tree復雜度高,對訓練集精確但是泛化能力變差,因此,對樹進行修剪使其簡化,叫做剪枝(將從已知樹上剪去子樹或葉子結點,並將其 根結點或者父結點作為新的葉子結點,從而簡化分類樹模型。)。
決策樹剪枝常通過極小化決策樹的loss/cost function來實現。
決策樹學習的損失函數:其中樹為T,葉結點個數|T|,t是T的葉結點,葉結點有Nt個樣本點,其中k類樣本點為Ntk個,Ht(T)為葉結點t上的經驗熵,alpha為參數


簡化修改右端第一項:

此時:

說明:C(T)表示model對訓練集的預測誤差,即model與訓練數據的擬合程度。|T|表示model的復雜度,參數alpha控制二者之間的影響,較大的alpha促使選擇簡單的model,反之復雜model。alpha=0意味着只考慮 擬合程度不卡盤率復雜度。
剪枝就是alpha確定時,選擇較小的loss function。當alpha確定,子樹越大,與訓練集擬合越好,但是復雜度越高,反之,子樹越小,model的復雜度就越低,但是訓練集的擬合就越差,這時誤差函數就體現了二者的對抗和均衡。
另,損失函數的極小化等價於正則化的極大似然估計。
算法:

 


在算法不等式中,只考慮兩個樹的損失函數的差,其計算可在局部進行,所以決策樹剪枝算法可以由一種動態規划算法實現。

5 CART算法

CART(classification and regression tree)分類決策回歸樹,是廣泛的決策樹訓練(學習)算法——由特征選擇,樹生成,剪枝組成,既可以用於回歸,也可以用於分類。CART是給定輸入隨機變量X條件下輸出隨機變量Y的條件概率分布的方法。假設決策樹是二叉樹,內部結點特征值取值為“是”和“否”。左分支是“是”,右分支是“否”。二叉樹遞歸二分每個特征,將輸入空間化為有限個單元,並在這些單元確定預測的概率分布,也就是在輸入給定條件下輸出的條件概率分布。主要是兩步,生成盡可能大的樹,然后剪枝選擇最優子樹,用損失函數作為標准。

5.1 CART生成

遞歸構建二叉樹,對回歸樹用平方誤差最小化准則,對分類樹用基尼指數(Gini Index)最小化准則,進行特征選擇,生成二叉樹。

  1. 回歸樹的生成
    假設X,Y分別為輸入和輸出變量,且Y是連續變量,給定訓練集:D={(x1,y1),…,(xN,yN)};
    一個回歸樹對應輸入/特征空間的一個划分以及在划分單元上的輸出值。假設將輸入空間划分為M個單元R1,R2,RM,每個單元上固定值為cm,則回歸樹模型為
    當划分確定時,用平方誤差表示回歸樹對於訓練數據的預測誤差,用平方誤差最小的准則求解每個單元上最優輸出值。最優輸出值是Rm上所有輸入實例xi對應輸出yi的均值,即
    如何對空間進行划分——啟發式:選擇第j個變量x(j)和取值s,作為切分變量(splitting variable)和切分點(splitting point)。並定義兩個區域:
    尋找最優變量和最優切分點:
    對於固定的輸入變量j可以找到最優切分點:
    遍歷所有輸入變量找到最優切分變量和切分點(j,s)對,以此將輸入空間分為兩個區域,接着重復直到滿足停止條件為止。
    算法:

    說明:此樹為最小二乘回歸樹生成算法
  2. 分類樹的生成
    基尼指數定義:分類問題中,假設有K個類,樣本點屬於第k類的概率為pk,則概率分布的基尼指數為

    對於binary class問題:如果第一類的概率為p,則
    給定樣本集合D,
    集合D根據特征A是否取得某值a被分割成D1,D2兩部分,即
    在A條件下,集合D的基尼指數為(相當於加權平均):

    基尼指數表示集合D的不確定性,指數越大,樣本集合的不確定性就越大,這一點與熵(具體是熵之半)類似,都可以表示分類誤差概率。
    算法:


    算法的停止條件是結點中樣本個數小於預定閾值,或樣本基尼指數小於預定閾值,或沒有更多的特征。

5.2 CART剪枝

CART對決策樹底端剪去一些子樹使得model變得簡單能夠對未知數據很好的預測。有兩步:一是從決策樹T0底端開始不斷剪枝,直到T0的根節點,形成子樹序列{T0,T1,…,Tn};然后通過交叉驗證法在獨立的驗證數據集上對子樹序列進行測試,從而選擇最優子樹。

  1. 剪枝形成子樹序列
    計算子樹的損失函數;對於固定的alpha,一定唯一存在使得損失函數最小的子樹T'(最優)。alpha大的時候,最優子樹T‘偏小;alpha小的時候,最優子樹T’偏大,alpha=0整棵樹是最優的,alpha=infinit,根結點的單結點樹是最優的。
    可以使用遞歸的方法對樹進行剪枝,將alpha從小到大遞增,產生一系列小區間,對應最小損失函數的子樹T'序列{T0,T1,…}.
    具體:從整棵樹T0開始剪枝,對T0內部任意結點t,對t單結點樹的損失函數為:
    以t為根結點子樹Tt損失函數是
    當alpha充分小或者為0時,
    在alpha遞增過程中一定有一個這樣的alpha:;再繼續增大時不等式反向;
    因此,alpha值為:,Tt與t有相同的損失函數值,且t的結點數目更少,因此t更可取,對Tt進行剪枝。
    同時對T0內每一個內部結點t計算損失函數減少程度:

    在T0中剪去最小的Tt,將得到子樹T1,同時將最小的g(t)設為alpha1,T1為區間[alpha1,alpha2)的最優子樹。一直剪枝下去直到根結點,在這一過程中不斷增加alpha值產生新的區間。
  2. 在子樹序列T0,T1,…,Tn中通過交叉驗證選取最優的子樹Talpha
    利用獨立的驗證數據集測試子樹序列中各棵子樹的平方誤差或者基尼指數,其最小的決策樹被認為是最優的決策樹。每一棵子樹都對應一個參數alpha,最優子樹Tk確定,alphak也就確定了,即最優子樹Talpha。
    剪枝算法:
     

不好理解的地方可以閱讀博客或者搜索其他文章


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM