信息熵、信息增益与信息增益率

社会主义新天地 提交于 2019-12-07 19:48:33

来源于http://m.blog.csdn.net/u012351768/article/details/73469813

信息熵(Information Entropy)

  信息熵是用来评估样本集合的纯度的一个参数,就是说,给出一个样本集合,这个样本集合中的样本可能属于好多不同的类别,也可能只属于一个类别,那么如果属于好多不同的类别的话,我们就说这个样本是不纯的,如果只属于一个类别,那么,我们就说这个样本是纯洁的。 
  而信息熵这个东西就是来计算一个样本集合中的数据是纯洁的还是不纯洁的。下面上公式: 
  

 
  下面解释一下公式的意思,其实很好理解,计算一个集合的纯度,就是把集合中每一个类别所占的比例

(k从1到 

,其中 

 表示类别的个数)乘上它的对数,然后加到一起,然后经过计算之后,可以得到一个数据集的信息熵,然后根据信息熵,可以判断这个数据集是否纯粹。信息熵越小的话,表明这个数据集越纯粹。信息熵的最小值为0,此时数据集D中只含有一个类别。

信息增益(Information Gain)

  下面来介绍信息增益,所谓的信息增益,是要针对于具体的属性来讲的,比如说,数据集D中含有两个类别,分别是好人和坏人,那么,随便选择一个属性吧,比如说性别,性别这个属性中包含两个值,男人和女人,如果用男人和女人来划分数据集D的话,会得到两个集合,分别是

。划分后的两个集合中各自有 好人和坏人,所以可以分别计算划分后两个集合的纯度,计算之后,把这两个集合的信息熵求加权平均

,跟之前没有划分的时候比

,用后者减去前者,得到的就是属性-性别对样本集D划分所得到的信息增益。可以通俗理解为,信息增益就是纯度提升值,用属性对原数据集进行划分后,得到的信息熵的差就是纯度的提升值。信息增益的公式如下: 
  

 
  先解释一下上式中的参数,

是数据集,

是选择的属性,

中一共有

个取值,用这

个取值去划分数据集

,分别得到数据集

,分别求这

个数据集的信息熵,并将其求加权平均。两者的差得到的就是信息增益。 
  那么这个信息增益有什么用呢?有用,可以根据信息增益值的大小来判断是否要用这个属性

去划分数据集

,如果得到的信息增益比较大,那么就说明这个属性是用来划分数据集

比较好的属性,否则则认为该属性不适合用来划分数据集

。这样有助于去构建决策树。著名的算法ID3就是采用信息增益来作为判断是否用该属性划分数据集的标准。

信息增益率(Information Gain Ratio)

  为什么要提出信息增益率这种评判划分属性的方法?信息增益不是就很好吗?其实不然,用信息增益作为评判划分属性的方法其实是有一定的缺陷的,书上说,信息增益准则对那些属性的取值比较多的属性有所偏好,也就是说,采用信息增益作为判定方法,会倾向于去选择属性取值比较多的属性。那么,选择取值多的属性为什么就不好了呢?举个比较极端的例子,如果将身份证号作为一个属性,那么,其实每个人的身份证号都是不相同的,也就是说,有多少个人,就有多少种取值,它的取值很多吧,让我们继续看,如果用身份证号这个属性去划分原数据集

,那么,原数据集

中有多少个样本,就会被划分为多少个子集,每个子集只有一个人,这种极端情况下,因为一个人只可能属于一种类别,好人,或者坏人,那么此时每个子集的信息熵就是0了,就是说此时每个子集都特别纯。这样的话,会导致信息增益公式的第二项

整体为0,这样导致的结果是,信息增益计算出来的特别大,然后决策树会用身份证号这个属性来划分原数据集

,其实这种划分毫无意义。因此,为了改变这种不良偏好带来的不利影响,提出了采用信息增益率作为评判划分属性的方法。 
  公式如下: 
  

 
  其中

的计算方式如下: 
  

 
  

被称为是

的“固有值”,这个

的公式是不是很熟悉啊,简直和信息熵的计算公式一毛一样,就是看属性

的纯度,如果

只含有少量的取值的话,那么

的纯度就比较高,否则的话,

的取值越多,

的纯度越低,

的值也就越大,因此,最后得到的信息增益率就越低。 
  采用信息增益率可以解决ID3算法中存在的问题,因此将采用信息增益率作为判定划分属性好坏的方法称为C4.5。需要注意的是,增益率准则对属性取值较少的时候会有偏好,为了解决这个问题,C4.5并不是直接选择增益率最大的属性作为划分属性,而是之前先通过一遍筛选,先把信息增益低于平均水平的属性剔除掉,之后从剩下的属性中选择信息增益率最高的,这样的话,相当于两方面都得到了兼顾。 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!