数据挖掘算法 1 ID3(python)

一 概念公式:

1信息熵:

若有n个消息,其给定各个方向概率分布为P=(p1,p2…pn),则由该分布传递的信息量称为P的熵,记为

2:信息增益:

信息增益度是两个信息熵之间的差值,记为Gain(P1)=entropy(p0,p1)-entropy(p0)

 

二 算法思想:

首先计算各个属性的所有取值的信息熵,然后根据当前属性的取值概率计算出当前属性的总的信息熵,接下来计算当前属性的信息增益度,最后通过所有属性的信息增益比较,增益大的先构造来构造决策树。希望随着决策树深度的增加,节点的熵迅速地降低,并且熵降低的速度越快越好,这样我们有望得到一棵高度最矮的决策树。

 

三 实例题目:

我们统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球。

outlooktemperaturehumiditywindyplay
sunnyhothighfalseno
sunnyhothightrueno
overcasthothighfalseyes
rainymildhighfalseyes
rainycoolnormalfalseyes
rainycoolnormaltrueno
overcastcoolnormaltrueyes
sunnymildhighfalseno
sunnycoolnormalfalseyes
rainymild            normal  false  yes
sunnymildnormaltrueyes
overcastmildhightrueyes
overcasthotnormalfalseyes
rainymildhightrueno

 

四实例解剖

1.目标:属性有4个:outlook,temperature,humidity,windy。我们首先要决定哪个属性作树的根节点。

2.计算:对每项指标分别统计:在不同的取值下打球和不打球的次数。设打球概率为P(Y),不打球概率为P(N)

 

outlook=sunny时,P(Y)=2/5,P(N)=3/5。此时entropy(sunny)=0.970

outlook=overcast时,P(Y)=1,P(N)=0,此时entropy(overcast)=0

outlook=rainy时,P(Y)=3/5,P(N)=2/5,entropy(rainy)=-3/5Log2(3/5)-2/5Log2(2/5)=0.442+0.528=0.970

而根据历史统计数据,outlook P(sunny)=5/14,P(overcast)=4/14, P(rainy)=5/14,

所以entropy(outlook)=P(sunny)*entropy(sunny)+P(overcast)*entropy(overcast)+ P(rainy)* entropy(rainy)

=5/14× 0.971 + 4/14 × 0 + 5/14 × 0.971 = 0.693

这样的话系统熵就从0.940下降到了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。

接下来要确定N1取temperature、humidity还是windy?在已知outlook=sunny的情况,根据历史数据,我们作出类似table 2的一张表,分别计算

gain(temperature)、gain(humidity)和gain(windy),选最大者为N1。

3.依此类推,构造决策树。当系统的信息熵降为0时,就没有必要再往下构造决策树了,此时叶子节点都是纯的--这是理想情况。最坏的情况下,决策树的高度为属性(决策变量)的个数,叶子节点不纯(这意味着我们要以一定的概率来作出决策)。

 

五实例实现:

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值