決策樹中的J48算法分析


J48原理:本來名稱為C4.8,由於是Java實現的算法,再加上C4.8為商業收費算法。 其實J48是自上而下的,遞歸的分治策略,選擇某個屬性放置在根節點,為每個可能的屬性值產生一個分支,將實例分成多個子集,每個子集對應一個根節點的分支,然后在每個分支上遞歸地重復這個過程。當所有實例有相同的分類時,停止。

        問題是如何:如惡化選擇根節點屬性,建立分支呢?

 

例如:weather.nominal.arff

   我們希望得到的是純分裂,即分裂為純節點,希望找到一個屬性,它的一個節點全是yes,一個節點全是no,這是最好的情況,因為如果是混合節點則需要再次分裂

通過量化來確定能產生最純子節點的屬性---計算純度(目標是得到最小的決策樹)。而自上而下的樹歸納法用到了一些啟發式方法---產生純節點的啟發法是以信息論為基礎的,即信息熵,以bits測量信息。

信息增益=分裂前分布的信息熵-分裂后分布的信息熵,選擇信息增益最大的屬性。

計算這四個屬性的信息增益,如下圖:

 

經過計算得到outlook、windy、humidity、temperature的信息增益分別為0.247bits、0.048bits、0.152bits、0.029bits,所以選擇outlook為根節點。

繼續分裂....

使用J48構建決策樹如圖:

計算舉例 
分裂前:Info(outlook)=entropy(outlook)=-9/14*lg(9/14)-5/14*lg(5/14)=0.940286

分裂后:Inf0a(outlook)=5/14*Info(D1)+4/14*Info(D2)+5/14*Info(D3)=0.693535

Info(D1)=-2/5*lg(2/5)-3/5*lg(3/5)=0.9709490 , Info(D2)=0

Info(D3)=-3/5*lg(3/5)-2/5*lg(2/5)

 Gain(outlook)=Info(outlook)-Inf0a(outlook)=0.247bits

 

提示,目前介紹不完整還有一些提升准確性的概念方法比如gain raito(增益比率)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM