使用ID3算法構造決策樹

決策樹

決策樹是一個預測模型,它代表的是對象屬性與對象值之間的一種映射關係。樹中每個節點表示某個對象,而每個分叉路徑則代表的某個可能的屬性值,而每個葉結點則對應從根節點到該葉節點所經歷的路徑所表示的對象的值。

這張圖很好地解釋了決策樹:

使用ID3算法構造決策樹

明天要不要出去玩?

  • 晴天:
    • 潮溼:不出去
    • 不潮溼:出去
  • 陰天:出去玩
  • 雨天:
    • 颳風:不出去
    • 不颳風:出去

例子中可以找到兩層的分類依據屬性,第一層是晴/陰/雨,第二層是是否潮溼和是否颳風,分類依據的確定和先後順序對決策樹的質量有決定性的影響。另外,在實際構造決策樹時,經常要進行剪枝,主要是因爲數據中往往存在一些噪音數據,或者是存在分類過細的問題,反而失去了分類的意義。一種是先剪枝,在構造樹的過程中,當某個節點滿足剪枝條件,則直接停止此分支的構造;還有一種是後剪枝,先構造完成完整的決策樹,再通過某些條件遍歷樹進行剪枝。

ID3算法

ID3算法是J. Ross Quinlan提出的分類預測算法,它的核心是用貪心算法來根據“信息熵”分類。何爲信息熵?這個概念還是香農(C. E. Shannon)提出來的,用以表示信息的不確定性。信息不確定的因素越多,這個熵就越大。

如果一組數據由{d1,d2,…,dn}構成,其和是sum,那麼信息熵可以表示爲:

使用ID3算法構造決策樹

下面舉例來說明這個公式:

假使說我們要研究狗的智商(目標屬性),潛在的關聯因素包括顏色和毛的長度。

顏色(color) 毛的長度(length) 智商(IQ)
black
white
white
white

3次出現“高”智商,1次出現“低智商”,所以目標屬性IQ的信息熵:HIQ(D)=-(2/4)log2(2/4)-(1/4)log2(1/4)

color屬性在取不同的值對應目標屬性IQ的信息熵:

  • 在color取值爲black的時候,IQ只取“高”這個值:Hcolor(Dblack)=-(1/1)log2(1/1)
  • 在color取值爲white的時候,IQ取值有兩個“高”,一個“低”:Hcolor(Dwhite)=-(1/3)log2(1/3)-(2/3)log2(2/3)

而color屬性的整體信息熵是上述二者的加權平均值:Hcolor(D)=(1/4)Hcolor(Dblack)+(3/4)Hcolor(Dwhite)。同樣可以求得Hlength(D)。

現在定義信息增益Gaincolor=HIQ(D)-Hcolor(D),Gainlength=HIQ(D)-Hlength(D),它是信息熵的有效減少量,值越高,說明目標屬性IQ在參考屬性處損失的信息熵越多,也就是失去的不確定性越多,那麼在決策樹進行分類的時候,這個參考屬性應該越早作爲決策的依據屬性。

這個例子中如果Gainlength > Gaincolor,說明length比color要對IQ有更大的影響,所以決策樹中,要先依據length來進行分類。

在實際應用中,往往引入一個“閾值”,當節點下的任意一分類所佔百分比超過這個閾值時,就不再進行分類,以避免產生出過小的沒有實際意義分類節點。

ID3算法也存在諸多不足,比如分類偏向於取值數量,只能處理離散數據等等問題。C4.5算法是對ID3的一個改進,但是總體來看,由於需要反覆遍歷數據,二者都是效率很低的算法。

文章系本人原創,轉載請保持完整性並註明出自《四火的嘮叨》

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