決策樹(ID3,C4.5,CART算法具體過程)

 

1.介紹

1.1 定義

決策樹模型是一種描述對實例進行分類的樹形結構,決策樹由結點和有向邊組成。其中結點有兩種類型:內部結點和葉節點。內部結點表示一個特徵或屬性,葉節點表示一個類。

在分類問題中,就表示基於特徵對實例進行分類的過程。用決策樹分類,從根節點開始,對實例的某一特徵進行測試,根據測試結果將實例分配到其子節點。每一個子節點對應着特徵的一個取值。如此遞歸的對實例進行測試分配,直至達到葉節點,最後將實例分到葉節點的類中。決策樹的主要優點是模型具有可讀性、分類速度快。

它可以認爲是if-else規則的集合,也可以認爲是定義在特徵空間與類空間上的條件概率分佈。學習時利用訓練數據根據損失函數最小化的原則建立決策樹模型,預測時,對新的數據利用決策樹進行分類。

決策樹學習通常包含3個步驟:1.特徵選擇 2.決策樹的生成 3.決策樹的修剪。

1.2 決策樹與條件概率分佈

決策樹還表示給定特徵條件下類的條件概率分佈,這一條件概率分佈定義在特徵空間的一個劃分上,將特徵空間劃分爲互不相交的單元區域,並在每個單元定義一個類的概率分佈就構成了一個條件概率分佈。決策樹的一條路徑對應於劃分的一個單元。決策樹所表示的條件概率分佈由各個單元給定條件下類的條件概率分佈組成。假設X爲所表示特徵的隨機變量,Y爲表示類的隨機變量,那麼這個條件概率分佈可以表示爲P(Y|X),X的取值範圍爲給定劃分下單元的集合,Y取值於類的集合。

1.3 決策樹的學習

決策樹學習的目標是根據給定的訓練數據集合構建一個決策樹模型,使它能夠對實例進行正確的分類。

決策樹學習的本質是從訓練數據中歸納出一組分類規則,而與訓練數據不相矛盾的決策樹(即能夠對訓練數據進行正確分類的)可能有多個,也可能一個也沒有。決策樹學習是由訓練數據集估計條件概率模型,我們選擇的條件概率模型應該不僅對訓練數據由很好的擬合,而且對未知數據由很好的預測(好的泛化能力)。

決策樹學習的策略是以損失函數爲目標函數的最小化,損失函數通常是正則化的極大似然函數。當損失函數確定以後,學習問題就變爲在損失函數意義下選擇最優決策樹的問題。選擇最優決策樹是NP難問題,所以通常採用啓發式方法,近似求解這一最優化問題,這樣的得到的決策樹是次最優的。

決策樹學習算法通常是一個遞歸選擇最優特徵,並根據該特徵對訓練數據進行分割,使得對各個子數據集有一個在當前條件下最好的分類。若這些子集已經能夠被基本正確分類,就將這些分到所對應的葉節點中去,若還不能夠正確分類,就對這些子集繼續選擇最優特徵,對其進行分割構建相應的結點。如此遞歸下去,直至所有訓練數據子集都被正確分類或者直到沒有合適的特徵爲止。最後每個子集都被分到葉節點上有了明確的類別,就生成了一顆決策樹。

構建樹的停止條件:

1.當前結點所有樣本都屬於同一類別。

2.當前結點的所有屬性值都相同,無法根據屬性對數據進行劃分。

3.結點爲空。

但是這種方法可能會產生過擬合,我們需要對已經生成的樹自下而上進行剪枝,去掉過於細分的葉節點,從而使它具有更好的泛化能力。如果特徵數量很多,也可以在決策樹學習開始的時候進行特徵選擇,只留下對訓練數據有足夠分類能力的特徵。

決策樹表示一個條件概率分佈,深淺不同的決策樹對應着不同複雜度的概率模型。決策樹的生成只考慮局部最優對應於模型的局部選擇,相對地,剪枝對應於模型的全局選擇,考慮全局最優

2. 特徵選擇

