機器學習實戰之決策樹
一、決策樹概念
1、概念以及適用場景
概念:
決策樹(decision tree)是一類常見的機器學習方法。
適用場景:
決策樹能夠生成清晰的基於特徵(feature)選擇不同預測結果的樹狀結構,希望更好地理解手上的資料的時候,往往可以使用決策樹,在實際應用中,受限於它的簡單性,決策樹更大的用處是作為一些更有用的演算法的基石,例如隨機森林。
2、演算法介紹
決策樹類似於資料結構中的二叉樹,從上到下,依次進行判斷,以西瓜書中對西瓜的判斷為例,如下圖所示:
最終,通過一次次的判斷得到一個最終的判斷結果,這就是一個簡單形象的決策樹。
二、決策樹的構造
1、熵
什麼是熵
熵全稱“資訊熵”(information entyopy),是度量樣本集合純度最常用的一種指標。表示隨機變數的不確定性。
熵的公式如下:
H
(
p
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
H(p)=-\sum_{i=1}^np_ilogp_i
H(p)=−i=1∑npilogpi
熵是一個表示隨機變數的不確定性的一個值,在熵中有一個特殊的資料,當n=2時,我們可以做如下處理:
H
(
p
)
=
−
(
p
1
l
o
g
p
1
+
p
2
l
o
g
p
2
)
H(p)=-(p_1logp_1+p_2logp_2)
H(p)=−(p1logp1+p2logp2)
但是因為n=2,所以可知p1+p2=1,所以可以令p1=p,p2=1-p,此時,原式轉化為:
H
(
p
)
=
−
p
l
o
g
p
−
(
1
−
p
)
l
o
g
(
1
−
p
)
H(p)=-plogp-(1-p)log(1-p)
則,可做如下圖:
由圖中可知
- 當p=0或1時,H( p)=0,當p=0.5時,H( p)=1;
- 因為p表示的是概率,所以當H( p)=1時,p=0.5,則表示一半的可能,此時的隨機變數的不確定性就會變得很大,則越不穩定。
- 反之,當H( p)=0時,p等於0或1,此時p相當於確定的是或者否,則隨機變數變得極其穩定。
所以,可知:熵越大,隨機變數的不確定性越大。
為了更加理解熵如何計算,有如下例子(以西瓜書中西瓜為例):
這裡給我們呈現了17組資料,在這裡,我們比如計算是否是好瓜的熵值,我們使用公式帶入:
H
(
p
)
=
−
∑
i
=
1
n
p
i
l
o
g
p
i
=
∑
i
=
1
n
∣
C
i
∣
D
l
o
g
∣
C
i
∣
D
H(p)=-\sum_{i=1}^np_ilogp_i=\sum_{i=1}^n\frac{|C_i|}{D}log\frac{|C_i|}{D}
H(p)=−i=1∑npilogpi=i=1∑nD∣Ci∣logD∣Ci∣
我們很容易能夠知道這裡總共有17個瓜,其中8個是好瓜,9個是不好的瓜,所以按照公式,我們帶入:
H
(
好
瓜
否
)
=
−
(
∣
8
∣
17
l
o
g
∣
8
∣
17
+
∣
9
∣
17
l
o
g
∣
9
∣
17
)
H(好瓜否)=-(\frac{|8|}{17}log\frac{|8|}{17}+\frac{|9|}{17}log\frac{|9|}{17})
H(好瓜否)=−(17∣8∣log17∣8∣+17∣9∣log17∣9∣)
由此我們就可以計算出好瓜與否的熵的值是多少。
2、條件熵
前面講了熵怎麼計算,在這個地方,我們將引入條件熵。條件熵指的是給定某一特徵A後在算這個資料集的熵。條件熵的公式可以如下表示:
H
(
D
∣
A
)
=
∑
i
=
1
n
∣
D
i
∣
D
H
(
D
i
)
=
−
∑
i
=
1
n
∣
D
i
∣
D
∑
k
=
1
K
∣
D
i
k
∣
D
l
o
g
∣
D
i
k
∣
D
H(D|A)=\sum_{i=1}^n\frac{|D_i|}{D}H(D_i)=-\sum_{i=1}^n\frac{|D_i|}{D}\sum_{k=1}^K\frac{|D_{ik}|}{D}log\frac{|D_{ik}|}{D}
H(D∣A)=i=1∑nD∣Di∣H(Di)=−i=1∑nD∣Di∣k=1∑KD∣Dik∣logD∣Dik∣
條件熵其實就是在熵的基礎上新增一些前置的條件,比如剛剛的示例,我們剛剛計算了最後一列好瓜與否的熵的值,我們現在計算,給定特徵色澤之後,計算我們的條件熵,具體演算法如下:
可知資料的總數應該是17,由色澤分為三類,每一類及其編號為:
{青綠| 1,4,6,10,13,17}–D1
{烏黑|2,3,7,8,9,15}–D2
{淺白|5,11,12,14,16}D3
由這三個分類每一個裡面都有好瓜和不好瓜,具體的計算方式如下所示:
H ( 色 澤 ∣ 好 瓜 ) = ∣ D 1 ∣ D H ( D 1 ) + ∣ D 2 ∣ D H ( D 2 ) + ∣ D 3 ∣ D H ( D 3 ) = ∣ 5 ∣ 17 ∗ ( − ∣ 3 ∣ 6 l o g ∣ 3 ∣ 6 − ∣ 3 ∣ 6 l o g ∣ 3 ∣ 6 ) + ∣ 5 ∣ 17 ∗ ( − ∣ 4 ∣ 6 l o g ∣ 4 ∣ 6 − ∣ 2 ∣ 6 l o g ∣ 2 ∣ 6 ) + ∣ 5 ∣ 17 ∗ ( − ∣ 1 ∣ 5 l o g ∣ 1 ∣ 5 − ∣ 4 ∣ 5 l o g ∣ 4 ∣ 5 ) H(色澤|好瓜)=\frac{|D_1|}{D}H(D_1) + \frac{|D_2|}{D}H(D_2) + \frac{|D_3|}{D}H(D_3)=\frac{|5|}{17}*(-\frac{|3|}{6}log\frac{|3|}{6} - \frac{|3|}{6}log\frac{|3|}{6}) + \frac{|5|}{17}*(-\frac{|4|}{6}log\frac{|4|}{6}-\frac{|2|}{6}log\frac{|2|}{6}) + \frac{|5|}{17}*(-\frac{|1|}{5}log\frac{|1|}{5}-\frac{|4|}{5}log\frac{|4|}{5}) H(色澤∣好瓜)=D∣D1∣H(D1)+D∣D2∣H(D2)+D∣D3∣H(D3)=17∣5∣∗(−6∣3∣log6∣3∣−6∣3∣log6∣3∣)+17∣5∣∗(−6∣4∣log6∣4∣−6∣2∣log6∣2∣)+17∣5∣∗(−5∣1∣log5∣1∣−5∣4∣log5∣4∣)
這樣就可以計算出給定色澤特徵後的條件熵。
3、資訊增益
由上面的熵,我們可以引出新的概念,叫資訊增益(information gain)。
資訊增益(也叫互資訊,mutual information),定義如下:
g ( D , A ) = H ( D ) − H ( D ∣ A ) g(D, A)=H(D)-H(D|A) g(D,A)=H(D)−H(D∣A)其中,D是訓練資料集,A是某個特徵
根據資訊增益準則的特徵選擇方法是:
- 對訓練資料集(或子集)D,計算其每個特徵的資訊增益
- 比較它們的大小,選擇資訊增益最大的特徵
資訊增益對於資料來說,越大越好,因此,在我們給定特徵值進行資訊增益計算之後,我們應當選取資訊增益最大的那一個特徵值進行一次劃分。
在這個例子中,假如計算出色澤特徵的資訊增益最大,那麼將按照色澤中的分類進行一次劃分,比如將青綠放在左邊,烏黑放在中間,淺白放在右邊,然後再往下對剩下的特徵進行資訊增益的計算,整個過程就是一個迴圈遞迴的過程,直到最後全部特徵計算完畢後,生成最終的決策樹。(如下圖的第一個簡單的劃分)
四、總結
決策樹適用於資料型和標稱型資料集,構造決策樹是很耗時的任務,即使在處理很小的資料集,也要花費幾秒的時間,如果資料集很大,將會消耗很多計算時間。但是如果適用建立好的決策樹解決分類問題,則可以很快完成,因此,為了節省時間,最好能夠在每次執行分類是呼叫已經構造好的決策樹。
優點:
計算複雜度不高,輸出結果易於理解,對於中間值的確實不敏感,可以處理不相關特徵資料。
缺點:
可能會產生過度匹配問題,即過擬合。