決策樹學習筆記(Decision Tree)


 什么是決策樹?

  決策樹是一種基本的分類與回歸方法。其主要有點事模型具有可得性,分類速度快。學習時,利用訓練數據,根據損失函數最小化原則建立決策樹模型;預測時,對新數據,利用決策樹模型進行分類。

 決策樹學習通常包含以下三個步驟:

  •   選擇特征
  •   決策樹生成
  •   剪枝

 決策樹的改進路線:

  ID3--->C4.5--->CART

  (1)其中ID3是基於信息增益來選擇划分屬性

  (2)C4.5不直接使用增益率來選擇划分屬性,而是使用了一個啟發式:先從候選划分屬性中選取信息增益高於平局水平的屬性,再從中選擇增益率最高的。

  (3)CART(Classification and Regression Tree)算法使用基尼系數來代替信息增益比。

 信息

  這個是熵和信息增益的基礎概念,是對一個抽象事物的命名,無論用不用‘信息’來命名這種抽象事物,或者用其他名稱來命名這種抽象事物,這種抽象事物是客觀存在的。如果帶分類的事物集合可以划分為多個類別當中,則某個類(xi)的信息(量)定義如下:

         

  I(x)用來表示隨機變量的信息,p(xi)指是當xi發生時的概率。當事件xi發生的概率p(xi)很小,但是它卻發生了,那這個信息量相當大,比如買彩票中獎了,那么這個信息量肯定是很大的。相反,對於大概率事件,人們習以為常,那么這個事件的信息量就很小。這就體現在上述公式中。

 信息熵

  “信息熵”是度量樣本純度最常用的一種指標。所謂樣本純度,相反而言之就是凌亂程度。如一個數據集U中的樣本都屬於同一類,那么這時樣本純度最高而凌亂程度最低。信息熵定義為:

   

  其中D表示樣本集合,|y|樣本中類別的數目, pk表示第k種分類占集合的比例。Ent(D)的值越小,D的純度越高。

 

 信息增益

  信息增益 指的是,使用某一個屬性a進行划分后,所帶來的純度提高的大小。一般而言,信息增益越大,意味着使用屬性a來進行划分所獲得的“純度提升”越大。信息增益定義如下:  

    

  即

  信息增益 = 根節點的信息熵 - 所有分支節點的信息熵的加權和

  其中,權值為划分后屬性a=ak節點中樣本的數量與划分前節點中的樣本數量的比值,即概率。概率確保了權重的和為1.

        

      上圖描述的是,使用屬性a對樣本集合D進行划分,因為a有V個取值,因此決策樹會有V個分支。划分后每一個節點中樣本的數量為屬性a=ak的樣本的數量。

 

    問:如何理解:信息增益越大,意味着使用屬性a來進行划分所獲得的“純度提升”越大?

    答:因為Ent(D)的值越小,D的純度越高。而划分后,所有的分支節點的Ent(Dk)的和就是划分后的信息熵,公式體現了前后的差距,如果差距越大,那么就說明划分后所有的分支節點的信息熵越小,純度提升越大。

 

  增益率

  背景:當樣本集中的某一屬性取值使得所有樣本被分到不同類別,此時分支的純度達到最高,無需再繼續划分。然而這樣的決策樹不具備泛化能力。事實上,信息增益准則對可取值較多的屬性有所偏好。

  為了減少這種偏好可能帶來的影響,因此使用增益率代替信息增益准則選擇划分屬性。

  即增益率(Gain_ratio(D,a))=信息增益Gain(D,a)/屬性固有值(IV(a))。
  屬性A的可能取值越大,固有值IV(a)通常越大。
  信息增益率偏向於可能取值減少的屬性。因此C4.5算法不直接使用信息增益率來選擇划分屬性。

 

 基尼值

  基尼值 Gini(D) 反映了從數據集中隨機抽取兩個樣本,其類別標記不一致的概率。當數據集的純度越高,每次抽到不同類別標記的概率越小。打個比方,在一個袋子里裝100個乒乓球,其中有99個白球,1個黃球,那么當我們隨機抽取兩個球的時候,很大概率是抽到兩個白球。

  所以數據集D的純度可以用基尼值來度量,其定義如下:

    

  基尼值越小,數據集D純度越高。

 

 基尼指數

  基尼指數是針對於屬性定義的,其反映的是,使用屬性a進行划分后,所有分支中(使用基尼值度量的)純度的加權和。

  屬性a的基尼指數定義如下:

   

  我們在屬性集合A中選擇划分屬性的時候,就選擇使得划分后基尼指數最小的屬性作為最優划分屬性。CART就是用基尼指數來選擇划分屬性的。

 

 決策樹的剪枝處理

  剪枝是決策樹學習算法解決過擬合的主要手段。在決策樹的學習過程中,為了盡可能地正確分類訓練樣本,節點划分得不斷重復,有時候會造成決策樹的分支過多,這時候就是算法在訓練樣本上學得太好,導致把訓練集本身的一些特點作為所有數據所有數據都有的一般性質(實際上新數據中可能沒有這些特點),從而導致過擬合。因此可以主動去掉一些分支來降低過擬合的風險。

  決策樹的剪枝分為  預剪枝  和  后剪枝

  預剪枝,是指在決策樹生成過程中,對每個節點在划分前先進行估計,若當前的節點划分不能帶來決策樹泛化的提升,則停止划分並將當前節點標記為葉子節點。

  后剪枝,是指先從訓練數據集中生成一課完整的決策樹,然后自底向上對非葉子節點進行考察,若將該節點對應的子樹替換為葉子結點能夠帶來決策樹泛化能力的提升,則將該節點替換為葉子節點。

  

  (注:葉子節點的類別指定為 訓練數據集中數量最大的類別)

  預剪枝

  在某個節點的預剪枝的估計建立在已經確定最優划分屬性的前提之上,要不要以該屬性對當前節點進行划分,還得先計算泛化能力是否有提高。

  在預剪枝中,泛化能力的計算依賴於驗證數據集。驗證精度的計算是將驗證數據集輸入決策樹模型進行判別,取正例樣本數量與驗證集樣本數量的比值(百分比)。划分前驗證精度由上一步計算給出。泛化能力的提高與否,要對比划分前后驗證集的大小。

  預剪枝基於“貪心”本質禁止這些分支的展開,給預剪枝決策樹帶來欠擬合的風險。

 

  后剪枝

  將驗證集輸入到決策樹算法,計算出剪枝前的驗證精度。然后,找到最底下的非葉子結點,(模擬)將其領先的分支去除,取其中數量最大的分類作為該節點的判別標記。然后計算剪枝后的驗證精度。通過對比剪枝前后的驗證精度,來確定是否需要進行剪枝。

 

  剪枝處理總結:

  后剪枝決策樹通常比預剪枝決策樹保留更多的分支,一般情形下,后剪枝決策樹的欠擬合風險小,泛化能力往往優於預剪枝。但后剪枝決策樹訓練開銷比預剪枝大得多。

 

 連續值與缺失值

  連續值處理

  連續屬性的可取值數目不再有限,因此不能直接根據連續屬性可取值來對節點進行划分(因為如果以可取值來對數據集進行划分,如果在該屬性上所有的可取值是不一樣的,使得划分后純度達到最大,不利於決策樹的泛化)。此時可以使用連續屬性離散化技術。最常用的是二分法。

  給定樣本集D合連續屬性a,嘉定a在D上出現不同取值,將這些取值從小到大排序,記為{a1,a2,......,an},基於划分可以將t划分為子集Dt-,Dt+, 其中Dt-包含那些屬性a取值不大於t的樣本,Dt+包含取值不大於t的樣本。顯然,對於相鄰的屬性取值ai和a(i+1)來說,t在半開區間[ai  a(i+1)) 中所產生的划分結果是相同的。因此,對於連續屬性a, 我們可以考慮包含n-1個元素的候選划分點集合

    

  即把區間[ai  a(i+1))的中位數(ai+a(i+1))/2作為候選划分點,之后我們就可以像離散屬性值一樣來考察這些划分點,選取划分點進行樣本集合的划分,例如可以對離散屬性的信息增益式子稍加改造:

     

  其中,Gain(D,a,t)是樣本集D基於划分點二分后的信息增益於是我們就可以選擇使Gain(D,a,t)最大化的划分點。

 

  缺失值

  對於數據缺失問題,我們需要解決兩個問題:

  (1)如何在屬性值缺失的情況下進行划分屬性選擇?

  (2)給定划分屬性,若樣本在該屬性上的值缺失,如何對樣本進行划分?

  

  

 

 

 

  

  

  

  

 

  

 

  

 


免責聲明!

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



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