1. 程式人生 > 實用技巧 >機器學習實戰之決策樹

機器學習實戰之決策樹

一、決策樹概念

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=1npilogpi
熵是一個表示隨機變數的不確定性的一個值,在熵中有一個特殊的資料,當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)

H(p)=plogp(1p)log(1p)
則,可做如下圖:
在這裡插入圖片描述
由圖中可知

  1. 當p=0或1時,H( p)=0,當p=0.5時,H( p)=1;
  2. 因為p表示的是概率,所以當H( p)=1時,p=0.5,則表示一半的可能,此時的隨機變數的不確定性就會變得很大,則越不穩定。
  3. 反之,當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=1npilogpi=i=1nDCilogDCi
我們很容易能夠知道這裡總共有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()=(178log178+179log179)
由此我們就可以計算出好瓜與否的熵的值是多少。

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(DA)=i=1nDDiH(Di)=i=1nDDik=1KDDiklogDDik
條件熵其實就是在熵的基礎上新增一些前置的條件,比如剛剛的示例,我們剛剛計算了最後一列好瓜與否的熵的值,我們現在計算,給定特徵色澤之後,計算我們的條件熵,具體演算法如下:

可知資料的總數應該是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()=DD1H(D1)+DD2H(D2)+DD3H(D3)=175(63log6363log63)+175(64log6462log62)+175(51log5154log54)

這樣就可以計算出給定色澤特徵後的條件熵。

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(DA)其中,D是訓練資料集,A是某個特徵
根據資訊增益準則的特徵選擇方法是:

  1. 對訓練資料集(或子集)D,計算其每個特徵的資訊增益
  2. 比較它們的大小,選擇資訊增益最大的特徵

資訊增益對於資料來說,越大越好,因此,在我們給定特徵值進行資訊增益計算之後,我們應當選取資訊增益最大的那一個特徵值進行一次劃分。

在這個例子中,假如計算出色澤特徵的資訊增益最大,那麼將按照色澤中的分類進行一次劃分,比如將青綠放在左邊,烏黑放在中間,淺白放在右邊,然後再往下對剩下的特徵進行資訊增益的計算,整個過程就是一個迴圈遞迴的過程,直到最後全部特徵計算完畢後,生成最終的決策樹。(如下圖的第一個簡單的劃分)

青綠 烏黑 淺白 硬挺 ... ... 蜷縮 色澤=? 根蒂? 根蒂? 根蒂? ... ... ... ...

四、總結

決策樹適用於資料型和標稱型資料集,構造決策樹是很耗時的任務,即使在處理很小的資料集,也要花費幾秒的時間,如果資料集很大,將會消耗很多計算時間。但是如果適用建立好的決策樹解決分類問題,則可以很快完成,因此,為了節省時間,最好能夠在每次執行分類是呼叫已經構造好的決策樹。

優點:

計算複雜度不高,輸出結果易於理解,對於中間值的確實不敏感,可以處理不相關特徵資料。

缺點:

可能會產生過度匹配問題,即過擬合。