決策樹

一、決策樹概念

決策樹通過把實例從根節點排列到某個葉子結點來分類實例,葉子結點即爲實例所屬的分類。樹上的每一個結點指定了對實例的某個屬性的測試,並且該結點的每一個後繼分支對應於該屬性的一個可能值。分類實例的方法是從這棵樹的根節點開始,測試這個結點的屬性,然後按照給定實例的屬性值對應的樹枝向下移動。然後這個過程在以新結點的根的子樹上重複。


二、舉例認識決策樹


構造決策樹如下:


具體來看:



三、決策樹算法ID3

通過自頂向下構造決策樹來進行學習。構造過程是從“哪一個屬性將在樹的根結點被測試?”這個問題開始的。爲了回答這個問題,使用統計測試來確定每一個實例屬性單獨分類訓練樣例的能力。分類能力最好的屬性被選作樹的根結點的測試。然後爲根節點屬性的每個可能值產生一個分支,並把訓練樣例排列到適當的分支之下。然後重複整個過程,用每個分支結點關聯的訓練樣例來選取在該點被測試的最佳屬性。這形成了對合格決策樹的貪婪搜索(greedy search),也就是算法從不回溯重新考慮原來的選。

 所以,ID3的思想便是:

  1. 自頂向下的貪婪搜索遍歷可能的決策樹空間構造決策樹(此方法是ID3算法和C4.5算法的基礎);
  2. 從“哪一個屬性將在樹的根節點被測試”開始;
  3. 使用統計測試來確定每一個實例屬性單獨分類訓練樣例的能力,分類能力最好的屬性作爲樹的根結點測試(如何定義或者評判一個屬性是分類能力最好的呢?這便是下文將要介紹的信息增益,or 信息增益率)。
  4. 然後爲根結點屬性的每個可能值產生一個分支,並把訓練樣例排列到適當的分支(也就是說,樣例的該屬性值對應的分支)之下。
  5. 重複這個過程,用每個分支結點關聯的訓練樣例來選取在該點被測試的最佳屬性。
具體算法過程如下:



四、哪個屬性是最佳的分類屬性呢

熵(entropy):刻畫了任意樣例集的純度(purity)。

熵確定了要編碼集合S中任意成員(即以均勻的概率隨機抽出的一個成員)的分類所需要的最小二進制位數。
如果目標屬性具有c個不同的值,那麼S相對c個狀態(c-wise)的分類的熵定義爲:


Pi是S中屬於類別i的比例。
信息增益(information gain):一個屬性的信息增益就是由於使用這個屬性分割樣例而導致的期望熵降低


Values(A)是屬性A所有可能值的集合,S是S中屬性A的值爲v的子集。

   第一個Entropy(S)是熵定義,第二個則是信息增益Gain(S,A)的定義,而Gain(S,A)由第一個Entropy(S)計算出,記住了。

    對於上面的例子,S是一套有關天氣的訓練樣例,描述它的屬性包括可能是具有Weak和Strong兩個值的Wind。像前面一樣,假定S包含14個樣例,[9+5-]。在這14個樣例中,假定正例中的6個和反例中的2個有Wind =Weak其他的有Wind=Strong。由於按照屬性Wind分類14個樣例得到的信息增益可以計算如下。


對於上面的例子,下圖是ID3算法第一步後形成的部分決策樹


如上圖,訓練樣例被排列到對應的分支結點。分支Overcast的所有樣例都是正例,所以成爲目標分類爲Yes的葉結點。另兩個結點將被進一步展開,方法是按照新的樣例子集選取信息增益最高的屬性。


五、C4.5算法

 C4.5,是機器學習算法中的另一個分類決策樹算法,它是決策樹(決策樹也就是做決策的節點間的組織方式像一棵樹,其實是一個倒樹)核心算法,也是上文1.2節所介紹的ID3的改進算法,所以基本上了解了一半決策樹構造方法就能構造它。

    決策樹構造方法其實就是每次選擇一個好的特徵以及分裂點作爲當前節點的分類條件。

    既然說C4.5算法是ID3的改進算法,那麼C4.5相比於ID3改進的地方有哪些呢?:

  1. 用信息增益率來選擇屬性。ID3選擇屬性用的是子樹的信息增益,這裏可以用很多方法來定義信息,ID3使用的是熵(entropy,熵是一種不純度度量準則),也就是熵的變化值,而C4.5用的是信息增益率。對,區別就在於一個是信息增益,一個是信息增益率。
  2. 在樹構造過程中進行剪枝,在構造決策樹的時候,那些掛着幾個元素的節點,不考慮最好,不然容易導致overfitting。
  3. 對非離散數據也能處理。
  4. 能夠對不完整數據進行處理

    針對上述第一點,解釋下:一般來說率就是用來取平衡用的,就像方差起的作用差不多,比如有兩個跑步的人,一個起點是10m/s的人、其10s後爲20m/s;另一個人起速是1m/s、其1s後爲2m/s。如果緊緊算差值那麼兩個差距就很大了,如果使用速度增加率(加速度,即都是爲1m/s^2)來衡量,2個人就是一樣的加速度。因此,C4.5克服了ID3用信息增益選擇屬性時偏向選擇取值多的屬性的不足。

C4.5算法之信息增益率

 OK,既然上文中提到C4.5用的是信息增益率,那增益率的具體是如何定義的呢?:

    是的,在這裏,C4.5算法不再是通過信息增益來選擇決策屬性。一個可以選擇的度量標準是增益比率gain ratioQuinlan 1986)。增益比率度量是用前面的增益度量Gain(S,A)和分裂信息度量SplitInformation(S,A)來共同定義的,如下所示:


其中S1到Sc是c個值的屬性A分割S而形成的c個樣例子集。注意分裂信息實際上就是S關於屬性A的各值的熵。這與我們前面對熵的使用不同,在那裏我們只考慮S關於學習到的樹要預測的目標屬性的值的熵。

    請注意,分裂信息項阻礙選擇值爲均勻分佈的屬性。例如,考慮一個含有n個樣例的集合被屬性A徹底分割(譯註:分成n組,即一個樣例一組)。這時分裂信息的值爲log2n。相反,一個布爾屬性B分割同樣的n個實例,如果恰好平分兩半,那麼分裂信息是1。如果屬性A和B產生同樣的信息增益,那麼根據增益比率度量,明顯B會得分更高。

    使用增益比率代替增益來選擇屬性產生的一個實際問題是,當某個Si接近S(|Si|?|S|)時分母可能爲0或非常小。如果某個屬性對於S的所有樣例有幾乎同樣的值,這時要麼導致增益比率未定義,要麼是增益比率非常大。爲了避免選擇這種屬性,我們可以採用這樣一些啓發式規則,比如先計算每個屬性的增益,然後僅對那些增益高過平均值的屬性應用增益比率測試(Quinlan 1986)。

    除了信息增益,Lopez de Mantaras1991)介紹了另一種直接針對上述問題而設計的度量,它是基於距離的(distance-based)。這個度量標準基於所定義的一個數據劃分間的距離尺度。具體更多請參看:Tom M.Mitchhell所著的機器學習之3.7.3節。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章