決策樹(ID3、C4.5、CART)


ID3決策樹

ID3決策樹分類的根據是樣本集分類前后的信息增益。

 

假設我們有一個樣本集,里面每個樣本都有自己的分類結果。

而信息熵可以理解為:“樣本集中分類結果的平均不確定性”,俗稱信息的純度。

即熵值越大,不確定性也越大。

 

不確定性計算公式

假設樣本集中有多種分類結果,里面某一種結果的“不確定性”計算公式如下

 

其中

x:為按照某特征分類后的第x種分類結果

p(x):表示該分類結果樣本集在總樣本集中的所占比例。

Dx:表示樣本結果為x的樣本數量。

D:表示樣本的總數量

可看出某一種分類結果在總樣本集中所占比例越少,其“不確定性”也越大。

 

信息熵計算公式

樣本集的熵,就是他所有分類結果的平均不確定性,即所有分類結果不確定性求期望。公式如下:

 

說白了,就是算出整個樣本集中每一個分類結果的不確定性,然后求一個期望值,就作為這整個樣本集的熵值。

 

信息熵增益

熵越大表示事件變數越多,我們要做的就是每一次分類都讓事件集變的最穩定。所以當我們選擇某一個特征進行分類后,樣本集分類前后的熵的減小量就是熵的增益。

ID3算法的核心就是計算按照每一種特征分類后,其熵差大小,選擇能使熵差最大的特征作為分類特征。

分類前的熵就是集群整個的熵。

分類后的熵其實是所有分類后的小樣本集的熵的期望。

 

ID3算法缺陷

1、抗噪聲性差,如果數據樣本數量太少或噪聲太大,就會產生過擬合的問題。

樣本少,其樹的構成基本上就是為少數樣本量身定做的樹,如果噪聲太大,或樣本少且有噪聲的話,很多樹枝都是噪聲擬合出來的。

2、在選擇最優特征時,很容易傾向於選擇“特征值種類較多”的特征,作為分類特征。

我們舉個極端點的例子,假設有100個樣本集,現在有一個特征其數值種類也是100,如果按該特征分類,就能把這個樣本集分成100份,每份一個樣本。在用ID3算法做決策樹時,肯定會選擇這個特征作為第一個最優特征,因為這個特征分出來的樣本集每一個純度都是最高。

3、無法處理特征值為連續型數據的特征。(不過可以考慮把連續型數據轉化成離散型數據)

即,可以處理像性別特征、boolen特征等離散型特征,但沒法處理特征值在某個區間內可以任意取值的特征,如身高特征、年齡特征。

 

C4.5決策樹

針對上面說的ID3算法的第二個缺點“最優特征選擇傾向於特征種類較多的特征”。

我們先來看下特征種類較多時,分類會發生什么。

 

假設都是均分100個樣本,

特征值有2種的特征會把樣本集分成50和50.

特征值為4種的特征會把樣本集分成25、25,25,25.

可見特征值越多,就會產生越多的“小數目”樣本集,而小數目樣本集在分類效果上是不如大樣本集好的(如過擬合、抗噪差等問題),所以對於某特征分類后會產生“小數目”樣本集的分類后的熵,我們需要有一個懲罰值,即:分類后產生的樣本集越小,它的熵值也要懲罰性的增大。

這樣雖然ID3算法中會因為很多分類后的小數量樣本集而產生低值的期望熵,但做懲罰值處理后,熵值就會平衡性的增大。

 

信息增益率

在C4.5中懲罰小數量樣本集的做法是,

在根據某特征分類,並計算出分類前后的熵差后,再計算該特征的懲罰值,用該分類特征的熵差除以懲罰值得出“信息增益率”,使信息增益率越大的特征,就是最優特征。即:

 

 

其中懲罰值實際上就是“信息熵”,只不過這里的信息指的不是計算信息增益時“樣本集中分類結果的平均不確定性”,而是“總樣本集中分類后子樣本集數目的平均不確定性”,即:

 

其中:

D:分類前的總樣本數量。

i:按某特征分類后樣本子集序號。

Di:按某特征分類后的第i個子集的數量。

 

由此看出,樣本數量越少,懲罰值越大,相除后的信息增益率也就越小,依此做到了一定的平衡,由於“懲罰”了小樣本數量集,其由於數量少帶來信息增益抗噪性差的問題也得到一定程度的解決。

這就是C4.5算法最大的好處,解決了ID3算法第二個缺陷,緩解了ID3算法的第一個缺陷。

不過ID3算法的第三個不能處理連續型特征數據的問題。C4.5算法本身也不能直接處理連續數據。

 

另外C4.5和ID3算法還有一個特點,這倆算法的根本其實都要計算信息增益,而信息增益的一個大前提就是要先進行分類,然后才能計算增益,所以每計算一次增益也就代表進行了一次分類,分類用了的特征接下來就不能再用了,所以ID3和C4.5算法在分類時會不斷消耗特征。

 

