決策樹

李宏毅第八次打卡

決策樹

《李航統計學習》

首先是決策樹的模型結構:將數據的屬性值作爲一個個的結點,根據輸入數據的結點的不同的值進入不同的子樹,然後到最後判斷出結構來。

決策樹是通過遞歸產生結點的:

輸入:訓練集 $D = KaTeX parse error: Expected '}', got 'EOF' at end of input: {(x_1,y_1),(x_2,y_2),\dots,(x_m,y_m)$}

   屬性集:$A = KaTeX parse error: Expected '}', got 'EOF' at end of input: {a_1,a_2,\dot , a_d$};

過程:函數TreeGenerate(D,A)

  1. 生成結點node;
  2. if D 中樣本權屬於同一個類別C then
  3.   將node標記爲C類葉結點;return
  4. end if
  5. if A=A = \emptyset OR D中樣本在A上的取值相同 then
  6.   將node標記爲葉結點,其類別標記爲D中樣本數組多的類;return
  7. end if
  8. 從A中選擇最優化分屬性aa_*;
  9. for $ a_* $
  10.   的每一個值 $ a_{*}^v$ do
  11.   爲node生成一個分支;令DvD_v表示D中在aa_*上取值爲
  12.                             ava_*^v的樣本子集
  13.   if DvD_v爲空,then
  14.     將分支結點標記爲葉結點,其類別標記爲D中樣本最多的類;return
  15.   else
  16.     以$TreeGenerate(D_v,a $ \ {aa_*}$ )$爲分支結點
  17.   end if
  18. end for

輸出: 以node爲根的一顆決策樹

三種情形導致遞歸返回

  • 1.當前結點包含的樣本全屬於同一個類別,無需劃分
  • 2.當前屬性集爲空,或是所有樣本在所有屬性上取值相同,無法劃分
  • 3.當前結點包含的樣本集合爲空,不能劃分。

信息增益

信息熵(information entropy),度量純度的最常用的一種指標。

  • D:樣本集合
  • pkp_k第k類樣本所佔的比例(k = 1,2,……,|y|)

Ent(D)=k=1ypklog2pkEnt(D) = -\sum_{k=1}^{|y|}pklog_2p_k

Ent(D)的值越小純度越高

假設離散屬性a有V個可能的取值{a1,a2,,aVa^1,a^2,\dots , a^V},如果使用a來對樣本集進行劃分,那麼將會產生V個分支結點,第v個分支結點包含了D中所有在屬性a上取值爲ava^v的樣本,記爲DvD^v,考慮到不同的分支結點鎖包含的樣本數不同,給分支結點賦予權重DvD\frac{|D^v|}{|D|},即樣本數越多的分支結點的影響越大,此時可計算出用屬性a對樣本集D進行劃分所獲得的“信息增益”(information gain)

Gain(D,a)=Ent(D)v=1VDvDEnt(Dv)Gain(D,a) = Ent(D) - \sum_{v=1}^V \frac{|D^v|}{D} * Ent(D^v)

一般而言信息增益越大,意味着使用屬性a進行劃分的純度越高,所以可以使用信息增益來進行決策樹的劃分屬性選擇,即選擇

a=argminaA  Gain(D,a)a_{*} = \mathop{\arg\min}_{a \in A} \ \ Gain(D,a)

信息增益率

信息增益對於取值數目比較多的屬性有多偏好,爲了減少這種偏好帶來的不利影響,C4.5決策算法不直接使用信息增益而是直接使用“增益率”(gain ratio)來選擇最優的劃分。

Gainratio(D,a)=Gain(D,a)IV(a)Gain_ratio(D,a) = \frac{Gain(D,a)}{IV(a)}

其中

IV(a)=v=1VDvDlog2DvDIV(a) = -\sum_{v=1}^V \frac{|D^v|}{D}log_2\frac{D^v}{D}

被稱爲a的“固有值”(intrinsic value),屬性a的可能取值數目越多(也就是V越大),則IV(a)的值通常越大。

增益率可能對數目比較少的有所偏好。所以C4.5不是直接選擇增益率最大的候選劃分屬性,而是使用了一個啓發式:先從候選劃分屬性中找出信息增益高於平均水平的屬性,再從中選擇增益率最高的。

ID3算法的優缺點

我們都知道ID3算法是根據某個屬性的純度來進行選擇的,但是信息增益對於取值數目比較多的屬性有多偏好

C4.5算法優缺點

這個算法是根據增益率來進行劃分,而增益率可能對數目比較少的有所偏好。所以C4.5不是直接選擇增益率最大的候選劃分屬性,而是使用了一個啓發式:先從候選劃分屬性中找出信息增益高於平均水平的屬性,再從中選擇增益率最高的。這也彌補了對數目比較少的偏好的缺點。

C4.5算法對於ID3算法的提升。

首先是C4.5採用了增益率而不是ID3的單純的信息增益,這個可以避免信息增益對於取值數目比較多的屬性的偏好的問題,而同時在使用信息增益率的時候也不是直接選擇最高的而是先從候選劃分屬性中找出信息增益高於平均水平的屬性,再從中選擇增益率最高的。

C4.5對於連續值上的處理

在這裏其實是對連續的數值進行分段,然後再進行處理。

一份樣例的代碼

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