深入了解机器学习决策树模型——C4.5算法

本文介绍了C4.5算法作为ID3的改进版,解决了ID3处理连续特征和信息增益偏向的问题。C4.5通过信息增益比来选择特征,并对连续值采用阈值划分。文中详细阐述了信息增益比的计算以及如何处理连续值,并提供了C4.5算法的代码实现思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天是机器学习专题的第22篇文章,我们继续决策树的话题。

上一篇文章当中介绍了一种最简单构造决策树的方法——ID3算法,也就是每次选择一个特征进行拆分数据。这个特征有多少个取值那么就划分出多少个分叉,整个建树的过程非常简单。如果错过了上篇文章的同学可以从下方传送门去回顾一下:

如果你还不会决策树,那你一定要进来看看

既然我们已经有了ID3算法可以实现决策树,那么为什么还需要新的算法?显然一定是做出了一些优化或者是进行了一些改进,不然新算法显然是没有意义的。所以在我们学习新的算法之前,需要先搞明白,究竟做出了什么改进,为什么要做出这些改进。

一般来说,改进都是基于缺点和不足的,所以我们先来看看ID3算法的一些问题。

其中最大的问题很明显,就是它无法处理连续性的特征。不能处理的原因也很简单,因为ID3在每次在切分数据的时候,选择的不是一个特征的取值,而是一个具体的特征。这个特征下有多少种取值就会产生多少个分叉,如果使用连续性特征的话,比如说我们把西瓜的直径作为特征的话。那么理论上来说每个西瓜的直径都是不同的,这样的数据丢进ID3算法当中就会产生和样本数量相同的分叉,这显然是没有意义的。

其实还有一个问题,藏得会比较深一点,是关于信息增益的。我们用划分前后的信息熵的差作为信息增益,然后我们选择带来最大信息增益的划分。这里就有一个问题了,这会导致模型在选择的时候,倾向于选择分叉比较多的特征。极端情况下,就比如说是连续性特征好了,每个特征下都只有一个样本,那么这样算出来得到的信息熵就是0,这样得到的信息增益也就非常大。这是不合理的,因为分叉多的特征并不一定划分效果就好,整体来看并不一定是有利的。

针对这两个问题,提出了改进方案,也就是说C4.5算法。严格说起来它并不是独立的算法,只是ID3算法的改进版本。

下面我们依次来看看C4.5算法究竟怎么解决这两个问题。


信息增益比


首先,我们来看信息增益的问题。前面说了,如果我们单纯地用信息增益去筛选划分的特征,那么很容易陷入陷阱当中,选择了取值更多的特征。

针对这个问题,我们可以做一点调整,我们把信息增益改成信息增益比。所谓的信息增益比就是用信息增益除以我们这个划分本身的信息熵,从而得到一个比值。对于分叉很多的特征,它的自身的信息熵也会很大。因为分叉多,必然导致纯度很低。所以我们这样可以均衡一下特征分叉带来的偏差,从而让模型做出比较正确的选择。

我们来看下公式,真的非常简单:

G a i n _ r a t i o = G a i n ( D , a ) I V ( a ) Gain\_ratio = \frac{Gain(D, a)}{IV(a)} Gain_ratio=IV(a)Gain(D,a)

这里的D就是我们的训练样本集,a是我们选择的特征,IV(a)就是这个特征分布的信息熵

我们再来看下IV的公式:

I V ( a ) = − ∑ v = 1 V p v log ⁡ 2 p v IV(a) = -\sum_{v=1}^Vp_v\log_2p_v IV(a)=v=1Vpv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值