決策樹(分類樹、回歸樹)


決策樹

決策樹


參考文獻

[1] 李航. 統計學習方法[M]. 北京:清華大學出版社,2012

決策樹

前言:第一篇博客,最近看完決策樹,想着歸納一下,也方便自己以后回顧。寫的會比較全面一些,可能會有很多不太正確的地方,歡迎大家交流指正 : )


決策樹模型

決策樹模型是運用於分類以及回歸的一種樹結構。決策樹由節點和有向邊組成,一般一棵決策樹包含一個根節點、若干內部節點和若干葉節點。決策樹的決策過程需要從決策樹的根節點開始,待測數據與決策樹中的特征節點進行比較,並按照比較結果選擇選擇下一比較分支,直到葉子節點作為最終的決策結果。

  • 內部節點:對應於一個屬性測試
  • 葉節點:對應於決策結果
  • 根節點包含樣本全集;
  • 每個節點包括的樣本集合根據屬性測試的結果被划分到子節點中;
  • 根節點到每個葉節點的路徑對應對應了一個判定測試路徑;

決策樹的結構還是比較好理解的,如果不明白,可以看一下圖中的例子,這是一個簡單判斷這個鍵盤我喜不喜歡的決策樹模型:
這里寫圖片描述

目標變量可以采用一組離散值的樹模型稱為分類樹(常用的分類樹算法有ID3、C4.5、CART),而目標變量可以采用連續值(通常是實數)的決策樹被稱為回歸樹(如CART算法)。

決策樹算法本質上就是要找出每一列的最佳划分以及不同列划分的先后順序及排布


決策樹學習算法:

  • 特征選擇
  • 決策樹生成
  • 決策樹剪枝

(下面討論的都是分類樹,回歸樹會在后面單獨再談)

特征選擇:

特征選擇也即選擇最優划分屬性,從當前數據的特征中選擇一個特征作為當前節點的划分標准。我們希望在不斷划分的過程中,決策樹的分支節點所包含的樣本盡可能屬於同一類,即節點的“純度”越來越高。而選擇最優划分特征的標准不同,也導致了決策樹算法的不同。

為了找到最優的划分特征,我們需要先了解一些信息論的知識:

  • 信息熵(information entropy)
  • 信息增益(information gain)
  • 信息增益率(information gain ratio)
  • 基尼指數(Gini index)

熵:
在信息論和概率統計中,熵(entropy)是表示隨機變量不確定性的度量,設X是一個取有限值的離散隨機變量,其概率分布為

 
P(X=xi)=pi,i=1,2,...,n


則隨機變量 X的熵定義為

H(X)=i=1npilogpi


上述公式中的對數通常以2為底
熵越大,隨機變量的不確定性越大。為了能夠更好地理解熵的意義,我們下面舉一個例子來說明。
當隨機變量只取兩個值,如1,0時,即 X的分布為

P(X=1)=p,P(X=0)=1p,0p1


則熵為

 
H(p)=plog2p(1p)log2(1p)


H(p)的函數圖像如下:
$H(p)$隨概率p變化的曲線
從圖中我們不難看出 p=0or1H(p)為0,即不確定性為0。當 p=0.5時,不確定性最大。

條件熵:
設有隨機變量(X,Y)

。條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性。隨機變量X給定的條件下隨機變量Y的條件熵H(Y|X)定義為X給定條件下Y的條件概率分布的熵對X

的數學期望

H(Y|X)=i=1npiH(Y|X=xi)


這里,pi=P(X=xi),i=1,2,...,n

信息增益:
信息增益表示得知特征X

的信息而使得類Y的信息的不確定性減少程度。接下來給出定義,特征A對訓練數據集D的信息增益g(D,A),為集合D的熵H(D)與特征A給定條件下D的條件熵H(D|A)

之差,即

 
g(D,A)=H(D)H(D|A)
  • 信息增益的算法:

    輸入:訓練數據集D

,特征A
輸出:特征A對訓練數據集D的信息增益g(D,A)
(1):計算數據集D的熵H(D)


 
H(D)=k=1K|Ck||D|log2|Ck||D|


