決策樹之ID3,C4.5及CART

決策樹的基本認識  

決策樹學習是應用最廣的概括推理算法之一,是一種逼近離散值函數的方法,主要的算法有ID3算法C4.5算法及CART算法

在機器學習中,決策樹是一種預測模型,表明的是一種對象屬性與對象值之間的一種映射關係,每個節點表明某個對象,樹中的每個分叉路徑表明某個可能的屬性值,而每個葉子節點則對應從根節點到該葉子節點所經歷的路徑所表示的對象的值。決策樹僅有單一輸出,若是有多個輸出,能夠分別創建獨立的決策樹以處理不一樣的輸出。app

適用的特徵:機器學習

  實例由「屬性-值」對錶示 ide

  目標函數具備離散的輸出值 函數

  訓練數據能夠包含錯誤 post

  訓練數據能夠包含缺乏屬性值的實例 學習

 

 ID3算法介紹 ui

   ID3算法是決策樹的一種,它是基於奧卡姆剃刀原理的,即用盡可能用較少的東西作更多的事。ID3算法Iterative Dichotomiser 3迭代二叉樹3代,是Ross Quinlan發明的一種決策樹算法,這個算法的基礎就是上面提到的奧卡姆剃刀原理,越是小型的決策樹越優於大的決策樹,儘管如此,也不總是生成最小的樹型結構,而是一個啓發式算法。spa

       在信息論中,指望信息越小,那麼信息增益就越大,從而純度就越高。ID3算法的核心思想就是以信息增益來度量屬性的選擇,選擇分裂後信息增益最大的屬性進行分裂。該算法採用自頂向下的貪婪搜索遍歷可能的決策空間。.net

 

3. 信息熵與信息增益

 

   在信息增益中,重要性的衡量標準就是看特徵可以爲分類系統帶來多少信息,帶來的信息越多,該特徵越重要。在認識信息增益以前,先來看看信息熵的定義 

   這個概念最先起源於物理學,在物理學中是用來度量一個熱力學系統的無序程度,而在信息學裏面,熵是對不肯定性的度量。在1948年,香農引入了信息熵,將其定義爲離散隨機事件出現的機率,一個系統越是有序,信息熵就越低,反之一個系統越是混亂,它的信息熵就越高。因此信息熵能夠被認爲是系統有序化程度的一個度量。 

   假如一個隨機變量的取值爲,每一種取到的機率分別是,那麼

   的熵定義爲

 

             

 

   意思是一個變量的變化狀況可能越多,那麼它攜帶的信息量就越大。

 

   對於分類系統來講,類別是變量,它的取值是,而每個類別出現的機率分別是

 

             

 

   而這裏的就是類別的總數,此時分類系統的熵就能夠表示爲

 

             

 

   以上就是信息熵的定義,接下來介紹信息增益

 

   信息增益是針對一個一個特徵而言的,就是看一個特徵,系統有它和沒有它時的信息量各是多少,二者的差值就是這個特徵給系統帶來的信息量,即信息增益

 

   接下來以天氣預報的例子來講明。下面是描述天氣數據表,學習目標是play或者not play

 

   

 

   能夠看出,一共14個樣例,包括9個正例和5個負例。那麼當前信息的熵計算以下

 

   

 

   在決策樹分類問題中,信息增益就是決策樹在進行屬性選擇劃分前和劃分後信息的差值。假設利用

   屬性Outlook來分類,那麼以下圖

 

   

 

      劃分後,數據被分爲三部分了,那麼各個分支的信息熵計算以下

 

       

 

       那麼劃分後的信息熵爲

 

        

 

        表明在特徵屬性的條件下樣本的條件熵。那麼最終獲得特徵屬性帶來的信息增益爲

 

        

 

   信息增益的計算公式以下

 

   

 

   其中爲所有樣本集合,是屬性全部取值的集合,的其中一個屬性值,中屬性值爲的樣例集合,中所含樣例數。

 

   在決策樹的每個非葉子結點劃分以前,先計算每個屬性所帶來的信息增益,選擇最大信息增益的屬性來劃分,由於信息增益越大,區分樣本的能力就越強,越具備表明性,很顯然這是一種自頂向下的貪心策略。以上就是ID3算法的核心思想。

  ID3的優缺點:

    優勢:

      假設空間包含全部的決策樹,它是關於現有屬性的有限離散值函數的一個完整空間,避免搜索不完整假設空間的一個主要風險:假設空間可能不包含目標函數。
      在搜索的每一步都使用當前的全部訓練樣例,不一樣於基於單獨的訓練樣例遞增做出決定,容錯性加強  

  缺點
 

      在搜索過程當中不進行回溯,可能收斂到局部最優而不是全局最優。

      只能處理離散值的屬性,不能處理連續值的屬性。

     信息增益度量存在一個內在偏置,它偏袒具備較多值的屬性。

 

   C4.5算法

    C4.5 算法繼承了ID3 算法的優勢,並在如下幾方面對ID3 算法進行了改進:   

    1) 用信息增益率來選擇屬性,克服了用信息增益選擇屬性時偏向選擇取值多的屬性的不足;
    2) 在樹構造過程當中進行剪枝;
    3) 可以完成對連續屬性的離散化處理;
    4) 可以對不完整數據進行處理。    

