ID3.5&C4.5&CART決策樹裏幾個關鍵公式

ID3.5

信息熵(entropy)

度量樣本集合“不純度”或者“混亂程度”的最常用指標,熵值越大,混亂程度越大,純度越低;熵值越小,混亂程序越小,純度越高

Ent(D)=k=1ypklog2pkEnt(D)= - {\sum_{k=1}^{|y|}}p_k{log_2^{p_k}}

其中D爲樣本集,y|y|爲類別總數,kk爲當前類別號,pkp_kkk類別在整個樣本集中出現的概率。計算信息熵時約定:若p=0,plog2p=0p=0,則p {log{_2^p}}=0

當樣本集合中kk類樣本出現的概率pkp_k相等時,熵值最大,最大值log2y{log_2^{|y|}},即混亂程度最大,純度最低;相反,當樣本集合中全是一個類別,熵值最小,最小值爲0,純度最高,混亂程度最低。
在這裏插入圖片描述

信息增益

信息增益直接以信息熵爲基礎,計算以某個屬性劃分對信息熵造成的變化,即讓信息熵增大或者減小了,當然我們要選一個讓熵值下降最多的屬性去做劃分,做決策樹的目的就是使樹往熵值更小的方向走。

樣本的離散屬性a={a1,a2,...,aV}a=\{a^1,a^2,...,a^V\},如經典的西瓜集的“色澤”屬性{青綠,烏黑,淺白}。
DvD^v:D在aa上取值爲ava^v樣本集合,即D中屬性爲ava^v的樣本集合,注意是個集合,如西瓜中色澤屬性爲烏黑的子集。
以屬性aa對樣本集D進行劃分的話,我們獲得的信息增益爲:

Gain(D,a)=Ent(D)v=1VDvDEnt(Dv)Gain(D, a) = Ent(D) - \sum_{v=1}^V \cfrac{|D^v|}{|D|} Ent(D^v)

在這裏插入圖片描述

信息增益Gain(D,a)Gain(D, a)評判在aa屬性上劃分前後,信息熵能減少多少,即劃分後純度能提高多少

在這裏插入圖片描述

C4.5

信息增益率

ID3缺點就是選擇的時候容易選擇一些比較容易分純淨的屬性,尤其在具有像ID值這樣的屬性,因爲每個ID都對應一個標籤,所以分的很純淨,ID3比較傾向找到這樣的屬性做分裂。
C4.5定義了信息增益率Gain_ratio()避免了這個缺點
Gain_ratio(D,a)=Gain(D,a)IV(D,a)Gain\_ratio(D, a) = \cfrac{Gain(D, a)}{IV(D, a)}
IV(D,a)=v=1VDvDlog2DvDIV(D, a) = \sum_{v=1}^V \cfrac{|D^v|}{|D|} log_2^{\cfrac{|D^v|}{|D|}}

屬性a的類別越多(即V越大),則IV(D,a)IV(D, a)的值通常就越大。
其實可以看出上面IV(D,a)IV(D, a)公式和信息熵公式Ent(D)Ent(D)是一樣的,集合裏面越混亂,值越大,同時最大值爲log2ylog_2^{|y|},在這裏y=V|y| = |V|即屬性a下面的類別,類別數越多分佈越平均,IV(D,a)IV(D, a)值越大,使得Gain_ratio(D,a)Gain\_ratio(D, a)值越小。

啓發式:先從候選劃分屬性中找出信息增益高於平均水平的,之後在從中選擇信息增益率最高的作爲下一個分裂的屬性

C4.5ID3.5很像,只是前者選擇了信息增益率來作爲屬性選擇的判定標準。

CART

基尼指數

基尼指數反應了從樣本集D中有放回的隨機抽取兩個樣例,其類別標記不一樣的概率。Gini(D) 越小,抽取的兩個樣本類別不一樣的概率越小,一樣的概率越大,即樣本集D純度越高。

Gini(D)=k=1ykkpkpk=1k=1ypk2Gini(D) = \sum_{k=1}^{|y|} \sum_{k'\neq k} p_k p_{k'} = 1 - \sum_{k=1}^{|y|}{p_k}^2

該公式很好的代表了摸兩次球類別不同的概率,第一個等號後的式子表示兩次摸球均不同的概率和,如三個小球,摸到12,13,21,23,31,32的概率之和;第二個等號後面的式子表示用總概率和1減去兩次摸球都相同的概率,即1減去摸到11,22,33球的概率,二者相等。

顯然,當集合D中的數據類別都相同時,兩次摸到相同類別的球的概率就大,Gini(D)Gini(D)就小,反之,當集合中類別很多且分佈均勻時,Gini(D)Gini(D)值就大。

我們對集合中的每一個屬性aa都計算該屬性下的基尼指數Gini_index(D,a)Gini\_index(D,a),找出基尼指數最小的屬性,首先分裂它。

Gini_index(D,a)=v=1VDvDGini(Dv)Gini\_index(D,a) = \sum_{v=1}^{|V|} \cfrac{|D^v|}{|D|} Gini(D^v)

需要注意的是:CART是一個二叉樹即無論a屬性下有幾個分支,都會化成二叉樹計算對應的Gini_index(D,a)Gini\_index(D,a),然後來評估優先分裂哪個屬性,例如屬性aa有三個類別A,B,C,CART對屬性aa計算時,會將類別分成(A,非A(即BC)),(B,非B),(C,非C)來分別計算屬性a的基尼係數,最終用最小的方案來建樹。建樹完成後就進行第二步了,即根據驗證數據進行剪枝。詳細參考這裏

基尼指數與熵泰勒展開後的相似性

基尼指數
Gini(D)=k=1ykkpkpk=1k=1ypk2Gini(D) = \sum_{k=1}^{|y|} \sum_{k'\neq k} p_k p_{k'} = 1 - \sum_{k=1}^{|y|}{p_k}^2


Ent(D)=k=1ypklog2pkEnt(D)= - {\sum_{k=1}^{|y|}}p_k{log_2^{p_k}}
log2log_2約等於lnln,熵公式等於Ent(D)=k=1ypklnpkEnt(D)= {\sum_{k=1}^{|y|}}- p_k{ln^{p_k}}
lnx-lnxx=1x=1處泰勒展開約等於1x1-x,代入上式可以得到:
Ent(D)=k=1ypklnpk=k=1ypk(1pk)=k=1ypkk=1ypk2=1k=1ypk2Ent(D)= {\sum_{k=1}^{|y|}}- p_k{ln^{p_k}} = {\sum_{k=1}^{|y|}} p_k(1-p_k) = {\sum_{k=1}^{|y|}} p_k - {\sum_{k=1}^{|y|}} {p_k}^2 = 1 -{\sum_{k=1}^{|y|}} {p_k}^2
到此,可以得到,基尼指數與熵值公式是非常接近的。
在這裏插入圖片描述

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