(2):計算特征A對訓練數據集D的條件熵H(D|A)

 
H(D|A)=i=1n|Di||D|H(Di)=i=1n|Di||D|k=1K|Dik||Di|log2|Dik||Di|


(3):計算信息增益

 
g(D,A)=H(D)H(D|A)


|D|為樣本容量,設有K個類Ck,k=1,2,...,K,|Ck|為屬於類Ck的樣本個數。設特征An個不同取值,根據特征A的取值將D划分為n個子集D1,D2,...,Dn,Dik為子集Di中屬於類Ck

  • 的集合。

信息增益率:
特征A

對訓練數據集D的信息增益gR(D,A)定義為其信息增益g(D,A)與訓練數據集D關於特征A的值的熵HA(D)

之比,即

 
gR(D,A)=g(D,A)HA(D)


其中, HA(D)=ni=1|Di||D|log2|Di||D|,n是特征 A取值的個數。
注意區別H(D|A)HA(D)

基尼指數:
基尼指數Gini(D)

表示集合D不確定性,基尼指數Gini(DA=a)表示集合DA=a分割后的不確定性(類似於熵),基尼指數越小,樣本的不確定性越小。
分類問題中,假設有K
個類,樣本點屬於第k類的概率為pk,

則概率分布的基尼指數定義為

 
Gini(p)=k=1Kpk(1pk)=1k=1Kp2k


如果樣本集合 D
根據特征A是否取某一可能值 a被分割成D1D2兩部分,即
D1=
{ (x,y)D|A(x)=a} ,D2=DD1
則在特征 A
的條件下,集合D的基尼指數定義為

 
Gini(D,A=a)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

決策樹生成

生成算法 划分標准
ID3
  信息增益
C4.5
  信息增益率
CART
  基尼指數

ID3:

 

ID3

算法的核心是在決策樹各個節點上根據信息增益來選擇進行划分的特征,然后遞歸地構建決策樹。
具體方法:

  1. 從根節點開始,對節點計算所有可能的特征的信息增益,選擇信息增益值最大的特征作為節點的划分特征;
  2. 由該特征的不同取值建立子節點;
  3. 再對子節點遞歸地調用以上方法,構建決策樹;
  4. 到所有特征的信息增益都很小或者沒有特征可以選擇為止,得到最終的決策樹

ID3

的局限:

  1. 沒有剪枝
  2. 采用信息增益作為選擇最優划分特征的標准,然而信息增益會偏向那些取值較多的特征(這也是C4.5
  1. 采用信息增益率的原因)

C4.5:

C4.5

ID3相似,但對ID3進行了改進,在這里不再詳細描述C4.5的實現,就講一下有哪些基於ID3

的改進:

  1. 用信息增益率來選擇划分特征,克服了用信息增益選擇的不足
  2. 在構造樹的過程中進行剪枝
  3. 對連續值與缺失值進行處理

為什么C4.5

要用信息增益率代替信息增益?為什么信息增益會偏向多取值特征?

信息增益在面對類別較少的離散數據時效果較好,但是面對取值較多的特征時效果會很不如人意。關於信息增益對取值較多特征的偏向性,我認為原因是:當特征的取值較多時,根據此特征划分得到的子集純度有更大的可能性會更高(對比與取值較少的特征),因此划分之后的熵更低,由於划分前的熵是一定的,因此信息增益更大,因此信息增益比較偏向取值較多的特征。舉個較為極端的例子可能更好理解:如果特征A

的取值能將每一個樣本都分到一個節點當中去的時候(如編號等特征),條件熵部分會為0,這意味着該情況下的信息增益達到了最大值,故ID3算法一定會選擇特征A。但是,顯然的,我們知道這個特征A顯然不是最佳選擇。
那么為什么信息增益率就能改善這種情況呢?先來看一下信息增益率的計算公式:

gR(D,A)=g(D,A)HA(D)


