決策樹-Cart生成和剪枝算法

***************CART算法概述**********************

  Cart算法類似於ID3算法,其將特徵分類爲按GINI係數,找到該特徵下的一個最優節點進行分類,該特徵被分爲2個類別,比如一個類別中有{學生,老師,工人},則選擇分裂節點可能爲學生,老師或工人,得到的結果就可能有[{學生},{老師,工人}],[{老師},{學生,工人}],[{工人},{老師,學生}],我們對這3個分裂而來的類別,計算其基尼係數,具體公式稍後介紹。選擇基尼係數最小的作爲該特徵的切分點,就這樣,依次對所有特徵做如上處理,找到其中最小基尼係數的特徵,以它作爲分裂屬性,再在剩下的特徵中遞歸以上步驟,終止條件:沒有更多特徵,或者可以用卡方檢驗,檢驗當前特徵與分類結果之間是否獨立,如果獨立,則算法結束。


****************GINI係數******************************

 樣本集合D的基尼指數:

,這裏有錯誤,要減去pi的平方,同樣後面也一樣

K爲D中分類個數,Ck爲第k類在樣本D中的個數

樣本集合對特徵A的基尼係數

之所以只有D1,D2如上面所講,特徵A按某個最優節點會將特徵A只劃分爲2個空間



在這裏,我們將基尼指數與信息熵做類比,兩者的共性有很多,都表示樣本集合的不確定性

樣本集合C的信息熵


其中P(Ci)和基尼係數中的pi很相似,都表示各個類別所佔總體的比例,也就是求出每個分類出現的概率

樣本集合C對A的信息熵


其中n爲A特徵下的各個特徵值,必須爲離散的,如果是連續的需要離散化,Ci爲A第i個特徵值所構成的樣本集合

接着我們就能求得A特徵的信息增益

g(C,A) = H(C) - H(C|A)

對每個特徵都求出其信息增益,選擇最大的那個特徵作分裂,然後遞歸執行,直至所有特徵分裂完畢


************************cart算法步驟*****************************

描述:

輸入:

訓練數據D,停止計算的條件

輸出:

CART決策樹

解:

根據訓練數據集,從根節點開始,遞歸的對每個節點進行以下操作來構建二叉決策樹。

1,從節點的訓練數據集D計算現有特徵對該數據集的基尼指數(Gini)。此時,對每一個特徵A,對其可能取得每一個值a,根據“樣本A = a的結果是‘是’或‘否’”將D分割成D1,D2兩部分,計算A = a 時的Gini。

2,在所有可能的特徵A以及它們所有可能的切分點a中選擇Gini最小的特徵及其對應的切分點作爲最優特徵和最優切分點,然後依據最優特徵與最優切分點從現節點生成兩個子結點,最後將訓練數據集依據特徵分配到兩個子結點中去。

3,對兩個子結點遞歸的調用上面兩步直至滿足停止條件。

4,生成CART決策樹。

PS:算法的停止條件是“節點的樣本個數 < 預定閾值”或“樣本集合的Gini < 預定閾值(樣本基本屬於同一         類)”或“無更多特徵”。


關於終止條件:

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


*********************Cart剪枝****************************

剪枝

當分類迴歸樹劃分得太細時,會對噪聲數據產生過擬合作用。因此我們要通過剪枝來解決。剪枝又分爲前剪枝和後剪枝:前剪枝是指在構造樹的過程中就知道哪些節點可以剪掉,於是乾脆不對這些節點進行分裂,在N皇后問題和揹包問題中用的都是前剪枝,上面的χ2方法也可以認爲是一種前剪枝;後剪枝是指構造出完整的決策樹之後再來考查哪些子樹可以剪掉。

在分類迴歸樹中可以使用的後剪枝方法有多種,比如:代價複雜性剪枝、最小誤差剪枝、悲觀誤差剪枝等等。這裏我們只介紹代價複雜性剪枝法。

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

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

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

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

p(t)是節點t上的數據佔所有數據的比例。

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

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

已知所有的數據總共有60條,則節點t4的節點誤差代價爲:

子樹誤差代價爲:

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

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

參考:http://www.cnblogs.com/ldphoebe/p/4934113.html


******************cart與ID3區別*********************

①Cart算法改進了ID3中分裂特徵的選擇容易偏向特徵取值多的特徵

②CART算法對特徵是離散的或連續的都適用



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