ID3决策树、信息熵、信息增益

7 篇文章 0 订阅
1 篇文章 0 订阅

本文所用的例子引自《机器学习》,周志华。

ID3决策树

ID3中的ID,是Iterative Dichotomiser的简称。 ID3是一种经典的基于信息增益的决策树学习算法。

信息熵

信息熵是度量样本集合纯度最常用的一种指标。假定当前样本集合 D D D中第 k k k类样本所占的比例为 p k ( k = 1 , 2 , … , ∣ Y ∣ ) p_k(k=1,2, \ldots,|\mathcal{Y}|) pk(k=1,2,,Y),则 D D D的信息熵被定义为:
Ent ⁡ ( D ) = − ∑ k = 1 ∣ Y ∣ p k log ⁡ 2 p k \operatorname{Ent}(D)=-\sum_{k=1}^{|\mathcal{Y}|} p_{k} \log _{2} p_{k} Ent(D)=k=1Ypklog2pk

信息增益

假定离散属性 a a a V V V个可能的取值 { a 1 , a 2 , … , a V } \left\{a^{1}, a^{2}, \ldots, a^{V}\right\} {a1,a2,,aV}, 若使用 a a a来对样本集 D D D进行划分,则会产生 V V V个分支结点,其中第 v v v个分支结点包含了 D D D中所有在属性 a a a上取值为 a v a^v av的样本,记做 D v D^v Dv.我们可以根据上式计算出 D v D^v Dv的信息熵,考虑到不同分支结点所包含的样本数不同,给分支结点赋予权重 ∣ D v ∣ / ∣ D ∣ \left|D^{v}\right| /|D| Dv/D, 即样本数越多的分支结点影响越大,于是可计算出用属性 a a a对样本集 D D D进行划分所获得的“信息增益”(information gain)
Gain ⁡ ( D , a ) = Ent ⁡ ( D ) − ∑ v = 1 V ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) \operatorname{Gain}(D, a)=\operatorname{Ent}(D)-\sum_{v=1}^{V} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) Gain(D,a)=Ent(D)v=1VDDvEnt(Dv)

ID3决策树

ID3决策树使用每次的信息增益来进行决策树的划分属性选择。

举例

以该西瓜集为例:

西瓜集

西瓜显然分为分为好瓜和坏瓜,所以 ∣ Y ∣ = 2 |\mathcal{Y}|=2 Y=2。在决策树学习开始阶段,根节点包含所有 D D D中的样例,其中正例占 p 1 = 8 17 p_{1}=\frac{8}{17} p1=178,反例占 p 2 = 9 17 p_{2}=\frac{9}{17} p2=179。于是,根据公式可以计算得出根节点的信息熵为:
Ent ⁡ ( D ) = − ∑ k = 1 2 p k log ⁡ 2 p k = − ( 8 17 log ⁡ 2 8 17 + 9 17 log ⁡ 2 9 17 ) = 0.998 \operatorname{Ent}(D)=-\sum_{k=1}^{2} p_{k} \log _{2} p_{k}=-\left(\frac{8}{17} \log _{2} \frac{8}{17}+\frac{9}{17} \log _{2} \frac{9}{17}\right)=0.998 Ent(D)=k=12pklog2pk=(178log2178+179log2179)=0.998

随后,我们计算当前属性集合{色泽,根蒂,敲声,纹理,脐部,触感}中每个属性的信息增益。我们以属性“色泽”为例,它有3个可能的取值:{青绿,乌黑,浅白}。若使用该属性对 D D D进行划分,则可以得到3个子集,分别记为 D 1 D^1 D1(色泽=青绿), D 2 D^2 D2(色泽=乌黑), D 3 D^3 D3(色泽=浅白)。

