ID3算法(1)


  1 簡述

1.1
    id3是一種基於決策樹的分類算法,由J.Ross Quinlan
在1986年開發。id3根據信息增益,運用自頂向下的貪心策略
建立決策樹。信息增益用於度量某個屬性對樣本集合分類的好壞程度。
由於采用了信息增益,id3算法建立的決策樹規模比較小,
查詢速度快。id3算法的改進是C4.5算法,C4.5算法可以
處理連續數據,采用信息增益率,而不是信息增益。
理解信息增益,需要先看一下信息熵。

1.2 信息熵
    信息熵是隨機變量的期望。度量信息的不確定程度。
信息的熵越大,信息就越不容易搞清楚。處理信息就是
為了把信息搞清楚,就是熵減少的過程。
    Entropy(X) = -Sum(p(xi) * log(p(xi))) {i: 0 <= i <= n}
    p(x)是概率密度函數;對數是以2為底;

1.3 信息增益
    用於度量屬性A降低樣本集合X熵的貢獻大小。信息增益
越大,越適於對X分類。
    Gain(A, X) = Entropy(X) - Sum(|Xv| / |X| * Entropy(Xv))  {v: A的所有可能值}
    Xv表示A中所有為v的值;|Xv|表示A中所有為v的值的數量;

2 id3算法流程
    輸入:樣本集合S,屬性集合A
    輸出:id3決策樹。
    1) 若所有種類的屬性都處理完畢,返回;否則執行2)
    2)計算出信息增益最大屬性a,把該屬性作為一個節點。
        如果僅憑屬性a就可以對樣本分類,則返回;否則執行3)
    3)對屬性a的每個可能的取值v,執行一下操作:
        i.  將所有屬性a的值是v的樣本作為S的一個子集Sv;
        ii. 生成屬性集合AT=A-{a};
        iii.以樣本集合Sv和屬性集合AT為輸入,遞歸執行id3算法;

3 一個的例子
    3.1
    這個例子來源於Quinlan的論文。
    假設,有種戶外活動。該活動能否正常進行與各種天氣因素有關。
    不同的天氣因素組合會產生兩種后果,也就是分成2類:能進行活動或不能。
    我們用P表示該活動可以進行,N表示該活動無法進行。
    下表描述樣本集合是不同天氣因素對該活動的影響。

                     Attribute                       class
    outlook    temperature    humidity    windy 
    ---------------------------------------------------------
    sunny       hot             high           false       N
    sunny       hot             high           true         N
    overcast   hot             high           false       P
    rain           mild           high           false       P
    rain           cool           normal      false       P
    rain           cool           normal      true         N
    overcast   cool           normal      true         P
    sunn y      mild           high           false       N
    sunny       cool           normal      false       P
    rain           mild           normal      false       P 
    sunny       mild           normal      true         P 
    overcast   mild           high           true         P 
    overcast   hot             normal      false       P 
    rain           mild           high           true        N

    3.2
    該活動無法進行的概率是:5/14
    該活動可以進行的概率是:9/14
    因此樣本集合的信息熵是:-5/14log(5/14) - 9/14log(9/14) = 0.940

    3.3
    接下來我們再看屬性outlook信息熵的計算:
    outlook為sunny時,
    該活動無法進行的概率是:3/5
    該活動可以進行的概率是:2/5
    因此sunny的信息熵是:-3/5log(3/5) - 2/5log(2/5) = 0.971

    同理可以計算outlook屬性取其他值時候的信息熵:
    outlook為overcast時的信息熵:0
    outlook為rain時的信息熵:0.971

    屬性outlook的信息增益:gain(outlook) = 0.940 - (5/14*0.971 + 4/14*0 + 5/14*0.971) = 0.246

    相似的方法可以計算其他屬性的信息增益:
    gain(temperature) = 0.029
    gain(humidity) = 0.151
    gain(windy) = 0.048

    信息增益最大的屬性是outlook。

    3.4
    根據outlook把樣本分成3個子集,然后把這3個子集和余下的屬性
    作為輸入遞歸執行算法。

 

原文鏈接:http://blog.csdn.net/leeshuheng/article/details/7777722


免責聲明!

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



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