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