算法仓库(二) 什么是信息增益率

来源:互联网 发布:为什么445端口关不掉 编辑:程序博客网 时间:2024/05/21 05:24

为什么要提出信息增益率这种评判划分属性的方法?信息增益不是就很好吗?其实不然,用信息增益作为评判划分属性的方法其实是有一定的缺陷的,书上说,信息增益准则对那些属性的取值比较多的属性有所偏好,也就是说,采用信息增益作为判定方法,会倾向于去选择属性取值比较多的属性。那么,选择取值多的属性为什么就不好了呢?举个比较极端的例子,如果将身份证号作为一个属性,那么,其实每个人的身份证号都是不相同的,也就是说,有多少个人,就有多少种取值,它的取值很多吧,让我们继续看,如果用身份证号这个属性去划分原数据集D,那么,原数据集D中有多少个样本,就会被划分为多少个子集,每个子集只有一个人,这种极端情况下,因为一个人只可能属于一种类别,好人,或者坏人,那么此时每个子集的信息熵就是0了,就是说此时每个子集都特别纯。这样的话,会导致信息增益公式的第二项整体为0,这样导致的结果是,信息增益计算出来的特别大,然后决策树会用身份证号这个属性来划分原数据集D,其实这种划分毫无意义。因此,为了改变这种不良偏好带来的不利影响,提出了采用信息增益率作为评判划分属性的方法。

信息增益率是使用信息增益和分列信息度量来计算的,公式如下:


  其中,分裂信息度量被定义为(分裂信息用来衡量属性分裂数据的广度和均匀):


其中V1到Vc是c个值的属性A分割V而形成的c个样例子集。注意分裂信息实际上就是V关于属性a的各值的熵。这与我们前面对熵的使用不同,在那里我们只考虑D关于学习到的树要预测的目标属性的值的熵,如果继续使用前文算法仓库(一) 什么是信息增益中的数据,来计算Outlook的分裂信息度量就是outlook中各个值对于自己来说的熵的和:


其中5代表在总共14条记录中 sunny的个数,该值就是sunny的值相对于outlook本身的熵,以此类推可以得到Entropy(Outlook,overcast)

Entropy(Outlook,rain)的值,这几个值加起来就是分列信息度量I(Play,Outlook)。


如果a只含有少量的取值的话,那么a的纯度就比较高,否则的话,a的取值越多,a的纯度越低,IV(a)的值也就越大,因此,最后得到的信息增益率就越低。 


原创粉丝点击