C4.5算法

【適用範圍】

        處理分類問題,只要目標問題的類間邊界能用樹型分解方式或規則判別方式來確定,就可以使用C4.5算法

【屬性】

       監督學習

【基本思想】

        給定數據集,所有實例都由一組屬性來描述,每個實例僅屬於一個類別,在給定數據集上運行C4.5算法可以學習得到一個從屬性值到類別的映射,進而可以用該映射去分類新的未知實例

【算法原理】

Input: an attribute-valued dataset D

1:Tree = {}

2:if D is 'pure' or other stopping criteria met then

3:    terminate

4:end if

5:for all attribute a ∈ D do

6:     Compute information-theoretic criteria if we split on a

7:end for

8:abest = Best attribute according to above computed criteria

9:Tree = Create a decision node that tests abest in the root

10:Dv = Induced sub-datasets from D based on abest

11:for all Dv do

12:     Treev = C4.5(Dv)

13:      Attach Treev to the corresponding branch of Tree

14:end for

15:return Tree

【算法闡述】

用根節點表示給定的數據集,從根節點開始在每個節點上測試一個特定的屬性,把節點數據集劃分成更小的子集,並用子樹表示。該過程一直執行,直到子集成爲“純”的,也就是說子集中的所有實例屬於同一個類別,樹停止增長。

【算法要點】

1.信息論準則

        C4.5算法使用增益(Gain)、增益率(Gain Ratio)等信息論準則選擇合適的屬性來劃分子樹。增益用於計算類別分佈的熵的減少量,增益越大證明依據該屬性的分類效果越好,它的缺陷在於過於偏向選擇輸出結果更多的屬性。增益率具有克服這一偏差的優點,因此C4.5算法默認的信息論準則是增益率

         GainRatio(a) = Gain(a)/Entropy(a)

其中,Gain(a)=Entropy(Category in D) - ∑|Dv|/D*Entropy(Category in Dv)

            Entropy = -∑p*log2(p)

            D是整個數據集,Dv是D的子集,實例在Dv上屬性值相同,Category不同

屬性a的Entropy(a)僅取決於取值的概率分佈,與類別無關。

屬性a的Gain(a)與類別相關。

【代碼實現】

http://www.rulequest.com/Personal/

文章內容系參考清華大學出版社《數據挖掘十大算法》整理而成,特此聲明

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