決策樹之CART(分類迴歸樹)詳解

決策樹之CART(分類迴歸樹)詳解

  • 主要內容
    • CART分類迴歸樹簡介
    • CART分類迴歸樹分裂屬性的選擇
    • CART分類迴歸樹的剪枝

1、CART分類迴歸樹簡介
  CART分類迴歸樹是一種典型的二叉決策樹,可以做分類或者回歸。如果待預測結果是離散型數據,則CART生成分類決策樹;如果待預測結果是連續型數據,則CART生成迴歸決策樹。數據對象的屬性特徵爲離散型或連續型,並不是區別分類樹與迴歸樹的標準,例如表1中,數據對象xi 的屬性A、B爲離散型或連續型,並是不區別分類樹與迴歸樹的標準。作爲分類決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本所屬類別最多的那一類(即葉子節點中的樣本可能不是屬於同一個類別,則多數爲主);作爲迴歸決策樹時,待預測樣本落至某一葉子節點,則輸出該葉子節點中所有樣本的均值。

表1
表1

2、CART分類迴歸樹分裂屬性的選擇
  2.1 CART分類樹——待預測結果爲離散型數據
  選擇具有最小Gain_GINI 的屬性及其屬性值,作爲最優分裂屬性以及最優分裂屬性值。Gain_GINI 值越小,說明二分之後的子樣本的“純淨度”越高,即說明選擇該屬性(值)作爲分裂屬性(值)的效果越好。
  對於樣本集SGINI 計算如下:
這裏寫圖片描述
其中,在樣本集S 中,Pk 表示分類結果中第k 個類別出現的頻率。
  對於含有N 個樣本的樣本集S ,根據屬性A 的第i 個屬性值,將數據集S 劃分成兩部分,則劃分成兩部分之後,Gain_GINI 計算如下:
這裏寫圖片描述
其中,n1n2 分別爲樣本子集S1S2 的樣本個數。
  對於屬性A ,分別計算任意屬性值將數據集劃分成兩部分之後的Gain_GINI ,選取其中的最小值,作爲屬性A 得到的最優二分方案:
這裏寫圖片描述

  對於樣本集S ,計算所有屬性的最優二分方案,選取其中的最小值,作爲樣本集S 的最優二分方案:
這裏寫圖片描述
所得到的屬性A 及其第i 屬性值,即爲樣本集S 的最優分裂屬性以及最優分裂屬性值。
  2.2 CART迴歸樹——待預測結果爲連續型數據
  區別於分類樹,迴歸樹的待預測結果爲連續型數據。同時,區別於分類樹選取Gain_GINI 爲評價分裂屬性的指標,迴歸樹選取Gain_σ 爲評價分裂屬性的指標。選擇具有最小Gain_σ 的屬性及其屬性值,作爲最優分裂屬性以及最優分裂屬性值。Gain_σ 值越小,說明二分之後的子樣本的“差異性”越小,說明選擇該屬性(值)作爲分裂屬性(值)的效果越好。
  針對含有連續型預測結果的樣本集S ,總方差計算如下:
σ(S)=(ykμ)2
其中,μ 表示樣本集S 中預測結果的均值,yk 表示第k 個樣本預測結果。
  對於含有N 個樣本的樣本集S ,根據屬性A 的第i 個屬性值,將數據集S 劃分成兩部分,則劃分成兩部分之後,Gain_σ 計算如下:
這裏寫圖片描述

  對於屬性A ,分別計算任意屬性值將數據集劃分成兩部分之後的Gain_σ ,選取其中的最小值,作爲屬性A 得到的最優二分方案:
這裏寫圖片描述

  對於樣本集S ,計算所有屬性的最優二分方案,選取其中的最小值,作爲樣本集S 的最優二分方案:
