1. 程式人生 > >決策樹(一)--特徵值選擇

決策樹(一)--特徵值選擇

決策樹是一種基本的分類和迴歸方法。用決策樹分類,從根節點開始,對例項的某一特徵進行測試,根據測試的結果,將例項分配到其子結點;這時,每一個子結點對應著該特徵的一個取值,遞迴地對例項進行測試和分配,直至達到葉節點,最後將例項分到葉節點的類中。

決策樹學習通常包括3個步驟:特徵選擇,決策樹的生成和決策樹的剪枝

特徵值選擇

 當訓練元組緯度比較大時,我們在對其進行分類的時候,要考慮選擇哪一個特徵值進行分裂得到的分類結果才是最好的。

屬性選擇度量是一種選擇分裂準則,把給定類標記的訓練元組的資料區D“最好地”劃分為單獨類的啟發方式。這裡介紹三種常用的屬性選擇度量-資訊增益,增益率,基尼指數

1:資訊增益(ID3)

為了便於說明,先給出熵和條件熵的定義

          在資訊理論與概率統計中,熵是表示隨機變數不確定性的度量,X是一個取有限個值的離散隨機變數,其概率分佈為P(X=x_{i})=p_{i},則隨機變數X的熵為H(X)=-\sum_{i=1}^{n}p_{i}log{p_{i}}

由公式可以得知,熵只依賴於X的分佈,而與X的取值無關,並且熵越大,隨機變數的不確定性就越大!!!

          假設有隨機變數(X,Y),其聯合概率分佈為: P(X=x_{i},Y=y_{i})=p_{ij},條件熵H(Y|X)表示在已知隨機變數X的條件下,Y的不確定性。隨機變數X給定條件下隨機變數Y的條件熵定義為X給定條件下Y的條件概率分佈的熵對X的數學期望

H(Y|X)=\sum_{i=1}^{n}{p_{i}H(Y|X=x_{i})}

資訊增益定義:

             特徵A對訓練集D的資訊增益g(D,A),定義為集合D的熵H(D)與特徵A給定條件下D的條件熵H(D|A)的差,即:

  g(D,A)=H(D)-H(D|A) ,資訊增益表示得到特徵X的資訊而使得類Y的資訊不確定性減少的程度。

         H(D)=-\sum_{k=1}^{K}{\frac{|C_{k}|}{|D|}}log_{2}\frac{|C_{k}|}{|D|}

         H(D|A)=\sum_{i=1}^{n}{\frac{|Di|}{|D|}}\sum_{k=1}^{K}{\frac{|D_{ik}|}{|D_{i}|}}log_{2}\frac{|D_{ik}|}{|D_{i}|}

其中|D|表示其樣本容量,K表示類的個數,|Ck|表示的屬於類Ck的個數,設特徵A有n個不同的取值,根據特徵A的取值將D劃分為n個子集Di,|Di|為Di的樣本個數,記子集Di中屬於類Ck的樣本集合為Cik。

 2:增益率(C4.5)

資訊增益比:特徵A對訓練數集D的資訊增益比g_{R}(D,A)定義為其資訊增益g(D,A)與訓練資料集D關於特徵值A的值的熵H_{A}(D)之比,即

     g_{R}(D,A)=\frac{g(D,A))}{H_{A}(D)},其中 H_{A}(D)=-\sum_{i=1}^{n}{\frac{|D_{i}|}{|D|}}log\frac{|D_{i}|}{|D|}

3:基尼指數(CART)

基尼指數度量資料區或訓練集D的不純度,定義為:Gini(D)=1-\sum_{i=1}^{n}{p_{i}^2},基尼指數值越小,資料集的純度越高。

屬性A的基尼指數定義為:

  Gini(D,A)=\sum_{k=1}^{K}{\frac{|D_{k}|}{|D|}}Gini(D_{k})

接下來,我們來算一下這三種度量方式

  1:資訊增益

標號buys_conputer有兩個不同的值,因此有兩個類。類yes中有9個元組,類no中有5個元組。

   Info(D)=-\frac{9}{14}log_{2}\frac{9}{14}-\frac{5}{14}log_{2}\frac{5}{14}=0.94

下一步需要計算每個屬性的期望資訊需求。從age開始。需要對age中的每個類考察age和no的分佈。

對於age類的"youth",有2個yes元組和3個no元組

對於age類的"middle_aged",有4個yes元組和0個no元組

對於age類的"senior",有3個yes元組,2個no元組。

Info_{age}(D)=\frac{5}{14}*(-\frac{2}{5}log_{2}\frac{2}{5}-\frac{3}{5}log_{2}\frac{2}{5})+\frac{4}{14}*(-\frac{4}{4}log_{2}\frac{4}{4}-\frac{0}{4}log_{2}\frac{0}{4})+\frac{5}{14}*(-\frac{2}{5}log_{2}\frac{2}{5}-\frac{3}{5}log_{2}\frac{2}{5})=0.694

因此,這種劃分的資訊增益為:Gain(age)=Info(D)-Info_{age}(D)=0.940-0.694=0.246

類似的,對於income:Gain(income)=0.029 

              對於student:Gain(student)=0.151

              對於credit_rating:Gain(credit\_rating)=0.048

由於age在屬性中具有最高的資訊增益,所以它被選做分裂屬性

 

2:資訊增益率

屬性income將資料劃分為3個分割槽,low,medium,high,分別包含4,6,4個元組。

   H{_income}(D)=-\frac{4}{14}log_{2}\frac{6}{14}-\frac{6}{14}log_{2}\frac{4}{14}-\frac{4}{14}log_{2}\frac{4}{14}=1.557

  Gain(income)=0.029,因此GainRatio(income)=0.029/1.557=0.019

 

3:基尼指數

表中9個元組是屬於類buy_computer=yes,而其餘的5個元組屬於類buy_computer=no。首先使用基尼指數計算D的不純度

Gain(D)=1-(\frac{9}{14})^2-(\frac{5}{14})^2=0.459

針對屬性income,並考慮每個可能的分裂子集,考慮子集{low,medium},這將導致10個滿足條件income在{low,medium}的元組在分割槽D1中,其中四個在D2中,D2為income屬於{high}

Gini_{income->high}=\frac{10}{14}Gini(D1)+\frac{4}{14}Gini(D2)=0.443

類似的,用其餘子集劃分的基尼指數為:0.458 {low,high}     0.450 {medium,high},因此,屬性income的最好二元劃分在{low,medium}上,因為他有最小的基尼指數

演算法 支援模型 樹結構 特徵選擇 連續值處理 缺失值處理 剪枝
ID3 分類 多叉樹 資訊增益 不支援 不支援 不支援
C4.5 分類 多叉樹 增益率 支援 支援 支援
CART 分類,迴歸 二叉樹 基尼指數 支援 支援 支援