【機器學習】十、分類和迴歸樹CART原理

一文詳解,分類和迴歸樹算法背後原理。碼字不易,喜歡請點贊,謝謝!!!
在這裏插入圖片描述

一、前言

分類和迴歸樹(Classification And Regression Trees),簡稱CART,是1984年提出來的既可用於分類,又可用於迴歸的樹。CART被稱爲數據挖掘領域內里程碑式的算法。
上一節介紹了決策樹的ID3和C4.5算法,後面說到了C4.5算法存在幾點不足,主要爲,生成多叉樹;容易過擬合;只能用於分類;特徵選擇採用熵模型計算量大。而CART針對C4.5算法的這幾點不足都提出了改進。本文將會一一介紹。

二、CART特徵選擇方法

CART算法包括分類樹和迴歸樹,其中分類樹和迴歸樹的特徵選擇採用的是不同的方法,這裏依次介紹。

  1. CART分類樹特徵選擇
    在ID3中,採用信息增益來選擇特徵;在C4.5中,採用信息增益率來選擇特徵;而在CART的分類樹中,則是採用基尼係數來選擇特徵。這是因爲,信息論中的熵模型,存在大量的對數運算,而基尼係數在簡化熵模型的計算的同時保留了熵模型的優點。
  • 基尼係數
    基尼係數代表模型的純度,基尼係數越大,模型越不純;基尼係數越小,模型越純。因此在特徵選擇時,選擇基尼係數小的來構建決策樹,這和信息增益(率)是相反的。
    基尼係數表達式:
    在這裏插入圖片描述
    式中KK表示分類問題有KK個類別,第kk個類別的概率爲pkp_k
    如果是二分類,公式將更簡單,假設第一類的概率爲pp,則基尼係數表達式爲:
    在這裏插入圖片描述
    對於個給定的樣本DD,假設有KK個類別, 第kk個類別的數量爲CkC_k,則樣本DD的基尼係數表達式爲:
    在這裏插入圖片描述
    特別的,對於樣本DD,如果根據特徵AA的某個值aa,把DD分成D1D1D2D2兩部分,則在特徵AA的條件下,DD的基尼係數表達式爲:
    在這裏插入圖片描述
  • 從熵模型到基尼係數
    到這裏你可能還不明白爲什麼可以使用基尼係數來替代熵,推導如下:
    在這裏插入圖片描述
    從上面推導可以得知,通過泰勒展開,可以將基尼係數近似的等價於熵模型。下圖展示了基尼係數和熵模型之間的差距,可以看出,基尼係數和熵之半的曲線非常接近,僅僅在45度角附近誤差稍大。因此,基尼係數可以做爲熵模型的一個近似替代。
    在這裏插入圖片描述
  1. CART迴歸樹特徵選擇
    上面說了CART的分類樹採用基尼係數來選取特徵,而CART的迴歸樹對於離散型特徵也是採用基尼係數,而對於連續性特徵,則採用均方差。對於任意劃分特徵AA,對應的任意劃分點ss兩邊劃分成的數據集D1D1D2D2,求出使D1D1D2D2各自集合的均方差最小,同時D1D1D2D2的均方差之和最小所對應的特徵和特徵值劃分點。表達式爲:
    在這裏插入圖片描述

另外,爲了簡化算法,CART的分類和迴歸均採用二叉樹,而不是多叉樹,這樣一可以進一步簡化基尼係數和均方差的計算,二可以建立一個更加優雅的二叉樹模型。