特徵選擇的準則是信息增益(ID3),信息增益比(C4.5)或基尼指數(CART)。特徵選擇是決定用哪個特徵來劃分特徵空間,其準則是選擇能夠使各個子集在當前條件下具有最好的劃分的特徵,信息增益能夠很好地表示這一直觀的準則。

2.1 信息增益

決策樹學習應用信息增益準則選擇特徵,特徵A對訓練數據集D的信息增益g(D,A),定義爲集合D的經驗熵與在給定特徵A條件下D的經驗條件熵H(D|A)之差,即:

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

而什麼是呢?在信息論與概率統計中,熵是表示隨機變量不確定性的度量,X是一個取值爲有限個的離散隨機變量,其概率分佈爲,  則隨機變量X的熵的定義爲:

熵取值越大,隨機變量不確定性越大。熵取值越小,數據越純。可以看出,當概率值都相等時,熵的取值最大,最不穩定。當概率取值p_i=1時,熵的值爲零。

條件熵H(Y|X)表示在已知隨機變量X的條件下隨機變量Y的不確定性,定義爲給定X條件下Y的條件概率分佈的熵對X的數學期望:

而當熵和條件熵中的概率由數據估計(特別是極大似然估計)得到時,所對應的就爲經驗熵與經驗條件熵。

信息增益的解釋:

信息增益表示得知特徵X的信息而使得類Y的信息不確定減少的程度。一般地,熵H(Y)與條件熵H(Y|X)之差稱爲互信息,信息增益等價於訓練數據集中類與特徵的互信息。經驗熵H(D)表示對數據集D進行劃分的不確定性,而經驗條件熵H(D|A)表示在特徵A給定的條件下對數據集D進行分類的不確定性。所以它們的差,即信息增益就表示使用特徵A對數據集D進行分類的不確定性減少的程度。所以我們就要選擇能夠使數據的不確定程度減少最多的特徵,即信息增益最大的特徵。顯然,對於數據集D而言,不同的特徵往往具有不同的信息增益,信息增益大的特徵具有更強的分類能力。


算法2.1 :信息增益的算法:

(1)計算數據集D的經驗熵H(D):

 

(2)計算特徵A對數據集D的經驗條件熵H(D|A):

(3)計算信息增益:

其中訓練數據集爲D,|D|爲樣本容量。設有K個類爲屬於類的樣本數。設特徵A有n個不同的取值,根據特徵A的取值將D劃分爲n個子集的樣本的個數。記子集中屬於類的樣本的集合爲的樣本個數。


3. 決策樹的生成

3.1 ID3算法

ID3算法的核心是在決策樹的各個結點上應用信息增益準則選擇特徵,遞歸的構建決策樹。具體爲:從根節點開始,對結點計算所有可能的特徵的信息增益,選擇信息增益最大的特徵作爲該節點的特徵,根據該特徵的不同區直建立子節點;在對子節點遞歸地調用以上方法,直到所有特徵的信息增益均很小或者沒有特徵可以選擇爲止,最後得到一個決策樹。ID3相當於用極大似然法進行概率模型的選擇。

3.2 C4.5算法

C4.5算法與ID3算法相似,C4.5算法對ID3算法進行了改進。

以信息增益最爲劃分訓練數據集的準則存在的問題?

信息增益偏向於選擇取值較多的特徵進行劃分。比如學號這個特徵,每個學生都有一個不同的學號,如果根據學號對樣本進行分類,則每個學生都屬於不同的類別,這樣是沒有意義的。

C4.5在生成過程中,用信息增益比來選擇特徵,可以校正這個問題。

特徵A對訓練數據集D的信息增益比定義爲其信息增益g(D,A)與訓練數據集D關於特徵A的值的熵之比,即

其中,n是特徵A取值的個數。(當特徵A的取值越多時,特徵A的熵越大)。

4. 決策樹的剪枝

決策樹生成算法遞歸地產生決策樹,直到不能繼續下去爲止,這樣產生的樹往往對訓練數據的分類很準確,但對未知的測試數據的分類卻沒有那麼準確,容易出現過擬合現象。原因在於學習時完全考慮的是如何提高對訓練數據的正確分類,從而構建出過於複雜的決策樹。