其中,HA(D)=ni=1|Di||D|log2|Di||D|
,HA(D)又叫做特征A的內部信息,HA(D)其實像是一個衡量以特征A的不同取值將數據集D分類后的不確定性的度量。如果特征A的取值越多,那么不確定性通常會更大,那么HA(D)的值也會越大,而1HA(D)的值也會越小。這相當於是在信息增益的基礎上乘上了一個懲罰系數。即gR(D,A)=g(D,A)懲罰系數.
(我的理解如果有什么錯誤的地方的話,希望大家能夠指正,不勝感激XD)

CART:

CART(classificationandregressiontree),

分類回歸樹算法,既可用於分類也可用於回歸,在這一部分我們先主要將其分類樹的生成。區別於ID3C4.5,CART假設決策樹是二叉樹,內部節點特征的取值為“是”和“否”,左分支為取值為“是”的分支,右分支為取值為”否“的分支。這樣的決策樹等價於遞歸地二分每個特征,將輸入空間(即特征空間)划分為有限個單元。CART

的分類樹用基尼指數來選擇最優特征的最優划分點,具體過程如下

  1. 從根節點開始,對節點計算現有特征的基尼指數,對每一個特征,例如A

,再對其每個可能的取值如a,根據樣本點對A=a的結果的”是“與”否“划分為兩個部分,利用Gini(D,A=a)=|D1||D|Gini(D1)+|D2||D|Gini(D2)

  • 進行計算;
  • 在所有可能的特征A
以及該特征所有的可能取值a
  • ,選擇基尼指數最小的特征及其對應的取值作為最優特征和最優切分點。然后根據最優特征和最優切分點,將本節點的數據集二分,生成兩個子節點
  • 對兩個字節點遞歸地調用上述步驟,直至節點中的樣本個數小於閾值,或者樣本集的基尼指數小於閾值,或者沒有更多特征后停止;
  • 生成CART

  1. 分類樹;

回歸樹:

回歸樹是可以用於回歸的決策樹模型,一個回歸樹對應着輸入空間(即特征空間)的一個划分以及在划分單元上的輸出值.與分類樹不同的是,回歸樹對輸入空間的划分采用一種啟發式的方法,會遍歷所有輸入變量,找到最優的切分變量j

和最優的切分點s,即選擇第j個特征xj和它的取值s將輸入空間划分為兩部分,然后重復這個操作。
而如何找到最優的j
s

是通過比較不同的划分的誤差來得到的。一個輸入空間的划分的誤差是用真實值和划分區域的預測值的最小二乘來衡量的,即

xiRm(yif(xi))2


其中,f(xi)
是每個划分單元的預測值,這個預測值是該單元內每個樣本點的值的均值,即

 
f(xi)=cm=ave(yi|xiRm)


(將輸入空間划分為M
個單元R1,R2,...,Rm)

那么,j

s

的求解可以用下式進行

 
minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]


其中, R1(j,s)=
{ x|xjs}和 R2(j,s)= { x|xj>s}是被划分后的兩個區域

梳理一下上述內容,最小二乘回歸樹的生成方法如下

  1. 選擇最優的切分變量j

和最優的切分點s,求解

 
minj,s[minc1xiR1(j,s)(yic1)2+minc2xiR2(j,s)(yic2)2]


遍歷所有特征,對固定的特征掃描所有取值,找到使上式達到最小值的對(j,s)

  • .
  • 用選定的對 (j,s)

  1. 划分區域,並確定該區域的預測值;
  2. 繼續對兩個字區域調用上述步驟,直至滿足停止條件;
  3. 生成回歸樹;

舉個例子,我們要對南京市各地區的房價進行回歸預測,我們將輸入空間不斷的按最小誤差進行划分,得到類似下圖的結果,將空間划分后,我們會用該單元內的均值作為該單元的預測值,如圖中一片區域的平均房價作為該划分單元內房價的預測值(唔,怎么感覺這個例子還是不太准確…)。

這里寫圖片描述
(圖片來源於網絡,如有侵權會馬上刪除:)


決策樹剪枝

准備寫的時候才發現我自己剪枝這部分並沒有搞得非常清楚,只能先放在這,日后再進行更新好了。。。


參考文獻

[1] 李航. 統計學習方法[M]. 北京:清華大學出版社,2012


免責聲明!

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



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