java 信息增益_对信息增益(IG,Information Gain)的理解和计算
发布日期:2021-10-31 15:52:10 浏览次数:2 分类:技术文章

本文共 899 字,大约阅读时间需要 2 分钟。

可能理解的不对。

决策树构建中节点的选择靠的就是信息增益了。

信息增益是一种有效的特征选择方法,理解起来很简单:增益嘛,肯定是有无这个特征对分类问题的影响的大小,这个特征存在的话,会对分类系统带来多少信息量,缺了他行不行?

既然是个增益,就是个差了,减法计算一下,谁减去谁呢?

这里就用到了信息熵的概念,放到分类系统里面,信息熵如何计算呢?

分类系统里面无非是样本xi以及样本的分类结果yi,假设这个分类系统有k类,那么作为训练集来说,分类情况基本就定了,是按照样本的各个特征定的。那么在这些样本的信息的前提下,分类器有个结果,就自然包含了一种信息量在里面,可以用信息熵E(S)计算出来。

当然大家都知道熵表达的是不确定度,分布约均匀,越不确定,熵越大。

那么当把特征f引入的时候,会不会对系统的信息量有所影响呢?也就引入f之后的系统不确定度E(S|f)是多少呢?其实是个条件熵。也就是加入条件f之后,不确定度减少了多少?信息熵的有效减少量是多少?

为了计算条件熵,我们可以固定f的值,也就是根据f在训练集中呈现的值,计算条件熵E(S|f)。简单的说就是,把根据f划分的各个小系统的信息熵加权求和,权重就是各个小系统占系统S的比例(假设f有两个值0、1,选0的时候有a个样本,样本当然有类别y;f是1的时候有b个样本;a+b=n(样本总数);那么权重就是a/n和b/n了;每个小系统的信息当然跟大系统求法一样了)。

那么增益IG(f)=E(S)-E(S|f).

选择  f*=argmax(IG(f))的f作为第一个根节点,然后递归下去吧。

-----------

关于信息增益进行特征选择的问题,拿c类分类问题再理解下,如果一个特征都不参考,那么每个样本属于每个类的概率当然是1/c,此时整个系统的信息熵是最大的logc,一个极端的情况,加入特征A后,那么很明确的就将每个样本分到某个类别中去了,概率分布(1,0,0,0....),是c维的。

那么此时整个系统的信息熵是不是就是最小的0了,此时加入A后的信息增益为1-0=1。当然,很少会有这么管用的特征,所以就比较信息增益大的特征,用来特征选择。

转载地址:https://blog.csdn.net/weixin_39987847/article/details/114182673 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java compareable接口_Java对象比较-Comparable和Comparator接口使用
下一篇:java 提取url参数_Java提取URL某个参数的值

发表评论

最新留言

很好
[***.229.124.182]2024年03月28日 07时03分34秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章