分類回歸樹(CART)


概要

本部分介紹 CART,是一種非常重要的機器學習算法。
 


基本原理

 
CART 全稱為 Classification And Regression Trees,即分類回歸樹。顧名思義,該算法既可以用於分類還可以用於回歸。

克服了 ID3 算法只能處理離散型數據的缺點,CART 可以使用二元切分來處理連續型變量。二元切分法,即每次把數據集切分成兩份,具體地處理方法是:如果特征值大於給定值就走左子樹,否則就走右子樹。對 CART 稍作修改就可以處理回歸問題。先前我們使用香農熵來度量集合的無組織程度,如果選用其它方法來代替香農熵,就可以使用樹構建算法來完成回歸。

本部分將構建兩種樹,第一種是回歸樹,其每個葉節點包含單個值;第二種是模型樹,其每個葉節點包含一個線性方程。
 


回歸樹

要對樹據的復雜關系建模,我們已經決定用樹結構來幫助切分數據,那么如何實現數據的切分呢?怎么才能知道是否已經充分切分呢?這些問題的答案取決於葉節點的建模方式。回歸樹假設葉節點是常數值,需要度量出數據的一致性,在這里我們選擇使用平方誤差的總值來達到這一目的。

選擇特征的偽代碼如下:

對每個特征:
    對每個特征值:
        將數據切分成兩份(二元切分)
             計算切分的誤差(平方誤差)
             如果當前誤差小於當前最小誤差,那么將當前切分設定為最佳切分並更新最小誤差
返回最佳切分的特征和閾值

與 ID3 或 C4.5 唯一不同的是度量數據的一致性不同,前兩者分別是信息增益和信息增益率,而這個是用平方誤差的總值,有一點聚類的感覺。比如這樣的數據集:

程序創建的樹結構就是:

{'spInd': 0, 'spVal': 0.48813000000000001, 'left': 1.0180967672413792, 'right': -0.044650285714285719}

在分類樹中最常用的是基尼指數:在分類問題中,假設有 \(K\) 個類,樣本點屬於第 \(k\) 類的概率為 \(p_k\),則概率分布的基尼指數定義為
\begin{align}
Gini(p) = \sum_{k=1}^K p_k(1-p_k) = 1- \sum_{k=1}^K p_k^2
\end{align}
基尼系數與熵的特性類似,也是不確定性的一種度量。對於樣本集合 \(D\),基尼指數為
\begin{align}
Gini(D) = 1- \sum_{k=1}^K\left( \frac{\lvert C_k \rvert }{\lvert D \rvert} \right)
\end{align}
其中 \(C_k\)\(D\) 中屬於樣本集合第 \(k\) 類的樣本子集, \(K\) 是類的個數。
 


剪枝

一棵樹如果節點過多,表明該模型可能對數據進行了“過擬合”。控制決策樹規模的方法稱為剪枝,一種是先剪枝, 一種是后剪枝。所謂先剪枝,實際上是控制決策樹的生長,后剪枝是指對完全生成的決策樹進行修剪。

先剪枝方法有:

  • 數據划分法。划分數據成訓練樣本和測試樣本,使用訓練樣本進行訓練,使用測試樣本進行樹生長檢驗
  • 閾值法。當某節點的信息增益小於某閾值時,停止樹生長
  • 信息增益的統計顯著性分析。從已有節點獲得的所有信息增益統計其分布,如果繼續生長得到的信息增益與該分布相比不顯著,則停止樹的生長

先剪枝的優缺點

  • 優點:簡單直接
  • 缺點:對於不回溯的貪婪算法,缺乏后效性考慮,可能導致樹提前停止

 

后剪枝方法有:

  • 減少分類錯誤修剪法。使用獨立的剪枝集估計剪枝前后的分類錯誤率,基於此進行剪枝
  • 最小代價與復雜性折中的剪枝。對剪枝后的樹綜合評價錯誤率和復雜性,決定是否剪枝
  • 最小描述長度准則。最簡單的樹就是最好的樹,對決策樹進行編碼,通過剪枝得到編碼最小的樹
  • 規則后剪枝。將訓練完的決策樹轉換成規則,通過刪除不會降低估計精度的前提下修剪每一條規則

后剪枝的優缺點

  • 優點:實際應用中有效
  • 缺點:數據量大時,計算代價較大

 
下面講述一種用於 CART 回歸樹的剪枝操作。一般使用后剪枝方法需要將數據集分成測試集和訓練集,C4.5 所用的剪枝操作還是一種特殊的后剪枝操作,不需要測試集。

剪枝操作前,首先指定參數,使得構建出的樹足夠大、足夠復雜,便於剪枝。接下來從上而下找到葉結點,用測試集來判斷將這些葉節點合並是否能降低測試誤差,如果是的話就合並。偽代碼如下:

基於已有的樹切分測試數據:
    如果存在任一子集是一棵樹,則在該子集遞歸剪枝過程
    計算將當前兩個葉節點合並后的誤差
    計算不合並的誤差
    如果合並會降低誤差的話,就將葉節點合並

 


模型樹

模型樹仍然采用二元切分,但葉節點不再是簡單的數值,取而代之的是一些線性模型。

考慮下圖中的數據,顯然兩條直線擬合效果更好。

對回歸樹稍作修改就可以變成模型樹。模型樹的生成樹關鍵在於誤差的計算。對於給定的數據集,應該先用線性的模型對它進行擬合,然后計算真實的目標值與模型預測值間的差值。最后將這些差值的平方求和就得到了所需要的誤差。

 

樹回歸優缺點

 

  • 優點:可以對復雜和非線性的數據建模
  • 缺點:結果不易理解
     

 


免責聲明!

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



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