1. 程式人生 > >決策樹CART與ID3,C4.5聯絡與區別

決策樹CART與ID3,C4.5聯絡與區別

CART與ID3和C4.5相同都由特徵選擇,樹的生成,剪枝組成。但ID3和C4.5用於分類,CART可用於分類與迴歸

CART是在給定輸入隨機變數X條件下輸出隨機變數Y的條件概率分佈,與ID3和C4.5的決策樹所不同的是,ID3和C4.5生成的決策樹可以是多叉的,每個節點下的叉樹由該節點特徵的取值種類而定,比如特徵年齡分為(青年,中年,老年),那麼改節點下可分為3叉。而CART為假設決策樹為二叉樹,內部結點特徵取值為”是”和”否”。左分支取值為”是”,有分支取值為”否”。這樣的決策樹等價於遞迴地二分每一個特徵,將輸入空間劃分為有限個單元,並在這些單元上預測概率分佈,也就是在輸入給定的條件下輸出條件概率分佈。

CART分類樹

特徵選擇

CART分類樹通過基尼指數選擇最優特徵,同時決定該特徵的最優二值切分點,而ID3和C4.5直接選擇最優特徵,不用劃分。

基尼指數

分類問題,假設有K個類,樣本點屬於第k個類概率為pk,則概率分佈的基尼指數定義為
這裡寫圖片描述
對於二類分離,樣本點屬於第一個類的概率p,基尼指數
這裡寫圖片描述
對於給定樣本集合D,基尼指數
這裡寫圖片描述
Ck是D中屬於第k類的樣本子集,K是類的個數。
如果樣本集合D根據特徵A是否取某一可能值a被分割為D1和D2兩部分。
(即在某一特徵多個取值中,取其一個將其分為”是”其他為”不是”)
這裡寫圖片描述
在特徵A下,集合D的基尼指數定義為
這裡寫圖片描述
基尼指數越大,樣本集合不確定性越大。

CART樹生成

(1) 設結點的訓練資料集為D,計算現有特徵對該資料集的基尼指數.此時,對於每個特徵,每次取其中一個每個可能取得值,根據樣本點對該值的測試結果為”是”或”否”將D分成2部分,並計算基尼指數.
(2) 在所有可能的特徵,以及他們所有可能的切分點中,選擇基尼指數最小的特徵,該選擇的特徵為最優特徵,該特徵中的切分點為最優切分點,依照最優特徵和最優切分點生成二叉樹,並把訓練資料集分配到子節點中。
(3)對兩個子節點遞迴呼叫 (1) (2) ,直至滿足停止條件
(4)生成CART決策樹。
停止條件是樣本個數小於預定閾值,或樣本基尼指數小於預定閾值,或沒有更多特徵。

而ID3,C4.5在(1) (2)處與CART不同,ID3計算資訊增益,C4.5計算資訊增益比

,首先求所有特徵的資訊增益或資訊增益比,其中計算的數值是針對每一個特徵,不將特徵劃分,而後以該特徵將樹延伸,在父節點確定的條件下,繼續對子節點求所有特徵的資訊增益,後在劃分。
CART則為求所有特徵下的所有切分點後進行比較來劃分。

CART樹剪枝

CART剪枝演算法分兩部,首先從生成演算法產生的決策數T0底端開始不斷剪枝,知道T0的根節點,形成子樹序列{T0,T1,T2…Tn};然後通過交叉驗證法在獨立的驗證資料集上對與子樹測試,從中選擇最優子樹。

接下來我們從ID3,C4.5一步步推出CART樹的剪枝

在ID3,C4.5中

決策樹的剪枝通過極小化決策樹的整體損失函式或者代價函式來求解。
決策樹通過經驗熵來生成。
設樹T的葉結點個數為|T|, t 是樹 T 的葉結點, 該葉結點上有 N(t) 個樣本點,其中 k 類的樣本點的個數為 N(tk) 個, k 為結果的類別, Ht(T) 為葉結點上經驗熵,則損失函式可定義為
這裡寫圖片描述
其中經驗熵為
這裡寫圖片描述
在損失函式中將第一項記作
這裡寫圖片描述

這裡寫圖片描述

C(T)表示模型對訓練資料的預測誤差,即模型對訓練資料的擬合程度,|T| 表示模型的複雜度,引數 a>=0 控制兩者直接的影響,較大的 a 促使選擇模型較簡單的樹,而小的則相反,a=0 意味指不考慮模型複雜度,只與擬合程度有關。
剪枝,當a確定時,選擇損失函式最小的模型,即損失函式最小的樹,為最好的樹。