解決這個問題的方法稱爲剪枝,即對已生成的樹進行簡化。具體地,就是從已生成的樹熵裁剪掉一些子樹或葉節點,並將其根節點或父節點作爲新的葉節點。

決策樹的剪枝通過極小化損失函數整體來實現。設樹T的葉節點個數爲|T|,t是樹T的葉節點,該葉節點上有個樣本點,其中k類的樣本點有個,k=1,2,...,K,爲葉節點t上的經驗熵,爲參數,則決策樹學習的損失函數可以定義爲

其中經驗熵爲:

中第一項記作,則.

是模型與訓練數據的擬合程度,而表示模型複雜度。參數控制兩者之間的影響,較大的促使選擇較簡單的模型,較小的促使選擇較複雜的模型。

對於固定的\alpha,一定存在使得損失函數C_{\alpha }(T)最小的子樹,將其表示爲T_{\alpha }T_{\alpha }在損失函數C_{\alpha }(T)最小的意義下是最優的。容易驗證這樣的子樹是唯一的。當\alpha大時,最優子樹T_{\alpha }偏小,相反,當\alpha小時,最優子樹T_{\alpha }偏大。極端情況時,當\alpha=0時,整體樹是最優的,即只考慮模型與訓練數據的擬合程度,不考慮模型的複雜度。當\alpha \rightarrow \propto時,根節點組成的單節點樹是最優的。

該損失函數的極小化等價於正則化的極大似然估計。所以利用損失函數最小化原則進行剪枝就是用正則化的極大似然估計進行模型選擇。

可以看出,決策樹的生成只考慮了通過提高信息增益對訓練數據進行更好的擬合,而剪枝通過優化損失函數還考慮了減小模型複雜度。


算法4.1:樹的剪枝算法:

(1)根據生成的樹T計算每個結點的經驗熵。

(2)遞歸地從樹的葉節點向上回縮。設一組葉節點回縮到其父結點之前與之後的整體樹分別爲,其對應的損失函數分別是,如果:

則進行剪枝,即將該父結點變爲新的葉節點。

(3)返回(2),直至不能繼續爲止,得到損失函數最小的子樹


5. CART算法

CART(classification and regression tree):分類與迴歸樹,既可以用於分類也可以用於迴歸。

CART實在給定輸入隨機變量X條件下輸出隨機變量Y的條件概率分佈的學習方法。CART假設決策樹是二叉樹,這樣的決策樹等價於遞歸地二分每個特徵,將輸入空間即特徵空間劃分爲有限個單元,並在這些單元上確定預測的概率分佈,也就是在輸入給定的條件下輸出的條件概率分佈。

5.1 基尼指數

決策樹的生成就是遞歸地構建二叉樹的過程,對迴歸樹用平方誤差最小準則,對分類樹用基尼指數最小化準則。在這裏我將主要介紹分類樹。對於給定的樣本集合D,其基尼指數爲:

=1-\sum_{k=1}^{K}p_k^2 = \sum_{k=1}^{K}p_k(1-p_k)

Gini(D)表示集合D中隨即變量的不確定性程度,其中是D中屬於第k類的樣本子集,K是類的個數。基尼指數越小表示數據的純度越高,反之其值越大,樣本集合的不確定性也就越大,與熵類似。當p_1 = p_2= ... =p_K=\frac{1}{K}時,G(p)取得最大值,此時隨機變量最不確定。

需要說明的是CART是個二叉樹,也就是當使用某個特徵劃分樣本集合只有兩個集合:1. 等於給定的特徵值 的樣本集合D1 , 2 不等於給定的特徵值 的樣本集合D2,實際上是對擁有多個取值的特徵的二值處理。