增益比率度量是用前面的增益度量Gain(S,A)和分裂信息度量SplitInformation(S,A)來共同定義的,以下所示:

     其中,分裂信息度量被定義爲(分裂信息用來衡量屬性分裂數據的廣度和均勻): 

   

    其中S1到Sc是c個值的屬性A分割S而造成的c個樣例子集。注意分裂信息實際上就是S關於屬性A的各值的熵。 

C4.5算法構造決策樹的過程 

  1. Function C4.5(R:包含連續屬性的無類別屬性集合,C:類別屬性,S:訓練集)  
  2.   
  3. Begin  
  4.    If S爲空,返回一個值爲Failure的單個節點;  
  5.    If S是由相同類別屬性值的記錄組成,  
  6.       返回一個帶有該值的單個節點;  
  7.    If R爲空,則返回一個單節點,其值爲在S的記錄中找出的頻率最高的類別屬性值;  
  8.    [注意未出現錯誤則意味着是不適合分類的記錄];  
  9.   For 全部的屬性R(Ri) Do  
  10.         If 屬性Ri爲連續屬性,則  
  11.      Begin  
  12.            將Ri的最小值賦給A1:  
  13.         將Rm的最大值賦給Am;  
  14.            For j From 2 To m-1 Do Aj=A1+j*(A1Am)/m;  
  15.            將Ri點的基於{< =Aj,>Aj}的最大信息增益屬性(Ri,S)賦給A;  
  16.      End;  
  17.   將R中屬性之間具備最大信息增益的屬性(D,S)賦給D;  
  18.    將屬性D的值賦給{dj/j=1,2...m};  
  19.   將分別由對應於D的值爲dj的記錄組成的S的子集賦給{sj/j=1,2...m};  
  20.    返回一棵樹,其根標記爲D;樹枝標記爲d1,d2...dm;  
  21.    再分別構造如下樹:  
  22.    C4.5(R-{D},C,S1),C4.5(R-{D},C,S2)...C4.5(R-{D},C,Sm);  
  23. End C4.5  

 

 CART算法

    使用基尼指數進行屬性選擇, 請參閱 https://blog.csdn.net/gzj_1101/article/details/78355234

 

以上三種創建決策樹度量並不是無偏的。
信息增益偏向於多值屬性
增益率調整了這種偏倚,可是它傾向於產生不平衡的劃分,其中一個分區比其餘分區小得多。
基尼指數偏向於多值屬性,而且當類的數量很大時會有困難。它還傾向於致使相等大小的分區和純度。
在決策樹建立時,因爲數據中的噪聲和離羣點,許多分枝反映的是訓練數據中的異常,剪枝方法處理過度擬合數據的問題。使用統計度量剪掉最不可靠的分枝。
樹剪枝:  
 兩種經常使用的剪枝方法:先剪枝和後剪枝。
 先剪枝(prepruning):經過提早中止樹的構建而對樹剪枝。一旦中止,結點就成爲樹葉。
   在構造樹時,可使用統計顯著性、信息增益、基尼指數等度量來評估劃分的優劣。若是劃分一個結點的無組致使低於預約義閾值的劃分,則給定子集的進一步昂劃分將中止。
   選取適當的閾值是困難的,高閾值可能致使過度簡化的樹,而低閾值可能使得樹的簡化太少。
 後剪枝(postpruning),它由"徹底生長"的樹剪去子樹。經過刪除結點的分枝並用樹葉替換它而剪掉給定結點上的子樹。
    該樹葉的類標號用子樹中最頻繁的類標記。相對於前剪枝,此方法更經常使用。  
相關文章
相關標籤/搜索