子集 D 1 D^1 D1中包含6个样例,编号为1,4,6,10,13,17。其中正例占 p 1 = 3 6 p_{1}=\frac{3}{6} p1=63,反例占 p 2 = 3 6 p_{2}=\frac{3}{6} p2=63 D 2 D^2 D2正反例占 p 1 = 4 6 , p 2 = 2 6 p_{1}=\frac{4}{6}, p_{2}=\frac{2}{6} p1=64,p2=62. D 3 D^3 D3正反例占 p 1 = 1 5 , p 2 = 4 5 p_{1}=\frac{1}{5}, p_{2}=\frac{4}{5} p1=51,p2=54。可以计算出用“色泽”划分后三个分支结点的信息熵:

Ent ⁡ ( D 1 ) = − ( 3 6 log ⁡ 2 3 6 + 3 6 log ⁡ 2 3 6 ) = 1.000 \operatorname{Ent}\left(D^{1}\right)=-\left(\frac{3}{6} \log _{2} \frac{3}{6}+\frac{3}{6} \log _{2} \frac{3}{6}\right)=1.000 Ent(D1)=(63log263+63log263)=1.000

Ent ⁡ ( D 2 ) = − ( 4 6 log ⁡ 2 4 6 + 2 6 log ⁡ 2 2 6 ) = 0.918 \operatorname{Ent}\left(D^{2}\right)=-\left(\frac{4}{6} \log _{2} \frac{4}{6}+\frac{2}{6} \log _{2} \frac{2}{6}\right)=0.918 \\ Ent(D2)=(64log264+62log262)=0.918

Ent ⁡ ( D 3 ) = − ( 1 5 log ⁡ 2 1 5 + 4 5 log ⁡ 2 4 5 ) = 0.722 \operatorname{Ent}\left(D^{3}\right)=-\left(\frac{1}{5} \log _{2} \frac{1}{5}+\frac{4}{5} \log _{2} \frac{4}{5}\right)=0.722 Ent(D3)=(51log251+54log254)=0.722

于是可以计算得到属性“色泽”的信息增益:
Gain ⁡ ( D ,  色泽  ) = Ent ⁡ ( D ) − ∑ v = 1 3 ∣ D v ∣ ∣ D ∣ Ent ⁡ ( D v ) = 0.998 − ( 6 17 × 1.000 + 6 17 × 0.918 + 5 17 × 0.722 ) = 0.109. \begin{aligned} \operatorname{Gain}(D, \text { 色泽 }) &=\operatorname{Ent}(D)-\sum_{v=1}^{3} \frac{\left|D^{v}\right|}{|D|} \operatorname{Ent}\left(D^{v}\right) \\ &=0.998-\left(\frac{6}{17} \times 1.000+\frac{6}{17} \times 0.918+\frac{5}{17} \times 0.722\right) \\ &=0.109 . \end{aligned} Gain(D, 色泽 )=Ent(D)v=13DDvEnt(Dv)=0.998(176×1.000+176×0.918+175×0.722)=0.109.

类似的,可以计算出其他属性的信息增益:
Gain ⁡ ( D ,  根蒂  ) = 0.143 ; Gain ⁡ ( D ,  敲声  ) = 0.141 Gain ⁡ ( D ,  纹理  ) = 0.381 ; Gain ⁡ ( D ,  脐部  ) = 0.289 Gain ⁡ ( D ,  触感  ) = 0.006. \begin{array}{l} \operatorname{Gain}(D, \text { 根蒂 })=0.143 ; \quad \operatorname{Gain}(D, \text { 敲声 })=0.141 \\ \operatorname{Gain}(D, \text { 纹理 })=0.381 ; \quad \operatorname{Gain}(D, \text { 脐部 })=0.289 \\ \operatorname{Gain}(D, \text { 触感 })=0.006 . \end{array} Gain(D, 根蒂 )=0.143;Gain(D, 敲声 )=0.141Gain(D, 纹理 )=0.381;Gain(D, 脐部 )=0.289Gain(D, 触感 )=0.006.

显然,纹理的信息增益最大,应该选择“纹理”作为划分属性。随后依次对纹理划分得到的分支结点递归进行类似上面的计算,不断选择最优属性进行划分,直到递归结束(无属性可用,或样本划分标签一致)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值