【自由探索】决策树归纳

决策树归纳:

概念: 每个节点表示一个测试, 是则拐至右子节点,否则拐至左子结点,继续进行子节点测试。。。

1)ID3:

思路: 在当前状态下,哪一种属性对决策影响最大,则将这种属性A的取值分支判断作为当前节点的测试,由该属性A的多种取值分支衍生出来的子节点,对于子节点 当前的状态 = “已有的状态”+ (属性A=ai),再往下搜索决策影响最大因子(属性)。
例图:
下面是对于不同情况下 要不要去打球的样本

此图为标准数据, 首先由于当前尚未有任何测试, 故当前状态为参考结果play的yes/no, 
这里用信息熵表示影响因子,公式为:

其中p1 p2 为属性的候选值的概率, 此时为Yes/No,所以只需要p1 p2俩个参数。 容易从表中统计出 p1=9/14, p2=5/14.

统计在此状态下,剩下的属性对决策的影响(即 信息熵): 
首先是在不同属性下的分选项对决策的影响:


计算每个属性在现有条件下的信息熵, 取信息熵变化最大的属性(即在当前状态下,最能决定决策的属性):

计算方法是: (以outlook为例)
1)计算outlook取不同值的时候的信息熵(当前的不稳定因素是yes/no),
如:
outlook=sunny时,2/5的概率打球,3/5的概率不打球。(p1=2/5  p2=3/5 即为 -2/5log(2/5) -3/5log(3/5) )   entropy=0.971
同理: outlook=overcast,entropy=0        outlook=rainy, entropy=0.971

2)计算outlook的信息熵(当前不稳定因素是outlook的)

outlook=sunny 5/14         overcast 4/14   rainy 5/14,

此时的信息熵为 5/14 × 0.971 + 4/14 × 0 + 5/14 × 0.971 = 0.693

3)计算变化量(信息增溢 gain)

gain(outlook) = 原来的信息熵 - 当前的信息熵 = 0.940 - 0.693 = 0.247

同理算出 gain(temperature) = 0.029, gain(humidity)=0.152, gain(windy)=0.048. 即outlook变化最大,即在当前情况下,outlook属性对决策(yes/no)的影响最大, 故当前测试应该是对于outlook的取值分支判断:(同时在属性列表中删除outlook属性)



同理在sunny情况下不同属性(temperature、humidity、windy)在不同取值下的Yes/no情况,计算最终的信息熵,跟当前的信息熵(0.693)进行比较

在overcast情况下。。。。rainy。。。。。

最后的结果为:



注:

1)关于entropy计算可以用Matlab实现:

>>f = inline('-x*log(x)/log(2) - y*log(y)/log(2)', 'x', 'y');
>> f(9/14, 5/14)   
2)关于删掉的选中属性A,在A所处的节点的所有子树都不可能出现这个属性(决策已经是在A属性下分析了), 但是对于与该节点的兄弟节点由于还没考虑到A,所以在A的“侄子”节点可能会出现A。
3)关于结束条件: 首先,当此时的所有元组的结果都一致,即信息熵为0(处理时,用|x|<e-7等等),此时的节点即为叶子节点(overcast)。 其次, 如果当前没有剩余的属性,此节点亦为叶节点,决策采取的方式是 多数表决,少数服从多数。


以上主要参考: http://blog.csdn.net/zhangchaoyangsun/article/details/8470195,详细代码在此网址,就不赘余了


总结:

决策树的思想是 当前状态下,最能影响决策的因素为当前决策的判定条件,再进一步细分,所选取的因素永远是当前条件下最能影响决策的属性(贪心算法)

同时由于结束条件(1),也可以在剩余属性不为空的时候结束决策(属性之间有可能出现冗余, 属性A的值与属性B的值可能有线性关系等等,比如所有户籍是广州A的广东人B,广东这个属性就冗余了,对决策无影响(在数学上表现为信息熵为0 或小到忽略不计),如果此时的属性集只剩余B属性, 这个时候就可以结束这一子树的继续搜索),一定意义上剪枝(树剪枝中的先剪枝)?

重复, 复制的困扰:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值