舉個例子:

    假設現在有特徵 “學歷”,此特徵有三個特徵取值: “本科”,“碩士”, “博士”,

    當使用“學歷”這個特徵對樣本集合D進行劃分時,劃分值分別有三個,因而有三種劃分的可能集合,劃分後的子集如下:

    1.     劃分點: “本科”,劃分後的子集合 : {本科},{碩士,博士}
    2.     劃分點: “碩士”,劃分後的子集合 : {碩士},{本科,博士}
    3.     劃分點: “博士”,劃分後的子集合 : {博士},{本科,碩士}

          對於上述的每一種劃分,都可以計算出基於 劃分特徵= 某個特徵值 將樣本集合D劃分爲兩個子集的純度:

             

     因而對於一個具有多個取值(超過2個)的特徵,需要計算以每一個取值作爲劃分點,對樣本D劃分之後子集的純度Gini(D,Ai),(其中Ai 表示特徵A的可能取值)。

     然後從所有的可能劃分的Gini(D,Ai)中找出Gini指數最小的劃分,這個劃分的劃分點,便是使用特徵A對樣本集合D進行劃分的最佳劃分點。

 


算法5.1:CART生成算法

(1)計算現有特徵對數據集的基尼指數,對每一個特徵A,對其可能取的每個值a,計算A=a時的基尼指數。

(2)在所有可能的A以及它所有可能的切分點a中,選擇基尼指數最小的特徵及其對應的切分點作爲最優特徵與最優切分點。根據其將數據分配到兩個子節點中去。

(3)對兩個子節點遞歸地調用(1)(2),直至滿足停止條件。

算法的停止條件是節點中的樣本個數小於閾值,或樣本集的基尼指數小於預定閾值,或者沒有更多的特徵。


5.2 CART剪枝

剪枝算法由兩部組成:首先從生成算法產生的決策樹T_{0}底端開始不斷剪枝,直到T_{0}的根節點,形成一個子樹序列\{T_{0},T_{1},...,T_{n}\},然後通過交叉驗證法在獨立的驗證數據集上對子集序列進行測試,從中選擇最優的子樹。

1.剪枝:形成一個子樹序列

剪枝的過程中,計算子樹的損失函數:

T爲任一子樹,C(T)爲對訓練數據的預測誤差。用遞歸的方式對樹進行剪枝,將\alpha從小增大,0=\alpha _{0}<\alpha _{1}<...<\alpha _{n}<+\propto,產生一系列的區間\[\alpha _{i},\alpha _{i+1}\),i=0,1,...,n;對應着剪枝得到的最優子樹序列\{T_{0},T_{1},...,T_{n}\},i=0,1,...,n。序列中的子樹爲嵌套的。

具體過程爲,從整體樹T_{0}開始剪枝,對T_{0}中的任意內部結點t,以t爲單節點樹的損失函數爲:

C_{\alpha }(t)=C_{t}+\alpha

而以t爲根節點的子樹T_{t}的損失函數爲:

C_{\alpha }(T_{t})=C(T_{t})+\alpha|T_{t}|

\alpha=0或充分小時,顯然有不等式

C_{\alpha }(T_{t})<C_{\alpha }(t)

\alpha逐漸增大時,總有在某一個\alpha處有:

C_{\alpha }(T_{t})=C_{\alpha }(t)

\alpha繼續增大時,不等式反向。所以當\alpha =\frac{C(t)-C(T_{t})}{|T_{t}|-1},T_{t}與t有相同的損失函數值,而t有更少的節點數,所以t更可取,此時可以對T_{t}進行剪枝。所以,我們對T_{0}中的每一個內部結點t,計算g(t)=\frac{C(t)-C(T_{t})}{|T_{t}|-1},它表示剪枝後整體損失函數減少的程度。我們選擇g(t)最小的結點t,在T_{0}中減去該T_{t},,並對葉節點t以多數表決法決定其類,裁剪後的子樹作爲T_{1},同時將該g(t)設爲\alpha _{1},T_{1}\[\alpha _{1},\alpha _{2}\)的最優子樹。如此剪枝下去,直到得到根節點。

2.在剪枝得到的子樹序列\{T_{0},T_{1},...,T_{n}\}中通過交叉驗證選擇最優子樹T_{\alpha }.

利用獨立的驗證數據集,測試子樹序列中各棵子樹的平方誤差或基尼指數,最小的決策樹被認爲是最優的決策樹。而且由於每一個子樹都對應着一個參數\alpha。所以當最優子樹確定後,最優的參數\alpha也就確定了,從而得到最有決策樹T_{\alpha }

 

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