分類算法之決策樹介紹


實習了一段時間,接觸了一些數據挖掘、機器學習的算法,先記錄下來方便以后的復習回顧:

 

一:決策樹概念

  決策樹可以看做一個樹狀預測模型,它是由節點和有向邊組成的層次結構。樹中包含3中節點:根節點內部節點葉子節點。決策樹只有一個根節點,是全體訓練數據的集合。樹中每個內部節點都是一個分裂問題:指定了對實例的某個屬性的測試,它將到達該節點的樣本按照某個特定的屬性進行分割,並且該節點的每一個后繼分支對應於該屬性的一個可能值。每個葉子節點是帶有分類標簽的數據集合即為實例所屬的分類。

  決策樹算法很多,例如:ID3、C4.5、CART等。這些算法均采用自上而下的貪婪算法,每個內部節點選擇分類效果最好的屬性來分裂節點,可以分成兩個或者更多的子節點,繼續此過程直到這棵決策樹能夠將全部的訓練數據准確的分類,或所有屬性都被用到為止。該算法的簡化版本是在使用了全部樣本的假設來構建決策樹的。具體步驟如下:

  (1):假設T為訓練樣本集。

  (2):從屬性集合Attributes中選擇一個最能區別T中樣本的屬性。

  (3):創建一個樹節點,它的值為所選擇的屬性。創建此節點的子節點,每個子鏈代表所選屬性的一個唯一值(唯一區間),使用子鏈的值進一步將樣本細分為子類。

      對於每一個分支繼續重復(2)(3)的過程,直到滿足以下兩個條件之一:

      (a):所有屬性已經被這條路徑包括。

      (b):與這個節點關聯的所有訓練樣本都具有相同的目標屬性(熵為0)。

  下面借用《數據挖掘概念與技術》書中的一個列子來方便理解:

  

                              圖1-1

  圖1-1是一個典型的決策樹,它表示概念buys_computer,即它目的是預測顧客是否可能購買計算機。內部節點用矩形表示,葉子節點用橢圓表示。

  為了對未知的樣本分類,樣本的屬性值在決策樹上測試。我們用一些訓練樣本構造了圖1-1中的決策樹,每個內部節點表示一個屬性上的測試,每個葉子節點代表一個分類(buys_computer = yes, buys_computer = no ).

 

二:決策樹的適用情況

  通常決策樹學習最適合具有以下特征的問題:

  (1):實例是由“屬性-值”對表示的。

  (2):目標函數具有離散的輸出值。例如上面的yes和no

  (3):實例的所有屬性都是離散值。如果是連續值或者離散值種類太多,可以把它分為不同的區間,例如上面的age分為了3個區間而不是每個獨立的值為一個判斷分支。

 

三:決策屬性的選擇

  建樹算法中屬性的選擇非常重要。屬性選擇方法很多種,例如信息增益(information gain)、信息增益比(information gain ratio)、Gini 指標(Gini Index)等方法。

  ID3算法依據的是信息增益來選擇屬性,每次計算所有剩余候選屬性的信息增益,然后根據信息增益最大的一個作為此次的分類屬性。信息增益是用熵作為尺度,是衡量屬性對訓練數據分類能力的標准。

  假設表3-1為圖1-1中的訓練樣本集:共有14條數據,屬性有:age、income、student、credit_rating,目標屬性是:buys_computer

  

                            表3-1  

下面根據表3-1和圖1-1的例子來講解某具體屬性的信息增益的計算過程:

  對於某個具體的屬性A,它的信息增益計算表達式是:

 

  (1)是對給定樣本分類所需的期望信息,計算過程如下:

  設Ss個訓練樣本的集合,S也就是對於表3-1中的數據,s = 14。假定類標號屬性有m個不同值,定義m個不同類Ci(i=1,2,...m).設si是類Ci中的樣本數,對應表3-1和圖1-1實例中m=2,其中 C1 = yes C2 = no s1 = 9 s2 = 5 。

  則:

  其中pi是任意樣本屬於Ci的概率,pi = si/s .公式中的對數函數以2為底,因為信息用二進位編碼。

    在該實例中     

 

 

  (2)是根據A划分子集的熵或期望值,計算過程如下:

    設屬性A有v個不同的值{a1,...av},對應實例中的數據,例如屬性age,分為3個不同的值:

    a1為 <=30

    a2為 30..40

    a3為 >40 ;

      

    屬性A把訓練樣本集合S划分為v個子集{S1,...Sv};其中Sj包含訓練樣本集S中在屬性A上有值aj的樣本。Sij是子集Sj中屬於類Ci的樣本數。

    

    其中充當第j個子集的權值,等於子集(即A值為aj)的樣本總數除以S中的樣本總數 即 Sj/S。

    對於給定的子集Sj有

    其中,Pij=Sij/Sj  ,是Sj中的樣本屬於Ci的概率。

    

    該實例中:

        

        因此屬性age的信息增益為:Gain(age)= I(s1,s2) - E(age) = 0.246

    類似的我們可以計算出Gain(income)=0.029 Gain(student)=0.151 Gain(credit_rating)=0.048.由於age在屬性中具有最高信息增益,因此它被選作為第一個測試屬性。

    圖1-1是最終生成的決策樹。

 

四:決策樹的剪枝

  為了防止決策樹和訓練樣本集的過度擬合,需要對決策樹進行剪枝。剪枝通常有事先剪枝法事后剪枝法。

  事先剪枝法: 是建樹過程中判斷當前節點是否需要繼續划分的剪枝方法。通常是通過重要性檢測判斷是否停止分裂節點。

   事后剪枝法: 是讓樹充分生長之后,再判斷是否將某些分支變成節點。常用方法是根據錯誤分裂率(或者決策樹編碼長度)進行決策樹的事后修剪。

 

參考資料:機器學習  Mitchell T.M

     數據挖掘:概念與技術 第三版  Jiawei Han  

 

 

 

 

 

 

 

 

 

 

   


免責聲明!

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



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