三、CART連續型和離散型數據處理方法

  1. 離散型數據
    回憶下ID3或者C4.5,如果某個特徵A被選取建立決策樹節點,如果它有A1,A2,A3三種類別,我們會在決策樹上一下建立一個三叉的節點。這樣導致決策樹是多叉樹。但是CART使用的方法不同,他採用的是不停的二分,還是這個例子,CART會考慮把A分成{A1}和{A2,A3}{A1}和{A2,A3}, {A2}和{A1,A3}{A2}和{A1,A3}, {A3}和{A1,A2}{A3}和{A1,A2}三種情況,找到基尼係數最小的組合,比如{A2}和{A1,A3}{A2}和{A1,A3},然後建立二叉樹節點,一個節點是A2對應的樣本,另一個節點是{A1,A3}對應的節點。同時,由於這次沒有把特徵A的取值完全分開,後面我們還有機會在子節點繼續選擇到特徵A來劃分A1和A3。這和ID3或者C4.5不同,在ID3或者C4.5的一棵子樹中,離散特徵只會參與一次節點的建立。
  2. 連續型數據
    對於CART連續值的處理問題,其思想和C4.5是相同的,都是將連續的特徵離散化。唯一的區別在於在選擇劃分點時的度量方式不同,C4.5使用的是信息增益比,則CART使用的是基尼係數均方差
    具體思路,如果m個樣本的特徵A是連續型特徵,將其值從小到大排列a1,a2,...,ama_1,a_2,...,a_m,然後取相鄰樣本的平均數,得到m-1個劃分點,其中第ii個劃分點Ti=ai+ai+12T_i=\frac{a_i+a_{i+1}}{2}。對於這m-1個劃分點,分別計算其作爲二元分類時候的基尼係數(分類)或均方差(迴歸),然後取到最小的點ata_t,則小於ata_t的值爲類別1,大於ata_t的值爲類別2,這樣我們就做到了連續特徵的離散化。要注意的是,與ID3或者C4.5處理離散屬性不同的是,如果當前節點爲連續屬性,則該屬性後面還可以參與子節點的產生選擇過程。

四、CART步驟

CART的步驟包括,構造樹,然後進行剪枝操作(後面會講到),然後進行預測。對於構造樹部分,分類樹和迴歸樹步驟是一樣的,只是連續型特徵選擇準則不同,因此這裏步驟放在一起。

  • 輸入:訓練集D,基尼係數(均方差)閾值,樣本個數閾值
  • 輸出:決策樹T
  • 構建樹步驟:從根節點開始,採用遞歸的方法構建CART樹
  1. 對於當前節點的數據集爲D,如果樣本個數小於閾值或者沒有特徵,則返回決策子樹,當前節點停止遞歸;
  2. 計算樣本集D的基尼係數(均方差),如果基尼係數(均方差)小於閾值,則返回決策樹子樹,當前節點停止遞歸;
  3. 計算當前節點現有的各個特徵的各個特徵值對數據集D的基尼係數(均方差);
  4. 在計算出來的各個特徵的各個特徵值對數據集D的基尼係數(均方差)中,選擇基尼係數(均方差)最小的特徵A和對應的特徵值a。根據這個最優特徵和最優特徵值,把數據集劃分成兩部分D1和D2,同時建立當前節點的左右節點,左節點的數據集D爲D1,右節點的數據集D爲D2。
  • 預測:如果樣本輸出是離散值,那麼這是一顆分類樹。如果果樣本輸出是連續值,那麼那麼這是一顆迴歸樹。
    分類樹預測:採用葉子節點裏概率最大的類別作爲當前節點的預測類別;
    迴歸樹預測:採用的是用最終葉子的均值或者中位數來預測輸出結果。

五、CART剪枝

剪枝是決策樹非常重要的一步,因爲決策樹經常出現過擬合的情況,CART迴歸樹和CART分類樹的剪枝策略除了在度量損失的時候一個使用均方差,一個使用基尼係數,算法基本完全一樣,這裏我們一起來講。
剪枝的目的是爲了增加決策樹的泛化能力。
剪枝方法:前剪枝(邊建樹邊剪枝);後剪枝(建完樹之後剪枝)。
對於CART來說,一般採用後剪枝,即先生成決策樹,然後產生所有可能的剪枝後的CART樹,然後使用交叉驗證來檢驗各種剪枝的效果,選擇泛化能力最好的剪枝策略。
在這裏插入圖片描述
CART剪枝的步驟可以理解爲下圖,如果剪枝後的損失函數小於剪枝前損失函數,則進行剪枝操作。
在這裏插入圖片描述在這裏插入圖片描述
在這裏插入圖片描述

六、CART小結

在這裏插入圖片描述
注:本文主要參考劉建平老師關於CART的總結!!!

參考文獻:
https://www.cnblogs.com/pinard/p/6053344.html
李航 《統計學習方法》
https://www.bilibili.com/video/av54649502
https://blog.csdn.net/lanchunhui/article/details/65441891
https://www.cnblogs.com/zhangchaoyang/articles/2709922.html


歡迎添加個人微信號:liu2536036458。
想進入交流羣的,備註:數據分析交流羣
我們共同學習,共同進步!!!


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