c4.5为什么使用信息增益比来选择特征?

ID3使用信息增益,c4.5使用信息增益比,我在网上找到的说法是信息增益的缺点是比较偏向选择取值多的属性,这句话怎么理解,取值越多会导致信息增益越大?
关注者
317
被浏览
127,850

16 个回答

最近正好在学决策树,信息增益和信息增益率确实是初学阶段很纠结的问题。要解决题主的疑惑,必须先分析Info-Gain(信息增益)和Gain-ratio(信息增益率)的关系与差异。

从熵(Entropy)开始说起,熵最初是一个物理学概念,后来在数学中用来描述“一个系统的混乱程度”,因此一个系统的信息熵越高就越无序,信息熵越低就越有序,信息熵越高,使其有序所要消耗的信息量就越大。

我们的目的就是将系统变得有序并找出确定的信息

假设变量X=\left\{ x_{1},x_{2}...x_{i}...x_{n}\right\} ,其中每个元素对应的概率(比例)为P=\left\{ p_{1},p_{2}...p_{i}...p_{n}\right\} ,则对应熵的计算公式如下:

E(X)=-\sum_{i=1}^{n}{p_{i}log_{2}(p_{i} ) }

而信息增益(Info-Gain)指的就是熵的减少量:

IGain(S,A)=E(S)-E(A)

上面公式中S和A分别代表操作前后的数据划分状态。

下面举个例子,依然用天气预报数据集:

在这个例子中,最后一列指是否出去玩,这里作为我们所要预测的标记值(label),而前四列就是我们需要借助的数据,每一列都是一个特征(feature)。

初始状态下,label列总共为14行,有9个yes和5个no,所以label列初始信息熵为:

E(S)=-\frac{9}{14}log_{2}(\frac{9}{14})- \frac{5}{14}log_{2}(\frac{5}{14})

假设我们先划分outlook这一列,分成sunny、rain、overcast三类,数量分别为5:5:4,考虑到每个类别下对应的label不同,可以计算出划分后的信息熵:

E(A)=\sum_{v\in value(A)}{\frac{num(S_{v}) }{num(S)}E(S_{v} ) }

E(A)=\frac{5}{14}E(S_{1} )+\frac{5}{14}E(S_{2} )+\frac{4}{14}E(S_{3} )

其中E(S1)、E(S2)、E(S3)分别为每个类别下对应的label列的熵。

而信息增益(Info-Gain)就是指划分前后信息熵的变化:

IGain(S,A)=E(S)-E(A)

在ID3算法中,信息增益(Info-Gain)越大,划分越好,决策树算法本质上就是要找出每一列的最佳划分以及不同列划分的先后顺序及排布

后面回到题中的问题,C4.5中使用信息增益率(Gain-ratio),ID3算法使用信息增益(Info-Gain),二者有何区别?

根据前文的例子,Info-Gain在面对类别较少的离散数据时效果较好,上例中的outlook、temperature等数据都是离散数据,而且每个类别都有一定数量的样本,这种情况下使用ID3与C4.5的区别并不大。但如果面对连续的数据(如体重、身高、年龄、距离等),或者每列数据没有明显的类别之分(最极端的例子的该列所有数据都独一无二),在这种情况下,我们分析信息增益(Info-Gain)的效果:

根据公式

IGain(S,A)=E(S)-E(A)

E(S)为初始label列的熵,并未发生变化,则IGain(S,A)的大小取决于E(A)的大小,E(A)越小,IGain(S,A)越大,而根据前文例子,

E(A)=\sum_{v\in value(A)}{\frac{num(S_{v}) }{num(S)}E(S_{v} ) }

若某一列数据没有重复,ID3算法倾向于把每个数据自成一类,此时

E(A)=\sum_{i=1}{\frac{1}{n}log_{2}(1) } =0

这样E(A)为最小,IGain(S,A)最大,程序会倾向于选择这种划分,这样划分效果极差。

为了解决这个问题,引入了信息增益率(Gain-ratio)的概念,计算方式如下:

Info=-\sum_{v\in value(A)}{\frac{num(S_{v}) }{num(S)}log_2{\frac{num(S_{v} )}{num(S)} }}

这里Info为划分行为带来的信息,信息增益率如下计算:

Gain-ratio=\frac{IGain(S,A)}{Info}

这样就减轻了划分行为本身的影响。

评论中很多人对文中信息量和熵的部分有疑问,这确实是个很绕的问题,目前对于信息的定义主要有以下几种:

香农(C. E. Shannon)信息是不确定性的消除

维纳信息定义 信息是独立于物质、能量的一种属性标示。

逆香农信息定义 信息是确定性的增加

邓宇等人的定义 信息是事物现象及其属性标识的集合。

上面几种定义各不相同,答主比较倾向于逆香农信息定义,但本质上还是香农那一套。

感觉都没有解释到点子呀。。这个问题下的回答基本上都在说极限情况下怎么怎么样,那么非极限情况呢?C4.5的特征选择策略在非极限情况下也是优于ID3吗?

来来来,上点干货啦~数学不好的童鞋直接拉到底部看结论,觉得不错别忘赞( ̄∇ ̄)

