決策樹學習筆記

本文是學習周志華老師的《機器學習》以及其他相關博客之後進行概括和整理,以便自己將來能夠快速回憶其決策樹的相關內容。大家若想看更加詳細的決策樹相關知識,請參看《機器學習》

總體概述

本文通過腦圖對決策樹相關知識進行整理,目前整理了ID3,C4.5,CART以及決策樹的剪枝處理等知識,而對於其他決策樹的連續值和缺失值的處理以及多變量決策樹的相關知識,後續再進行添加。
決策樹

ID3

ID3
決策樹是從根節點開始,一步一步的選取屬性以及屬性值進行節點分裂,直到滿足一定條件(如當前節點上的樣本屬於同一類,或者已經達到所對頂的最大高度等)便停止生長。而在這一過程中,比較重要的是選取哪一個屬性進行分裂。
在ID3決策樹中,是使用信息增益來判斷選擇那個屬性進行分裂的依據。而要了解信息增益,首先需要了解信息熵
信息熵,是衡量樣本集合純度的一種指標。比如,假定當前樣本集合D中第k類樣本所佔比例爲pk(k=1,2,...,y)p_k(k=1,2,...,|y|),則D的信息熵定義爲
Ent(D)=k=1ypklog2pkEnt(D)=-\sum_{k=1}^{|y|}p_k{log_2{p_k}}
Ent(D)Ent(D)越小,則D的純度越高。因此,我們希望當對某一個節點進行分裂的時候,分裂之後的信息熵要儘可能小,選取各個可選的屬性值中使得信息熵最小的屬性爲最佳分裂屬性。此時,使用信息增益衡量分裂前後信息熵的變化。信息增益公式如下
Gain(D,a)=Ent(D)v=1VDvDEnt(Dv)Gain(D,a)=Ent(D)-\sum_{v=1}^{V}\frac{|D^v|}{|D|}Ent(D^v)
上式中,相關變量的定義如下:

  • D: 當前待分裂節點的樣本集合
  • a: 當前可選的屬性
  • V: 屬性a的可能取值個數
  • DvD^v: 屬性a在第v個屬性值上的樣本個數

因此,在分裂節點的時候,計算所有可能選取的屬性對應的信息增益,選取增益最大的屬性進行分裂。

但是在ID3決策樹中,在分裂節點的時候,往往會比較傾向於取值較多的屬性進行分裂。比如,當我們在訓練集的屬性中使用物品id,由於每一個物品的id不一樣,那麼當按照物品id進行分裂的時候,分裂後的每一個子節點上的樣本都是單一的,此時的信息增益最大。但是此時按照物品id進行分類顯然是不合適的,因爲當我們在驗證集中來了一個新的物品id,那麼此時決策樹就無法識別。上述現象就出現了過擬合。

C4.5

C4.5
爲了避免上節中ID3使用的信息增益對取值較多的屬性有偏好,C4.5決策樹則不直接使用信息增益,而是使用信息增益率來選擇最優的劃分屬性。信息增益率定義如下:
Gain_rato(D,a)=Gain(D,a)IV(a)Gain\_rato(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的可能取值越多,IV(a)IV(a)的值也會越大,一直Gain_rato(D,a)Gain\_rato(D,a)對取值多的屬性的偏好。
但信息增益率對取值數目少的屬性有偏好,故在使用中採用啓發式:先從候選劃分屬性中找出信息增益率高於平均水平的屬性,在從中選擇信息增益最高的屬性。

CART

CART
CART,即Classification and Regression Trees 分類迴歸樹,可以用於分類,也可以用於迴歸問題.

CART分類樹

在CART分類樹中,使用基尼值來表示數據集的純度,進而用於選擇劃分屬性。基尼值定義如下:
Gini(D)=k=1ykkpkpk=1k=1ypk2Gini(D)=\sum_{k=1}^{|y|}\sum_{k'\neq k}p_kp_{k'}=1-\sum_{k=1}^{|y|}p_k^2
則對於屬性a的基尼指數爲:
Giniindex(D,a)=v=1VDvDGini(Dv)Gini_index(D,a)=\sum_{v=1}^{V}\frac{|D^v|}{|D|}Gini(D^v)

CART迴歸樹

而在迴歸樹中,由於輸出是連續型數值,此時選擇屬性a進行分裂的時候,首先將屬性值進行排序,遍歷屬性值全取切分點s,按照切分點進行切分,就會得到兩個區域,將兩個區域中樣本的值取均值以作爲該區域的值。在這一過程中,使用的損失函數是平方誤差損失函數
L(y,f(x))=(yf(x))2L(y,f(x))=(y-f(x))^2

剪枝處理

剪枝處理
在決策樹生成的過程中,可能會出現分支過多的情況,導致過擬合。而剪枝處理就是爲了避免過擬合。決策樹剪枝有預剪枝和後剪枝兩種。

預剪枝

預剪枝是對每個節點劃分前進行估計,若當前節點的劃分不能帶來決策樹泛化性能提升,則停止劃分並將當前節點爲葉結點。
但預剪枝基於貪心本質禁止一些分支展開,可能帶來欠擬合。

後剪枝

後剪枝是先從訓練集生成一課完整的決策樹,然後自底向上對非葉節點進行考察,若將該結點對應的子樹替換爲葉結點能帶來決策樹泛化性能提升,則將該子樹替換爲葉結點。
後剪枝相比預剪枝保留更多分支,造成欠擬合分險小,泛化性能往往由於預剪枝。但由於後剪枝需要先訓練完成決策樹,因此後剪枝的時間開銷比較大。

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