id3 是一種用來構建決策樹的演算法,它根據資訊增益來進行屬性選擇。
關於決策樹,請參見:
此處主要介紹 id3 演算法如何利用資訊增益選擇屬性。
資訊熵,簡稱「熵」。假定訓練集中目標屬性為
c ,
c的取值為:c1
,c2,
…,cm
,每個取值佔的比例為p1
,p2,
…,pm
。則資訊熵的定義為: en
trop
y(s)
=ent
ropy
(p1,
p2,…
,pm)
=−∑i
=1mp
i⋅lo
g2pi
例3-2:現有weather資料集如下,求資料集關於目標屬性 play ball 的資訊熵?
解:把weather資料集記為s,目標屬性 play ball 有「ye
s 」和「no
」兩個取值。其中「ye
s 」佔的比例為9/14,「no
」佔的比例為5/14。所以資料集關於目標屬性的資訊熵為: en
trop
y(s)
=ent
ropy
(914,
514)=
−914l
og29
14−514
log2
514=0.94
資訊增益記為 ga
in(s
,a) ,公式為: ga
in(s
,a)=
entr
opy(
s)−e
ntro
pya(
s)其中 en
trop
ya(s
) 表示按屬性a劃分s後的樣本子集的熵。
假定屬性 a 有 k 個不同的取值,從而將 s 劃分為 k 個樣本子集 s1
,s2,
…,sk
,則有: en
trop
ya(s
)=∑i
=1k|
si||
s|en
trop
y(si
) 其中,|si
| (i,=1,2,…,k)為樣本子集 si
中包含的樣本數,|s
| 為樣本集
s 中包含的樣本數。
例3-3:依據上表weather資料集中的資料,設該資料集為s,假定用wind來劃分s,求s對屬性wind的資訊增益。
解:屬性wind有「weak」和「strong」兩個取值,將資料集s劃分為兩部分,記為s1和s2。其中s1有8個樣本,s2有6個樣本。
對樣本子集s1
,play ball=yes 的有6個樣本,play ball=no 的有2個樣本,則: en
trop
y(s1
)=−6
8log
268−
28lo
g228
=0.811
對樣本子集s2
,play ball=yes 的有3個樣本,play ball=no 的有3個樣本,則: en
trop
y(s2
)=−3
6log
236−
36lo
g236
=1屬性 wind 劃分 s 後的熵為: en
trop
ywin
d(s)
=∑i=
1k|s
i||s
|ent
ropy
(si)
=|s1
||s|
entr
opy(
s1)+
|s2|
|s|e
ntro
py(s
2)=8
14ent
ropy
(s1)
+614e
ntro
py(s
2)=0.571
×0.811
+0.428×1
=0.891
所以,屬性 wind 劃分資料集 s 所得的資訊增益為: ga
in(s
,win
d)=e
ntro
py(s
)−en
trop
ywin
d(s)
=0.94
−0.891
=0.049
以上是求資訊增益的步驟。其實 id3 主要的難點就是求資訊增益了。
對於決策樹的構建,就如普通樹的構建一樣,利用遞迴建立節點就行。而 id3 的特別之處就在於:在節點擊擇屬性的時候,它總是選擇資訊增益最大的那個屬性作為決策節點。
例如對於上文中的例子,基於 id3 演算法應該選用哪個屬性作為第乙個決策節點?
解:求各個屬性對於目標屬性的資訊增益: ga
in(s
,out
look
)=0.246,g
ain(
s,te
mper
atur
e)=0.029,g
ain(
s,hu
midi
ty)=
0.152,g
ain(
s,wi
nd)=
0.049
其中ga
in(s
,out
look
) 最大,所以選擇 ou
tloo
k 屬性作為根節點。
接下來對su
nny 分枝求哪個屬性作為子節點?
需要注意的是:此時用的資料集是子集ss
unny
,而不是最初的那個we
athe
r 資料集。
分別求temperature、humidity、wind對於目標屬性 play ball 的資訊增益,然後取最大值作為子節點。
…… ……
最終構建成的決策樹如下:
id3的主要思想是:在決策樹的非葉子結點進行屬性選擇的時候,用資訊增益作為選擇的標準,每乙個非葉子結點都選擇當前的候選屬性中資訊增益最大的那個屬性。這是貪心演算法的思想,使得每乙個非葉子結點在進行測試時都能獲得關於被測資料的最大類別資訊,從而把整個決策樹的熵值降到最小。
決策樹之ID3
一組含n個例項的資料集,每乙個例項長為m,其中包括m 1個特徵 屬性 最後乙個為該特徵的類別標籤。在此種資料集的基礎上,有一棵樹,這棵樹上的非葉子節點均為某特徵,葉子節點均為其父節點特徵的特徵值。那麼這棵樹是怎麼來的?我們 1.首先要在當前資料集中找到最適合分組的乙個特徵,2.然後根據這個特徵值的不...
決策樹 ID3構建決策樹
coding utf 8 from math import log import operator 建立訓練資料集 defcreatedataset dataset 1,1,yes 1,1,yes 1,0,no 0,1,no 0,1,no 資料集的最後乙個元素作為該資料的標籤,是否是魚 labels...
決策樹 ID3演算法
id3演算法通過計算每個屬性的資訊增益,認為資訊增益越大屬性越優,每次劃分選取資訊增益最大的屬性為劃分標準,重複這個過程,直到構成一棵決策樹。資訊熵是描述事件給我們的驚訝程度,如果所有事件的概率均等,那熵值大,驚訝程度低。如果有一事件的概率極高而其他極低,熵值便低,驚訝程度大。其計算公式如下 資訊增...