CART決策樹

簡單來講就是,有一個類似於熵的指標叫Gini指數,其代表了分類結果的不確定性,所以自然是越小越好。

每次分類前計算分類前后的Gini指數,求差得出“Gini指數增益”,能使Gini指數增益最大的特征就是最優特征。

需要注意的是,CART算法分類時,即使特征有大於兩個特征值,也還是會把樣本集分成兩類,最后形成的是標准二叉樹。

 

Gini指數

首先計算分類前樣本集的Gini指數,Gini指數想表達的東西和信息熵類似,都是想表達樣本集分類結果的不確定性,Gini指數或熵越大,表示樣本集分類結果不確定性也越大。

假設樣本集數量為D,分類結果有n種,Dk表示總樣本集中分類結果為第k種的樣本數量。

那么從總樣本集中選出分類結果為k的樣本的概率為:

 

選出分類結果為k的樣本的不確定性(即選出分類不為k的樣本概率)為:

 

而總樣本集的分類結果不確定性,就是計算n種分類結果的不確定性,然后取期望:

 

這個公式就是樣本集的Gini指數,用於表達樣本集分類結果的不確定性,Gini指數越大樣本集越不確定,化簡后得:

 

 

按照某特征分類后的Gini指數為,分類后各樣本集Gini指數求期望,

假設分類前總樣本集數量為D,按特征分類后得到兩堆樣本集數量分別為S1和S2(由於CART算法生成二叉樹的特性,所以只能分成兩堆),則樣本集分類后的Gini指數為:

 

 

如果特征值大於兩個,則列出所有可能的分類情況,依次分類並計算各分類后的Gini指數,選擇分類后Gini指數最小的分類情況作為特征的分類方法。

如,特征有a,b,c三個特征值,

則可能的分類方法有:(a,(b,c)),(b,(a,c)),(c,(a,b))

假設(b,(a,c))這種分類方式分類后的Gini指數最小,則按照特征值為b的分為第一個樹枝,特征值為a或c的分為第二個樹枝,

第一個樹枝里該特征只有b特征值,則后續分類時不需要再考慮該特征。

第二個樹枝里該特征中還有a和c兩種特征值,需要注意的是“后續分類時還是要考慮該特征,且特征值為a和c”。

 

Gini指數增益

最終,樣本集D,按照某特征分類出S1樣本集和S2樣本集后,其Gini指數增益為:

 

選取能使Gini指數增益最大的特征分類作為最優特征分類。

 

CART和C4.5算法區別

1.C4.5本質上還是基於信息熵得出的信息增益比,而CART算法的分類樹是基於Gini指數得出的Gini指數增益。

2.CART是一顆二叉樹,而C4.5算法沒有這個特點。這是因為在進行特征分類上,C4.5算法每次選擇一種特征進行分類后,每一個特征值都是一個樹枝。而CART算法每次分類會把特征的所有特征值分成兩堆,符合A堆里面的特征值的樣本算A分支,符合B堆特征值的樣本算B特征。

3.基於第二點不同,我們可看出C4.5算法每選擇一個特征按各個特征值分類后,接下來的分類就不會再考慮該特征了(因為該特征已按特征值徹底划分完了)。而CART算法是把特征值分成兩堆,假設有abcd四個特征,經過Gini增益計算后,ab為1堆,cd為2堆,那么按照此分類后1堆和2堆該特征都沒有被完全划分,1堆樣本還能對a和b特征值再進行划分。

所以CART算法的特征在分類過程中可能重復出現,而C4.5只能出現一次。

 

連續型特征離散化

連續型數據離散化的方法很多,最易懂的就是憑經驗離散化,

比如一批樣本集里有身高特征(cm),樣本的數值有:162,164,165,166,168,170,173,180

這個時候我們就可以憑借經驗或者想要統計的結果,對這組連續數據划分一個離散范圍,如設定小於165的是一類,165到170的是一類,大於170的是一類,這樣就把連續數據離散化成一個范圍判斷了。

但憑借經驗進行范圍划分明顯不靠譜,

我們可以利用ID3、C4.5、CART這些算法,將連續數據離散化。

 

簡單來講思路就是:

依次設立划分點,然后數值小於該划分點的數據分為一類,大於的分為另一類。

分別計算根據各個划分點分類前后的信息增益(ID3)或信息增益率(C4.5)或Gini指數增益(CART),選出使得增益達到最大的划分點作為分類特征值。

 

至於划分點的選擇,一般是將所有連續數值從小到大排序,每兩點間取平均數建立一次划分點進行分類,並計算信息增益或信息增益率。

 


免責聲明!

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



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