决策树原理与代码

原理

决策树是一种机器学习的方法。决策树的生成算法有ID3, C4.5和C5.0等。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。

简单来说,决策树,顾名思义,首先要有决策,那么决策的依据是什么,是属性是特征,比如一个人,他的属性是什么,可以是性别,可以是头发长短,可以是戴眼镜与否等等;第二点,是树,既然是树,就要有枝丫节点和叶子节点。那么我理解的决策树就是,根据某种指标,决策出什么样的属性在哪一个节点位置,可以生成一颗又快又好且具有泛化能力的树来。指标可以是信息增益,增益率和基尼系数等。

很好的例子: https://blog.csdn.net/zjsghww/article/details/51638126

ID3

由增熵(Entropy)原理来决定那个做父节点,那个节点需要分裂。对于一组数据,熵越小说明分类结果越好。
Entropy=- sum [p(x_i) * log2(P(x_i) ]
p(x_i) 代表了节点 x为分类i的概率,其中log2为取以2为底的对数。

集合1: 5次去打篮球,1次不去打篮球
集合2: 3次去打篮球,3次不去打篮球
 Entropy (t)=−(1/6)log2(1/6)−(5/6)log2(5/6)=0.65
 Entropy (t)=−(3/6)log2(3/6)−(3/6)log2(3/6)=1

当分裂父节点时,分裂有很多选择,针对每一个选择,与分裂前的分类错误率比较,留下那个提高最大的选择,即熵减最大的选择。

C4.5

通过对ID3的学习,可以知道ID3存在一个问题,那就是越细小的分割分类错误率越小,所以ID3会越分越细。为了避免过拟合,C4.5对ID3进行了改进,C4.5中,优化项要除以分割太细的代价,这个比值叫做信息增益率,显然分割太细分母增加,信息增益率会降低。

在这里插入图片描述
例子
在这里插入图片描述

1.首先,应该先算信息熵

根据信息熵的公式,7个样本,4个否,3个是,则信息熵:
在这里插入图片描述
2.计算各个节点的信息熵
在这里插入图片描述
3.根据公式相减
在这里插入图片描述
根据上面的这个思路,我们就可以分别计算湿度,温度,刮风的信息增益如下:

Gain(D,天气) = 0.02
Gain(D , 温度)=0.128(这个最大)
Gain(D , 湿度)=0.020
Gain(D , 刮风)=0.020

可以看出来,温度作为属性的信息增益最大,所以,先以这个为节点,划分样本。

信息增益率
本来ID3算法计算信息增益好好的,但是C4.5一定要计算信息增益比(gainratio)这是为什么呢?
假如我们新增一列用天数来做为特征(01-01,01-02…),显然,每一天都可以将样本分开,这种样本分隔的结果就是计算出来的Gain(D,Day)=0,那么总的熵就等于0.985,这特征可真是够“好”的!不过显然这种特征对于样本的分隔没有任何意义。类似的情况还有人们的身份证号、信用卡号、学号等等特征。
那么导致这样的偏差的原因是什么呢?从上面的例子应该能够感受出来,原因就是该特征可以选取的值过多。
在这里插入图片描述
解决办法自然就想到了如何能够对树分支过多的情况进行惩罚,这样就引入了下面的公式,
信 息 增 益 率 = G a i n ( D , X ) I n t I ( D , X ) 信息增益率=\frac{Gain(D,X)}{IntI(D,X)}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值