你想知道的決策樹原理及推導

本篇博客的目錄:
特徵
思想
信息增益
幾個小知識點
決策樹直觀的例子
ID3,CART,C4.5算法


決策樹的特徵

優點:計算複雜度不高,輸出結果易於理解,對中間值的缺失不敏感,可以處理不相關特徵數據
缺點:可能會產生過度匹配問題,不能有效利用特徵間的關聯關係
適用數據類型:數值型和標稱型

決策樹構造思想

要構造決策樹,就需要根據樣本數據集的數據特徵對數據集進行劃分,直到針對所有特徵都劃分過,或者劃分的數據子集的所有數據的類別標籤相同。然而要構造決策樹,面臨的第一個問題是先對哪個特徵進行劃分,即當前數據集上哪個特徵在劃分數據分類時起決定性作用。

信息增益

這塊可以參考這篇文章https://blog.csdn.net/blank_tj/article/details/82056413

通過量化的方法將信息度量出來,利用信息論度量信息是一種有效方法。所以,我們可以在劃分數據前後使用信息論量化度量信息的內容。
在劃分數據集前後信息發生的變化成爲信息增益,知道如何計算信息增益,就可以計算根據每個特徵劃分數據集獲得的信息增益,獲得信息增益最高的特徵就是最好的選擇。
例如:AB+C ,那麼信息增益爲:增益 = A - B - C


例如:一個盒子中分別有5個白球和5個紅球,隨機取出一個球,問,這個球是紅色還是白色?這個問題信息量多大呢?由於紅球和白球出現的概率都是1/2,那麼久可以得到其信息熵爲:H(x)=(12log2(12)+12log2(12))=1 ,是的,這個信息量是1bit。

如果一個盒子裏有10個紅球,隨機取出一個,這個球什麼顏色?這個問題的信息量是多少?信息量是0,因爲這是一個確定事件,概率P(x)=1


在信息科學中,信息越混亂,熵越大。信息熵其實是一個隨機變量信息量的數學期望,要明確這個概念,就要知道信息的定義。如果待分類的事務可能劃分在多個分類之中,則符號xi 的信息定義爲:

l(xi)=log2 p(xi) 其中p(xi) 是選擇該分類的概率

爲了計算熵,我們需要計算所有類別所有可能值包含的信息期望值,通過下面的公式得到:

H=i=1np(xi)l(xi)=i=1np(xi)log2 p(xi) 其中n是分類的數目,即特徵的數目

得到熵之後,我們就可以按照獲取最大信息增益(熵減最多)的方法劃分數據集。

劃分數據集

知道如何度量數據的無序程度,即如何計算信息熵之後,還需要進行的步驟是劃分數據集,通過度量劃分數據集的熵,以便判斷當前是否正確地劃分了數據集,因此需要對每個特徵進行劃分數據集,並且計算劃分後的數據集信息熵,熵減最多時劃分數據集所根據的特徵就是劃分數據集的最優特徵。


幾個知識點

1)數據離散化
如果一個特徵值連續值怎麼辦?此時需要進行離散化,對連續數據進行離散化處理,比如:
當成績大於90標識爲優,當成績大於70小於90,標識爲良,當成績大於60小於70,標識爲及格,當成績小於60標識爲不及格。經過離散化處理就可以構建決策樹了
2)正則項
信息增益的一個大問題就是容易造成偏向選擇分支多的屬性導致,那麼我們能想到的解決辦法就是加上一個與類別個數成正比的正則項來作爲最終的信息熵。
另外一個解決辦法是使用信息增益比來作爲特徵選擇的標準,就是特徵的增益值除以特徵熵,可以解決優先選取類別多的特徵的問題。
3)基尼不純度
信息熵是衡量信息不確定性的指標,實際上是 衡量信息純度的指標,除此之外,基尼不純度也是衡量信息不純度的指標,公式如下:

Gini(D)=1i=1npi2

解決過擬合問題

使用決策樹模型擬合數據時,容易過擬合,解決過擬合的方法一般是對決策樹進行剪枝,有兩種思路,前剪枝和後剪枝
1)前剪枝
前剪枝是在構建決策樹的同時進行剪枝,在構建過程中,如果無法進一步降低信息熵,就是停止創建分支,爲了避免過擬合,可以設定一個閾值,當信息熵減小的數量小於這個閾值,計算還會降低熵,也要停止繼續創建分支。還可以限制葉子節點樣本個數,當樣本個數小於設定值,則不再繼續創建分支
2)後剪枝
後剪枝是在決策樹構建完成後進行剪枝。剪枝的過程就是對擁有同樣父節點的一組節點進行檢查,判斷其如果合併是否信息熵的增加量小於某一個閾值,如果小於閾值,這一組節點可以合併成一個節點。後剪枝是目前比較普遍都得做法


理解決策樹的例子

套用別人的一個例子
這裏寫圖片描述
最後一列爲y值也就是目標值,而諸如天氣,是否週末爲特徵,現在通過計算特徵的信息熵來決定先對哪個特徵進行分割。

1)計算總信息熵。數據記錄34條,銷量爲高的有18條,爲低的16條

總信息熵H(x)=-(18/34)*log2(18/34)-(16/34)*log2(16/34)=0.997503

2)計算各個屬性的信息熵

