上一篇介紹了可以用「信息增益」來對決策樹進行特徵分類,而ID3算法恰好使用了這種方式。這一篇我主要介紹一個例子,來說明ID3算法的應用。
ID3算法核心
首先,我們來看下該算法的原理。
算法從根節點開始,對每個特徵都計算其信息增益,然後選取信息增益最大的那個特徵作為根節點的分類特徵,形成子節點;然後對子節點再計算剩餘特徵的信息增益,再次選取較大的那個特徵;重複上述步驟,直到信息增益為0或者沒有特徵選擇為止。
實戰
這裡我們舉一個《機器學習》書中的例子:
如上圖,我們給出了一天的天氣狀況以及是否出去打網球的數據集D。我們希望訓練出的模型可以根據某一天的天氣狀況,來判斷出今天是否應該去打網球。也就是說,這是一個分類問題,類別只有「yes」和「no」兩類。
那麼,我們應該如何構建一個決策樹呢?
首先,要計算數據集D中類別的熵。
可以看到,一共有14個數據,其中有9個「yes」,5個「no」。因此,信息熵為
·第1個特徵outlook
然後,我們先選擇第一個特徵outlook,計算其分類的信息熵。而outlook特徵有3個取值,分別是sunny、overcast和rain。因此,我們分別計算熵再相加即可。
先來看sunny,一共有5個數據,佔比為5/14;而在這5個當中,playtennis的類別情況是有2個「yes」,3個「no」,因此其信息熵為
第二個取值是overcast,有4個數據,而且類別全是「yes」,因此其信息熵為
第三個取值是rain,有5個數據,類別情況是有3個「yes」,2個「no」,因此其信息熵為
把公式(1)(2)(3)加起來,即可得到特徵A(outlook)總的分類信息熵為
所以,特徵A的信息增益為
g(D,A)=H(D)-H(D|A)=0.94-0.7=0.24
·第2個特徵temperature
特徵有3個取值,分別是hot、mild和cool。計算過程同上,這裡我們省略,最後可算出第二個特徵B的信息增益為
g(D,B)=0.03
·第3個特徵humidity
特徵有2個取值,分別是high和normal。經計算,特徵C的信息增益為
g(D,C)=0.15
·第4個特徵wind
特徵有2個取值,分別是strong和weak。經計算,特徵E的信息增益為
g(D,E)=0.05
對比這4個特徵的信息增益,最大的是特徵A——outlook。因此,我們用此特徵作為根節點的分類特徵。該特徵按其取值將數據分成三大類。
隨後,我們用剩餘的特徵對這三大類再次進行上述步驟,直到到達葉節點。最後劃分出的結果如下圖所示:
可以看到,我們僅用了3個特徵,就將數據完全分類了。
ID3算法暫時先介紹到這裡,那麼還有沒有其他的算法可以進行決策樹的特徵選擇呢?下一篇我將為你介紹。