1. 程式人生 > >資料探勘十大經典演算法--CART: 分類與迴歸樹

資料探勘十大經典演算法--CART: 分類與迴歸樹

一、決策樹的型別 
在資料探勘中,決策樹主要有兩種型別:

分類樹 的輸出是樣本的類標。
迴歸樹 的輸出是一個實數 (例如房子的價格,病人呆在醫院的時間等)。

術語分類和迴歸樹 (CART) 包含了上述兩種決策樹, 最先由Breiman 等提出.分類樹和迴歸樹有些共同點和不同點—例如處理在何處分裂的問題。

分類迴歸樹(CART,Classification And Regression Tree)也屬於一種決策樹,之前我們介紹了基於ID3和C4.5演算法的決策樹。這裡只介紹CART是怎樣用於分類的。

分類迴歸樹是一棵二叉樹,且每個非葉子節點都有兩個孩子,所以對於第一棵子樹其葉子節點數比非葉子節點數多1。

CART與ID3區別:
CART中用於選擇變數的不純性度量是Gini指數;
如果目標變數是標稱的,並且是具有兩個以上的類別,則CART可能考慮將目標類別合併成兩個超類別(雙化);
如果目標變數是連續的,則CART演算法找出一組基於樹的迴歸方程來預測目標變數。

二、構建決策樹

構建決策樹時通常採用自上而下的方法,在每一步選擇一個最好的屬性來分裂。 "最好" 的定義是使得子節點中的訓練集儘量的純。不同的演算法使用不同的指標來定義"最好"。本部分介紹一中最常見的指標。

有4中不同的不純度量可以用來發現CART模型的劃分,取決於目標變數的型別,對於分類的目標變數,可以選擇GINI,雙化或有序雙化;
對於連續的目標變數,可以使用最小二乘偏差(LSD)或最小絕對偏差(LAD)。

下面我們只講GINI指數。
GINI指數:
1、是一種不等性度量;
2、通常用來度量收入不平衡,可以用來度量任何不均勻分佈;
3、是介於0~1之間的數,0-完全相等,1-完全不相等;
4、總體內包含的類別越雜亂,GINI指數就越大(跟熵的概念很相似)

CART分析步驟

1、從根節點t=1開始,從所有可能候選S集合中搜索使不純性降低最大的劃分S*,然後,使用劃分S*將節點1(t=1)劃分成兩個節點t=2和t=3;
2、在t=2和t=3上分別重複劃分搜尋過程。

基尼不純度指標
在CART演算法中, 基尼不純度表示一個隨機選中的樣本在子集中被分錯的可能性。基尼不純度為這個樣本被選中的概率乘以它被分錯的概率。當一個節點中所有樣本都是一個類時,基尼不純度為零。

假設y的可能取值為{1, 2, ..., m},令fi是樣本被賦予i的概率,則基尼指數可以通過如下計算:

例如:


上例是屬性有8個,每個屬性又有多少離散的值可取。在決策樹的每一個節點上我們可以按任一個屬性的任一個值進行劃分。比如最開始我們按:

1)表面覆蓋為毛髮和非毛髮

2)表面覆蓋為鱗片和非鱗片

3)體溫為恆溫和非恆溫

等等產生當前節點的左右兩個孩子。下面我們按GINI指數劃分有:

GINI指數

總體內包含的類別越雜亂,GINI指數就越大(跟熵的概念很相似)。比如體溫為恆溫時包含哺乳類5個、鳥類2個,則:

體溫為非恆溫時包含爬行類3個、魚類3個、兩棲類2個,則

所以如果按照“體溫為恆溫和非恆溫”進行劃分的話,我們得到GINI的增益(類比資訊增益):

最好的劃分就是使得GINI_Gain最小的劃分。

終止條件

一個節點產生左右孩子後,遞迴地對左右孩子進行劃分即可產生分類迴歸樹。這裡的終止條件是什麼?什麼時候節點就可以停止分裂了?直觀的情況,當節點包含的資料記錄都屬於同一個類別時就可以終止分裂了。這只是一個特例,更一般的情況我們計算χ2值來判斷分類條件和類別的相關程度,當χ2很小時說明分類條件和類別是獨立的,即按照該分類條件進行分類是沒有道理的,此時節點停止分裂。注意這裡的“分類條件”是指按照GINI_Gain最小原則得到的“分類條件”。

假如在構造分類迴歸樹的第一步我們得到的“分類條件”是:體溫為恆溫和非恆溫。此時:


三、剪枝

決策樹為什麼(WHY)要剪枝?原因是避免決策樹過擬合(Overfitting)樣本。前面的演算法生成的決策樹非常詳細並且龐大,每個屬性都被詳細地加以考慮,決策樹的樹葉節點所覆蓋的訓練樣本都是“純”的。因此用這個決策樹來對訓練樣本進行分類的話,你會發現對於訓練樣本而言,這個樹表現完好,誤差率極低且能夠正確得對訓練樣本集中的樣本進行分類。訓練樣本中的錯誤資料也會被決策樹學習,成為決策樹的部分,但是對於測試資料的表現就沒有想象的那麼好,或者極差,這就是所謂的過擬合(Overfitting)問題。Quinlan教授試驗,在資料集中,過擬合的決策樹的錯誤率比經過簡化的決策樹的錯誤率要高。

怎麼剪枝

現在問題就在於,如何(HOW)在原生的過擬合決策樹的基礎上,生成簡化版的決策樹?可以通過剪枝的方法來簡化過擬合的決策樹。