對於天氣,屬性值有好與壞,其中好天氣下,銷量爲高的記錄11條,爲低的記錄6條

在壞天氣下,銷量爲高記錄7條,爲低的記錄10條

H(天氣=好)= -(11/17)*log2(11/17)-(6/17)*log2(6/17)=0.936667

H(天氣=壞)= -(7/17)*log2(7/17)-(10/17)*log2(10/17)=0.977418

H(天氣)=(17/34)* H(天氣=好)+(17/34)* H(天氣=壞) = 0.957043

對於是否週末,屬性值有是與否,其中是週末下,銷量爲高的記錄11條,爲低的記錄3條

在否週末下,銷量爲高記錄7條,爲低的記錄13條

H(週末=是)= -(11/14)*log2(11/14)-(3/14)*log2(3/14)=0.749595

H(週末=否)= -(7/20)*log2(7/20)-(13/20)*log2(13/20)=0.934068

H(週末)=(14/34)* H(週末=是)+(10/34)* H(週末=否) = 0.858109

對於是否促銷,屬性值有是與否,其中促銷下,銷量爲高的記錄15條,爲低的記錄7條

在否促銷下,銷量爲高記錄3條,爲低的記錄9條

H(促銷=是)= -(15/22)*log2(15/22)-(7/22)*log2(7/22)=0.902393

H(促銷=否)= -(3/12)*log2(3/12)-(9/12)*log2(9/12)=0.811278

H(促銷)=(22/34)* H(促銷=是)+(12/34)* H(促銷=否) = 0.870235

3)計算天氣,是否週末,是否促銷的信息增益值

Gain(天氣)= H(x)- H(天氣)=0.04046

Gain(是否週末)= H(x)- H(週末)=0.139394

Gain(是否促銷)= H(x)- H(促銷) = 0.1272684

4)由第三步可知,是否週末的信息增益最大,他的兩個屬性’是’,’否’作爲跟結點的兩個分支,然後從未被選擇的特徵中繼續進行一至三步,選擇最優數據劃分特徵來劃分子數據集。何時停止?一是一直到所有的特徵都用完了,二是劃分後額信息增益足夠小,就可以停止了,最終構成一顆決策樹。


ID3算法

ID3由Ross Quinlan在1986年提出。ID3決策樹可以有多個分支,但是不能處理特徵值爲連續的情況。決策樹是一種貪心算法,每次選取的分割數據的特徵都是當前的最佳選擇,並不關心是否達到最優。在ID3中,每次根據“最大信息熵增益”選取當前最佳的特徵來分割數據,並按照該特徵的所有取值來切分,也就是說如果一個特徵有4種取值,數據將被切分4份,一旦按某特徵切分後,該特徵在之後的算法執行中,將不再起作用,所以有觀點認爲這種切分方式過於迅速。在建立決策樹的過程中,根據特徵屬性劃分數據,使得原本“混亂”的數據的熵(混亂度)減少,按照不同特徵劃分數據熵減少的程度會不一樣。在ID3中選擇熵減少程度最大的特徵來劃分數據(貪心),也就是“最大信息熵增益”原則。

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

H(D)=k=1K|Ck||D|log2|Ck||D|

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

H(D|A)=i=1n|Di||D|H(Di)=i=1n|Di||D|k=1K|Dik||Di|log2|Dik||Di|

(3)計算信息增益

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

C4.5算法

C4.5是Ross Quinlan在1993年在ID3的基礎上改進而提出的。ID3採用的信息增益度量存在一個缺點,它一般會優先選擇有較多屬性值的Feature,因爲屬性值多的Feature會有相對較大的信息增益?(信息增益反映的給定一個條件以後不確定性減少的程度,必然是分得越細的數據集確定性更高,也就是條件熵越小,信息增益越大)。爲了避免這個不足C4.5中是用信息增益比率(gain ratio)來作爲選擇分支的準則。信息增益比率通過引入一個被稱作分裂信息(Split information)的項來懲罰取值較多的Feature。除此之外,C4.5還彌補了ID3中不能處理特徵屬性值連續的問題。但是,對連續屬性值需要掃描排序,會使C4.5性能下降。

SplitInformation(D,A)=i=1n|Di||D|log|Di||D|

GainRatio(D,A)=g(D,A)SplitInformation(D,A)

CART算法

CART(Classification and Regression tree)分類迴歸樹由L.Breiman,J.Friedman,R.Olshen和C.Stone於1984年提出。ID3中根據屬性值分割數據,之後該特徵不會再起作用,這種快速切割的方式會影響算法的準確率。CART是一棵二叉樹,採用二元切分法,每次把數據切成兩份,分別進入左子樹、右子樹。而且每個非葉子節點都有兩個孩子,所以CART的葉子節點比非葉子多1。相比ID3和C4.5,CART應用要多一些,既可以用於分類也可以用於迴歸。CART分類時,使用基尼指數(Gini)來選擇最好的數據分割的特徵,gini描述的是純度,與信息熵的含義相似。CART中每一次迭代都會降低GINI係數。迴歸時使用均方差作爲loss function。基尼係數的計算與信息熵增益的方式非常類似。

Gini(D)=1i=0n(DiD)2

Gini(D|A)=i=0nDiDGini(Di)

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