ID3决策树

知识准备:信息熵

是无序性(或不确定性)的度量指标。加入事件A的全概率划分是(A1,A2,…An),每部分发生的概率是(p1,p2,…pn),那信息熵定义为:

entropy(p1,p2,,pn)=p1log2p1p2log2p2pnlog2pn

通常以2为底数,单位为比特(bit),在数学证明上通常采用e为底数,单位为奈特(Nat)
更详细的介绍请参考 百度百科

核心思想及举例说明

ID3构造树的基本想法是随着树深度的增加,节点的熵迅速地降低。熵降低的速度越快越好,这样我们有望得到一棵高度最矮的决策树。在决策树各级结点上选择属性时,用信息增益(information gain)作为属性的选择标准,以使得在每一个非叶结点进行测试时,能获得关于被测试记录最大的类别信息。其具体方法是:检测所有的属性,选择信息增益最大的属性产生决策树结点,由该属性的不同取值建立分支,再对各分支的子集递归调用该方法建立决策树结点的分支,直到所有子集仅包含同一类别的数据为止。最后得到一棵决策树,它可以用来对新的样本进行分类。这是理想情况,当决策树的高度为属性(决策变量)的个数,叶子节点不纯,这意味着要根据概率来做出决策,即选择大概率分类作为分类结果。

信息增益计算:
设S是n个数据样本的集合,共分m个不同类 Ci(i=1,,m) 。设 ni 是类 Ci 中的样本数。则该样本分类所需的期望信息由下式给出:

I(n1,n2,,nm)=i=1mpilog2(pi)

其中, pi=ni/n ,是样本属于类 Ci 的概率。
设属性A具有v个不同值 a1,a2,,av 。可以用属性A将S划分为v个子集 {S1,S2,,Sv} ,设 nij 是子集 Sj 中属于类 Ci 的样本数。由A划分子集的熵或信息期望由如下式给出:
E(A)=j=1v(n1j+n2j++nmj)/nI(n1j,n2j,+,nmj)

其中,
I(n1j,n2j,+,nmj)=mi=1pijlog2(pij)
pij=nij/(n1j+n2j++nmj) ,是 Sj 中属于类 Ci 的概率。
那么,在属性A上分支将获得的信息增益是:
Gain(A)=I(n1,n2,,nm)E(A)

ID3算法的优点:算法的理论清晰,方法简单,学习能力较强。
ID3算法的缺点:只对比较小的数据集有效,且对噪声比较敏感,当训练数据集加大时,决策树可能会随之改变。

实例说明:
参考文章-归纳决策树ID3(Java实现)

outlooktemperaturehumiditywindyplay
sunnyhothighFALSEno
sunnyhothighTRUEno
overcasthothighFALSEyes
rainymildhighFALSEyes
rainycoolnormalFALSEyes
rainycoolnormalTRUEno
overcastcoolnormalTRUEyes
sunnymildhighFALSEno
sunnycoolnormalFALSEyes
rainymildnormalFALSEyes
sunnymildnormalTRUEyes
overcastmildhighTRUEyes
overcasthotnormalFALSEyes
rainymildhighTRUEno

以上是14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play),训练决策树以对新数据进行预测。
在无天气信息时,根据历史数据,打球的概率是9/14,不打球的概率是5/14,此时的熵为:

914log2914514log2514=0.940

属性有4个:outlook,temperature,humidity,windy。首先确定根节点。
outlook=sunny时,2/5的概率打球,3/5的概率不打球。entropy=0.971
outlook=overcast时,entropy=0
outlook=rainy时,entropy=0.971
而根据历史统计数据,outlook取值为sunny、overcast、rainy的概率分别是5/14、4/14、5/14,所以当已知变量outlook的值时,信息熵为:
5/14×0.971+4/14×0+5/14×0.971=0.693

因此,信息增益gain(outlook)=0.940-0.693=0.247
同理可以计算得到gain(temperature)=0.029, gain(humidity)=0.152, gain(windy)=0.048
可以看出gain(outlook)最大(即outlook在第一步使系统的信息熵下降得最快),因此选择outlook作为根节点。

这里写图片描述

同理可以计算之后的节点,最终结果如下:
这里写图片描述

附录

1.Java实现
ID3决策树(Java实现)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值