從中我們可以看出一些關係,首先ID3,C4.5,中a的取值是固定的,即樹要剪枝首先我們要給出生成演算法給出的生成樹和一個固定的a值。
那麼當a不是固定的時候,則整個損失函式由預測誤差,a和模型複雜度共同決策。
而後從
這裡寫圖片描述
該式子中我們可以的得出C(T)作為模型的預測誤差的值,通過累加每一個葉結點(即T個葉結點)的預測誤差而得出C(T)。
這個結論對於CART同樣適用,因為CART預測誤差用的為基尼指數,但求和都是結點誤差和。

在CART剪枝中

CART剪枝分為剪枝成子樹序列,並通過交叉驗證選取最優子樹。

1.剪枝,成子樹序列

在剪枝過程中,計運算元樹的損失函式:
這裡寫圖片描述
其中,T為任意子樹C(T)為對訓練資料的預測誤差(如基尼指數)|T|為子樹的節點個數,a>=0為引數,Ca(T)為引數是a時子樹T的整體損失引數a權衡訓練資料的擬合程度和模型的複雜度
從上方a不是固定的時候,則整個損失函式由預測誤差,a和模型複雜度共同決策,得出a大的時候,最優子樹Ta偏小;當a小的時候,最優子樹Ta的樹較大,a=0時整體樹最優,a->∞時,根結點組成的單節點樹最優。
且認為不同的a值,可以確定一棵不同的最優化的樹,或者說一個區間內的a值可以確定一顆最優化的樹
即將a不斷增大,利用a生成Ta這棵最優子樹
這裡寫圖片描述
為了得到所有的可能生成的最優化樹{T0,T1,T2,…Tn},我們須從底向上,每次進行一次剪枝,通過得到的樹認為是最優化樹反推a
具體的,從整體樹T0開始剪枝,對於T0的任意內部結點t,結點下有若干子節點,把t下的子樹的若干葉節點稱為Tt。
剪枝後(即t下的子樹減去後,t變為葉節點)的損失函式
這裡寫圖片描述
剪枝前的損失函式
這裡寫圖片描述
注意這裡的損失函式都是某個葉結點的損失函式,但為什麼可以只求葉節點的損失函式,因為在上面的分析ID3,C4.5中得出了C(T)作為模型的預測誤差的值,通過累加每一個葉結點(即T個葉結點)的預測誤差而得出C(T)。因此單獨求某個葉結點並沒有什麼問題。

現在就是求解a,a如何求解?
當a=0或充分小時,不等式
這裡寫圖片描述
因為葉結點越多預測誤差應該越小。
當a不斷增大時,在某個a點有
這裡寫圖片描述
當a再增大時,不等式反向。因此只要
這裡寫圖片描述
Tt與t有相同的損失函式,而t結點少,因此t比Tt更可取,對Tt進行剪枝。
接下來對T0這棵整體樹中的每一個結點t,計算

這裡寫圖片描述

這個g(t)表示剪枝後的整體損失函式減少程度,實際上可以看為是否剪枝的閾值,對於某個結點當他的引數a=g(t)時,剪和不剪總體損失函式時一樣的。如果a增大則不剪的整體損失函式就大於剪去的。即a大於g(t)該剪,剪後會使整體損失函式減小,而a小於g(t)則不剪,剪後會使整體損失函式增大。
這樣a緩慢增大,隨著a的增大,在一個區間內可確定一棵最優的剪枝樹

而我們求每棵樹,並認為他是最優剪枝樹。

g(t)則代表每一棵樹的a的最優區間內的最小值

即在T0中剪去g(t)最小的Tt,得到的子樹為T1,同時將最小的g(t)設為a1,那

麼T1為區間[a1,a2)的最優子樹。

如此這樣下去,將所有可能的樹的情況剪枝直到根節點,在這個過程中則

會不斷增加a,產生新的區間,最後a的所有可能的g(t)取值全部確定。

2.通過交叉驗證選取最優子樹

具體的利用獨立的驗證資料集,測試子樹序列T0,T1,…Tn中各棵子樹的平

方誤差或基尼指數。平方誤差或基尼指數最小的決策數被認為是最優決策

數,因為我們每確定一棵子樹就會確定其引數a值,所以最優子樹Tk確定,對應ak也確定,即得到最優決策數Ta。

參考文獻: