信息增益到底怎么理解呢?
我通过例子一步一步讲解这个概念。
信息量度量的是一个具体事件发生了所带来的信息,而熵则是在结果出来之前对可能产生的信息量的期望——考虑该随机变量的所有可能取值,即所有可能发生事件所带来的信息量的期望。
再说一个对信息熵的理解。信息熵可还以作为一个系复统杂程度的度量,如果系越统复杂,出现不同情况的种类越多,那他么的信熵息是比较大的。
如果一个系统越简单,出现情况种类很少(极端情况为1种情况,那么对应概率为1,那么对应的信息熵为0),此时的信息熵较小。
熵只依赖于X的分布,而与X的取值无关。熵越大,随机变量的不确定性就越大;熵越小,随机变量的不确定性就越少。信息增益(information gain)表示得知特征X的信息而使得类 Y 的信息的不确定性减少的程度。
在决策树算法的学习过程中,信息增益是特征选择的一个重要指标,它定义为一个特征能够为分类系统带来多少信息,带来的信息越多,说明该特征越重要,相应的信息增益也就越大。
概念
我们前面说了,信息熵是代表随机变量的复杂度(不确定度)通俗理解信息熵 - 知乎专栏,条件熵代表在某一个条件下,随机变量的复杂度(不确定度)。
而我们的信息增益恰好是:信息熵-条件熵。
换句话说,信息增益代表了在一个条件下,信息复杂度(不确定性)减少的程度。那么我们现在也很好理解了,在决策树算法中,我们的关键就是每次选择一个特征,特征有多个,那么到底按照什么标准来选择哪一个特征。
这个问题就可以用信息增益来度量。如果选择一个特征后,信息增益最大(信息不确定性减少的程度最大),那么我们就选取这个特征。
例子
我们有如下数据:
可以求得随机变量X(嫁与不嫁)的信息熵为:
嫁的个数为6个,占1/2,那么信息熵为-1/2log1/2-1/2log1/2 = -log1/2=0.301
现在假如我知道了一个男生的身高信息。
身高有三个可能的取值{矮,中,高}
矮包括{1,2,3,5,6,11,12},嫁的个数为1个,不嫁的个数为6个
中包括{8,9} ,嫁的个数为2个,不嫁的个数为0个
高包括{4,7,10},嫁的个数为3个,不嫁的个数为0个
先回忆一下条件熵的公式如下:
我们先求出公式对应的:
H(Y|X = 矮) = -1/7log1/7-6/7log6/7=0.178
H(Y|X=中) = -1log1-0 = 0
H(Y|X=高) = -1log1-0=0
p(X = 矮) = 7/12,p(X =中) = 2/12,p(X=高) = 3/12
则可以得出条件熵为:7/120.178+2/120+3/12*0 = 0.103
那么我们知道信息熵与条件熵相减就是我们的信息增益,为0.301-0.103=0.198
所以我们可以得出我们在知道了身高这个信息之后,信息增益是0.198
结论
我们可以知道,本来如果我对一个男生什么都不知道的话,作为他的女朋友决定是否嫁给他的不确定性有0.301这么大。
当我们知道男朋友的身高信息后,不确定度减少了0.198.也就是说,身高这个特征对于我们广大女生同学来说,决定嫁不嫁给自己的男朋友是很重要的。
至少我们知道了身高特征后,我们原来没有底的心里(0.301)已经明朗一半多了,减少0.198了(大于原来的一半了)。
那么这就类似于非诚勿扰节目里面的桥段了,请问女嘉宾,你只能知道男生的一个特征。请问你想知道哪个特征。
假如其它特征我也全算了,信息增益是身高这个特征最大。那么我就可以说,孟非哥哥,我想知道男嘉宾的一个特征是身高特征。因为它在这些特征中,对于我挑夫君是最重要的,信息增益是最大的,知道了这个特征,嫁与不嫁的不确定度减少的是最多的。
哈哈,希望能对理解信息增益有所帮助。
信息增益到底怎么理解呢?相关推荐
- 数据库到底如何理解呢
在互联网横行的时代,我们都知道得数据者得天下. 工作中我们一直说数据库,话说过来数据库到底是什么呢? 大家可能会想到 MySql.PostgreSql......可能大家还会想到Redis.Mongo ...
- ELV局部视图与差分隐私【敏感度到底怎么理解】【下】
[后续]Analyzing Subgraph Statistics from Extended Local Views with Decentralized Differential Privacy ...
- ELV局部视图与差分隐私【敏感度到底怎么理解】【上】
<Analyzing Subgraph Statistics from Extended Local Views with Decentralized Differential Privacy& ...
- 【平衡车】PID控制原理到底如何理解?建议收藏!
文章目录 前言 PID算法 PID算法的形成 P算法,即比例控制算法: I算法,即积分控制算法 D算法,即微分控制算法 PID总体的数学模型: 基于单片机的PID控制算法: 单片机中的PID算法的表达 ...
- matlab中cell元胞到底怎么理解
cell元胞如何理解 cell元胞是matlab中一种数值类型,本质与double.char类型相同.但不同的地方在于cell是包含数值的数值集. 假设A为cell类型变量 每个元胞单元A{i,j}中 ...
- JMM到底如何理解?JMM与MESI到底有没有关系?
hello,小伙伴们好,我是江湖人送外号[道格牙]的子牙老师. 好久没更新文章了.不是我在偷懒哈,是在备手写JVM小班二期的课,终于备完了.二期相比一期增加了很多爆炸性内容,所以这个备课时间花的有点长 ...
- python axis到底如何理解?
注意看,官方对于0和1的解释是轴,也就是坐标轴.而坐标轴是有方向的,所以千万不要用行和列的思维去想axis,因为行和列是没有方向的,这样想会在遇到不同的例子时感到困惑. 根据官方的说法,1表示横轴,方 ...
- 谐波?到底怎么理解?这次是明白了!
在振动学里认为一个振动产生的波是一个具有一定频率的振幅最大的正弦波叫基波. 这些高于基波频率的小波就叫作谐波. 谐波是指对周期性非正弦交流量进行傅里叶级数分解所得到的大于基波频率整数倍的各次分量,通常 ...
- php stream_set_blocking().,stream_set_blocking阻塞和非阻塞到底怎么理解?????
伪代码如下: $main_socket = stream_socket_server("tcp://0.0.0.0:8888", $error_code, $error_msg) ...
最新文章
- 如何使用VB编写Excel的COM组件
- 皮一皮:千万别得罪一个文科生...
- python花钱培训值吗-交钱了,学了3天Python编程,我想放弃了......
- (一)为什么你应该(从现在开始就)写博客
- BUUCTF(misc)变异凯撒 --二
- 函数作用域,闭包,数据类型的题目
- 现代谱估计-互谱功率
- 重拾强化学习的核心概念_强化学习的核心概念
- JavaScript中的回调函数(callback)
- (软件工程复习核心重点)第五章详细设计-第五节:程序复杂度的定量度量
- Go 到底算不算一门面向对象的编程语言
- SSRS里面的if else表达式 和决策函数
- java 排队实现_java中的优先列队-PriorityQueue源码实现解析
- 智能体挑战赛 - “奥林匹克 跑步运动”
- 唯心主义-柏拉图的哲学世界
- 非功能性需求都包括哪些方面?
- java端实现对数据库的增加
- ESP32搞的NES游戏掌机
- 亚马逊测评现在还能做吗?需要注意哪些?
- 计算机word教案设计,信息技术教学:WORD教学设计