這裏寫圖片描述
所得到的屬性A 及其第i 屬性值,即爲樣本集S 的最優分裂屬性以及最優分裂屬性值。
3、CART分類迴歸樹的剪枝
  由於決策樹的建立完全是依賴於訓練樣本,因此該決策樹對訓練樣本能夠產生完美的擬合效果。但這樣的決策樹對於測試樣本來說過於龐大而複雜,可能產生較高的分類錯誤率。這種現象就稱爲過擬合。因此需要將複雜的決策樹進行簡化,即去掉一些節點解決過擬合問題,這個過程稱爲剪枝。
  剪枝方法分爲預剪枝和後剪枝兩大類。預剪枝是在構建決策樹的過程中,提前終止決策樹的生長,從而避免過多的節點產生。預剪枝方法雖然簡單但實用性不強,因爲很難精確的判斷何時終止樹的生長。後剪枝是在決策樹構建完成之後,對那些置信度不達標的節點子樹用葉子結點代替,該葉子結點的類標號用該節點子樹中頻率最高的類標記。後剪枝方法又分爲兩種,一類是把訓練數據集分成樹的生長集和剪枝集;另一類算法則是使用同一數據集進行決策樹生長和剪枝。常見的後剪枝方法有CCP(Cost Complexity Pruning)、REP(Reduced Error Pruning)、PEP(Pessimistic Error Pruning)、MEP(Minimum Error Pruning)。其中,悲觀錯誤剪枝法PEP(Pessimistic Error Pruning)在“決策樹之C4.5算法詳解”中有詳細介紹,感興趣的小童鞋可以瞭解學習。這裏我們詳細介紹CART分類迴歸樹中應用最廣泛的剪枝算法——代價複雜性剪枝法CCP(Cost Complexity Pruning)。
  代價複雜性剪枝法CCP(Cost Complexity Pruning)主要包含兩個步驟:(1)從原始決策樹T0 開始生成一個子樹序列{T0,T1,...,Tn} ,其中,Ti+1Ti 產生,Tn 爲根節點。(2)從第1步產生的子樹序列中,根據樹的真實誤差估計選擇最佳決策樹。
  CCP剪枝法步驟(1)
  生成子樹序列{T0,T1,...,Tn} 的基本思想是從T0 開始,裁剪Ti 中關於訓練數據集誤差增加最小的分枝來得到Ti+1 。實際上,當1棵樹T 在節點t 處剪枝時,它的誤差增加直觀上認爲是R(t)R(Tt) ,其中,R(t) 爲在節點t 的子樹被裁剪後節點t 的誤差,R(Tt) 爲在節點t 的子樹沒被裁剪時子樹Tt 的誤差。然而,剪枝後,T 的葉子數減少了L(Tt)1 ,其中, L(Tt) 爲子樹Tt 的葉子數,也就是說,T 的複雜性減少了。因此,考慮樹的複雜性因素,樹分枝被裁剪後誤差增加率由下式決定:
這裏寫圖片描述
其中,R(t) 表示節點t 的子樹被裁剪後節點t 的誤差,R(t)=r(t)p(t)r(t) 是節點t 的誤差率,p(t) 是節點t 上的樣本個數與訓練集中樣本個數的比例。R(Tt) 表示節點t 的子樹沒被裁剪時子樹Tt 的誤差,即子樹Tt 上所有葉子節點的誤差之和。
  Ti+1 就是選擇Ti 中具有最小α 值所對應的剪枝樹。
  例如:圖1中ti 表示決策樹中第i 個節點,A、B表示訓練集中的兩個類別,A、B之後的數據表示落入該節點分別屬於A類、B類的樣本個數。
這裏寫圖片描述

  圖1,決策樹中訓練樣本總個數爲80。對於節點t4 ,其中,A類樣本46個,B類樣本4個,根據大多數原則,則節點t4 中樣本爲A類,故節點t4 的子樹(t8t9 )被裁剪之後t4 的誤差爲:4505080=480 。節點t4 的子樹(t8t9 )被裁剪之前t4 的誤差爲:1454580+25580=380 。故α(t4)=48038021=0.0125 。類似過程,依次得到所有節點的誤差增加率,如表2:
表2
這裏寫圖片描述

  從表2可以看出,在原始樹T0 行,4個非葉節點中t4α 值最小,因此,裁剪T0t4 節點的分枝得到T1 ;在T1 行,雖然t2t3α 值相同,但裁剪t2 的分枝可以得到更小的決策樹,因此,T2 是裁剪T1 中的t2 分枝得到的。
  CCP剪枝法步驟(2)
  如何根據第1步產生的子樹序列{T0,T1,...,Tn} ,選擇出1棵最佳決策樹是CCP剪枝法步驟(2)的關鍵。通常採用的方法有兩種,一種是V番交叉驗證(V-fold cross-validation),另一種是基於獨立剪枝數據集。此處不在過分贅述,感興趣的小童鞋,可以閱讀參考文獻[1][2][3]等。

參考文獻
[1] 魏紅寧. 決策樹剪枝方法的比較[J]. 西南交通大學學報, 2005, 40(1):44-48.
[2] 張宇. 決策樹分類及剪枝算法研究[D]. 哈爾濱理工大學, 2009.
[3] Breiman L, Friedman J H, Olshen R, et al. Classification and Regression Trees[J]. Biometrics, 1984, 40(3):358.

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