剪枝可以分為兩種:預剪枝(Pre-Pruning)和後剪枝(Post-Pruning),下面我們來詳細學習下這兩種方法:
PrePrune:預剪枝,及早的停止樹增長,方法可以參考見上面樹停止增長的方法。
PostPrune:後剪枝,在已生成過擬合決策樹上進行剪枝,可以得到簡化版的剪枝決策樹。
其實剪枝的準則是如何確定決策樹的規模,可以參考的剪枝思路有以下幾個:
1:使用訓練集合(Training Set)和驗證集合(Validation Set),來評估剪枝方法在修剪結點上的效用
2:使用所有的訓練集合進行訓練,但是用統計測試來估計修剪特定結點是否會改善訓練集合外的資料的評估效能,如使用Chi-Square(Quinlan,1986)測試來進一步擴充套件結點是否能改善整個分類資料的效能,還是僅僅改善了當前訓練集合資料上的效能。
3:使用明確的標準來衡量訓練樣例和決策樹的複雜度,當編碼長度最小時,停止樹增長,如MDL(Minimum Description Length)準則。

1、Reduced-Error Pruning(REP,錯誤率降低剪枝)
該剪枝方法考慮將書上的每個節點作為修剪的候選物件,決定是否修剪這個結點有如下步驟組成:
1:刪除以此結點為根的子樹
2:使其成為葉子結點
3:賦予該結點關聯的訓練資料的最常見分類
4:當修剪後的樹對於驗證集合的效能不會比原來的樹差時,才真正刪除該結點
因為訓練集合的過擬合,使得驗證集合資料能夠對其進行修正,反覆進行上面的操作,從底向上的處理結點,刪除那些能夠最大限度的提高驗證集合的精度的結點,直到進一步修剪有害為止(有害是指修剪會減低驗證集合的精度)
REP是最簡單的後剪枝方法之一,不過在資料量比較少的情況下,REP方法趨於過擬合而較少使用。這是因為訓練資料集合中的特性在剪枝過程中被忽略,所以在驗證資料集合比訓練資料集合小的多時,要注意這個問題。
儘管REP有這個缺點,不過REP仍然作為一種基準來評價其它剪枝演算法的效能。它對於兩階段決策樹學習方法的優點和缺點提供了了一個很好的學習思路。由於驗證集合沒有參與決策樹的建立,所以用REP剪枝後的決策樹對於測試樣例的偏差要好很多,能夠解決一定程度的過擬合問題。
 
2、Pessimistic Error Pruning(PEP,悲觀剪枝)
先計算規則在它應用的訓練樣例上的精度,然後假定此估計精度為二項式分佈,並計算它的標準差。對於給定的置信區間,採用下界估計作為規則效能的度量。這樣做的結果,是對於大的資料集合,該剪枝策略能夠非常接近觀察精度,隨著資料集合的減小,離觀察精度越來越遠。該剪枝方法儘管不是統計有效的,但是在實踐中有效。
PEP為了提高對測試集合的預測可靠性,PEP對誤差估計增加了連續性校正(Continuity Correction)。PEP方法認為,如果:

成立,則Tt應該被剪枝,

上式中:


其中,e(t)為結點t出的誤差;i為覆蓋Tt的葉子結點;Nt為子樹Tt的葉子樹;n(t)為在結點t處的訓練集合數量。PEP採用自頂向下的方式,如果某個非葉子結點符合上面的不等式,就裁剪掉該葉子結點。該演算法被認為是當前決策樹後剪枝演算法中經度比較高的演算法之一,但是餓存在有缺陷。首先,PEP演算法是唯一使用Top-Down剪枝策略,這種策略會導致與先剪枝出現同樣的問題,將該結點的某子節點不需要被剪枝時被剪掉;另外PEP方法會有剪枝失敗的情況出現。
雖然PEP方法存在一些侷限性,但是在實際應用中表現出了較高的精度,。兩外PEP方法不需要分離訓練集合和驗證機和,對於資料量比較少的情況比較有利。再者其剪枝策略比其它方法相比效率更高,速度更快。因為在剪枝過程中,樹中的每顆子樹最多需要訪問一次,在最壞的情況下,它的計算時間複雜度也只和非剪枝樹的非葉子節點數目成線性關係。

Cost-Complexity Pruning(CCP、代價複雜度)
CCP方法包含兩個步驟:
1:從原始決策樹T0開始生成一個子樹序列{T0、T1、T2、...、Tn},其中Ti+1是從Ti總產生,Tn為根節點
2:從子樹序列中,根據樹的真實誤差估計選擇最佳決策樹。

對於分類迴歸樹中的每一個非葉子節點計算它的表面誤差率增益值α。

是子樹中包含的葉子節點個數;

是節點t的誤差代價,如果該節點被剪枝;

r(t)是節點t的誤差率;

p(t)是節點t上的資料佔所有資料的比例。

是子樹Tt的誤差代價,如果該節點不被剪枝。它等於子樹Tt上所有葉子節點的誤差代價之和。

比如有個非葉子節點t4如圖所示:

比如有個非葉子節點t4如圖所示:

已知所有的資料總共有60條,則節點t4的節點誤差代價為:

子樹誤差代價為:

以t4為根節點的子樹上葉子節點有3個,最終:

找到α值最小的非葉子節點,令其左右孩子為NULL。當多個非葉子節點的α值同時達到最小時,取最大的進行剪枝。

剪枝過程特別重要,所以在最優決策樹生成過程中佔有重要地位。有研究表明,剪枝過程的重要性要比樹生成過程更為重要,對於不同的劃分標準生成的最大樹(Maximum Tree),在剪枝之後都能夠保留最重要的屬性劃分,差別不大。反而是剪枝方法對於最優樹的生成更為關鍵。