借着复习,刚自己乱推导了一下。首先假如数据集有200K个样本,并且包含俩类别,类别先验服从均匀分布(每个类别100K个样本)。然后我们拿过来俩特征,一个特征A包含10K个取值,另一个特征B包含2个取值。这俩特征都是跟类别毫无相关性的特征(所以当然是两个相同强度的特征),也就是说,这俩特征不管取什么值,都不会改变数据集的类别分布,所以画个表格:

显然这时对于每个特征的每个取值,数据集的类别分布依然是均匀分布,那么这时根据条件熵计算公式可以算出特征A的条件熵为

H(D|A)=\sum_{i=1}^{10K}\frac{20}{200K}\cdot1=1

而特征B的条件熵为

H(D|A)=\sum_{i=1}^{2}\frac{100K}{200K}\cdot1=1

显然这样信息增益G(A)=G(B),也就是说ID3决策树并没有偏向于取值多的特征A哇。

然而不要忘了,这里其实隐藏了一个坑:在计算特征的每个取值下的熵的时候(即计算H(D|A=i)=-\sum_{k=1}^Kp_k\log p_k=-\sum_{k=1}^2\frac{10}{10+10}\cdot log(\frac{10}{10+10}) 时),需要估计每个类别k的概率!显然我们是直接用频率去近似的概率。

然而根据大数定律,只有当样本数足够多的时候,频率才可以准确的近似概率。也就是说,样本数越少,对概率的估计结果的方差就会越大(想象一下做抛硬币实验来近似正面向上的概率,如果只抛两次,那么得到的正面向上的概率可能会非常离谱。而如果抛1万次,不论何时何地几乎总能得到近似0.5的概率)。而方差大会导致什么结果呢?显然就会导致该取值下的类别错估计为非均匀分布呀!而非均匀分布,不就是说导致该取值下的熵更小了嘛。反应慢的同学可以试着在上面的例子里,将特征A的每个取值下的每个类别的样本数随机加几个样本减几个样本,在特征B的每个取值下也是这样做,然后再算一下A和B的条件熵(显然A的条件熵会显著降低,而B几乎不受影响)。

所以说,ID3决策树,或者说信息增益,或者说条件熵,并不是说一定会偏向于取值多的特征,而是数据集的不充足以及客观存在的大数定律导致取值多的特征在计算条件熵时容易估计出偏小的条件熵。如果数据集足够大,均分到某特征的每个取值的样本足够多,那么这时信息增益是没有偏向性的。比如还是上面的例子,你要是把特征A改成20个取值,那么这时对于A的每个取值下还是有很多样本的,这时你会发现虽然A的取值数量是B的10倍,但是它俩算出来的条件熵并没有明显差别(除非你特别夸张的加噪声)。

当然,可能有人会问,那么对于类别的先验分布非均匀的情况是不是也成立呢?(比如先验分布是类别0占1/3,类别1占2/3)好像一想,这样的话加了噪声后有可能让特征A的一些取值变得更趋向于均匀分布呀,那么鬼知道这些噪声总体上会让类别分布变得更均匀还是更不均匀呀。。。其实这个问题也很简单——对于一个凸函数来说(或者在有效区间上是凸的),任意两个不相等的点x1,x2的中值处的函数值一定小于两点函数值的均值(即 f(\frac{x1+x2}{2})<\frac{f(x1)+f(x2)}{2} )(懵逼了的同学自己画一下标准二次函数曲线,哦对了,不要说标准二次函数是凹函数哈,数学界习惯于规定下凸为凸,上凸为凹,吐槽一下某流行的本科教材)。这跟我们要讨论的问题有什么关系呢?因为我们可以假设噪声为白噪声呀,所以可以看作每个特征的取值下一个类别少了几个样本,就期望另一个类别多几个样本。即 H(D|A=i)=\frac{1}{2}f(x-n)+\frac{1}{2}f(x+n))=\frac{f(x1)+f(x2)}{2} ,而特征B特征数少,所以近似为 H(D|B=j)=\frac{1}{2}f(x-n)+\frac{1}{2}f(x+n))\approx \frac{1}{2}f(x)+\frac{1}{2}f(x)=f(\frac{x1+x2}{2}) 所以说,如果函数f是凸的,显然 H(D|B=j)<H(D|A=i) ,所以有 G(D|B)>G(D|A) 。显然我们在刚才的均匀分布特例里看到实际上有 G(D|B)<G(D|A) ,所以f不可能是凸的。那么f是完全凹函数还是仅仅部分凹呢?有兴趣的同学对f求导一下吧~公式敲吐了,不贴上来啦(感觉看到这里还能保持清醒的同学没多少吧╮( ̄▽ ̄"")╭

最后总结一下:

ID3决策树的信息增益有偏向性的前提是某个特征的每个取值下的样本数非常少,因此其他回答里说的取极限时的讨论仅仅是个极度不满足大数定律的特例而已。当数据集非常大,或者说那些取值多的特征并没有多到很夸张时,信息增益并没有多大偏向性。

至于C4.5的修正方案是不是真的客观的恰到好处的和谐掉ID3的偏向性那就是另一篇文章啦。