決策樹分類器(ID3、C4.5 Java實現)
阿新 • • 發佈:2019-01-30
分類
什麼是分類?舉個例子,銀行貸款員需要分析資料,以便搞清楚哪些是貸款申請者是值得信賴的。通訊公司也希望能分清楚哪些客戶容易接受某一套餐,從而定向營銷。資料分類一般又包括學習階段(構建分類器)和分類階段(使用模型預測給定資料的類標號)。
決策樹分類器
決策樹分類演算法是資料探勘、機器學習中最常使用的一種分類演算法。決策樹(decision tree)是一種類似於流程圖的樹結構,其中,每個內部節點的分支代表了資料的某一特定屬性取不同值的情況,而每個葉節點存放一個類標號。一個例子如下,其表示了不同情況下是否出去玩:
可以看出決策樹非常直觀,容易被人理解。決策樹的學習和分類也比較簡單快速。那麼如何構建決策樹呢?J.Ross Quinlan 提出了迭代的分裂器(Iterative Dichotomiser,ID3)
ID3的分裂準則就是資訊增益,它基於的夏農的資訊理論。
熵 :
其中
如果現在我們用屬性A將它分為幾個分割槽,
它的熵:
而分類之後的資訊增益:
所以每一次我們只要找到資訊增益最大的屬性作為分裂結點即可。
可是ID3採用的資訊增益有以缺陷,它會傾向於選擇屬性值較多的屬性。舉個例子,如果要分類電話使用者,而用他們的電話號碼做屬性,它的資訊增益無疑是最大的,可是卻沒有用處。基於此,又有人提出了C4.5演算法,它的分裂準則是增益率。
它使用分裂資訊(split information)值將資訊增益規範化。分裂資訊定義如下:
然後最終的增益率:
下面我將給出Java實現的演算法,由於程式碼量較多,我將上傳資源,點選下載