信息熵的直观理解

在机器学习算法(如二叉树)、特征选择(互信息)中经常用到熵的概念,信息熵的概念以及介绍网上有很多,这里主要做一个直观的介绍。

1. 信息的度量

2. 信息熵

一、 信息量

常常把消息中有意义的内容成为信息。我们常常说,某人说的某句话信息量很大,具体在信息论中,其实指的是他说的这句话消除的不确定性多。信息的度量定义为消除不确定性的多少。(信息是用来消除不确定性的东西--Shannon)

信息量函数:

$I=-\ln p_{i}$

其中,$p_{i}$是事件$x_{i}$发生的概率($x_{i} \in X$)

直观上,概率越小,即事件发生的概率越小,它指出的信息越具体,相应地,信息量就越大。怎么理解这句话呢,举个栗子。有一个30*30的座位表,你未来的女朋友在其中的一个座位上入座,但是你并不知道她到底在哪个座位上(这也是你为什么没有女朋友的原因吗,哈哈哈。。。)。如果天上的某位月老1告诉你,她坐在第6排,那么范围会缩小很多。月老2告诉你“她坐在第6排第6列”。“她坐在第6排”和“她坐在第6排第6列”,直观上显然后者包含的信息量更多。那么如何定量的比较这两句话的信息量大小呢?

* 对于前者,事件发生的概率是 $p = \frac{30}{30 \times 30}= \frac{1}{30}$,那么信息量 $I=- \ln p_{i}= 3.4$

* 对于后者,事件发生的概率是 $p = \frac{1}{30 \times 30} = \frac{1}{900}$,那么信息量 $I=- \ln p_{i}= 6.8$

对于前者,月老1给出的信息还是太少,即从原来什么都不知道消除的不确定性还是太少,同时月老1的预言发生的概率也比较大。月老2给出的信息非常具体,消除的不确定性很多,这句话发生的概率对应地也比较小。也可以这么理解,给出的信息越具体,发生的概率越小,风险越高,因为你不知道他说的到底对不对(信息量大不代表信息准确)。

总结一句话,一个事件的信息量就是这个事件发生的概率的负对数。

二、信息熵

简单的讲,信息熵(entropy)就是平均而言发生一个事件我们得到的信息量大小。所以数学上,信息熵其实是信息量的期望。

$H = -\sum_{x \in X} P(x) logP(x)$

$X$是事件的集合。在理解了信息量的概念后,公式还是很直观的,就是信息量的期望。

在信息论中,熵是信息不确定性的一个测度,熵越大表示信息的不确定性越高。比如对明天的天气做预测,

a. 预测1:100%晴天

$H_{1}=0.0$

b. 预测2:50%晴天, 50%阴天

$H_{2}=-\frac{1}{2} \ln (\frac{1}{2})-\frac{1}{2} \ln (\frac{1}{2})=1.0$

c. 预测3:30%晴天, 30%阴天,40%

$H_{3}=-\frac{3}{10}\ln \frac{3}{10} -\frac{3}{10}\ln \frac{3}{10} - \frac{4}{10} \ln \frac{4}{10}=1.6$

# 计算信息熵import math
x = [0.3, 0.3, 0.4]
H = sum(map(lambda x : -x * math.log(x, 2), x))

从上面这个例子也可以看出来,不确定性越大,信息熵越大。

时间: 2024-08-10 23:04:16

信息熵的直观理解的相关文章

深度学习与计算机视觉系列(5)_反向传播与它的直观理解

作者:寒小阳 && 龙心尘 时间:2015年12月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50321873 声明:版权所有,转载请联系作者并注明出处 1. 引言 其实一开始要讲这部分内容,我是拒绝的,原因是我觉得有一种写高数课总结的感觉.而一般直观上理解反向传播算法就是求导的一个链式法则而已.但是偏偏理解这部分和其中的细节对于神经网络的设计和调整优化又是有用的,所以硬着头皮写写吧. 问题描述与动机: 大家都知道的,其实我

机器学习中正则化项L1和L2的直观理解

正则化(Regularization) 机器学习中几乎都可以看到损失函数后面会添加一个额外项,常用的额外项一般有两种,一般英文称作?1-norm和?2-norm,中文称作L1正则化和L2正则化,或者L1范数和L2范数. L1正则化和L2正则化可以看做是损失函数的惩罚项.对于线性回归模型,使用L1正则化的模型建叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归).下图是Python中Lasso回归的损失函数,式中加号后面一项α||w||1即为L1正则化项. 下图是Python中Ri

关于梯度、旋度和散度的直观理解

转载的,这很现实很直接,建议吃饭的时候别看.... 散度为零,说明是无源场:散度不为零时,则说明是有源场(有正源或负源) 若你的场是一个流速场,则该场的散度是该流体在某一点单位时间流出单位体积的净流量. 如果在某点,某场的散度不为零,表示该场在该点有源,例如若电场在某点散度不为零,表示该点有电荷,若流速场不为零,表是在该点有流体源源不绝地产生或消失(若散度为负). 一个场在某处,沿着一无穷小的平面边界做环积分,平面法向量即由旋度向量给定,旋度向量的长度则是单位面积的环积分值.基本上旋度要衡量的是

后缀自动机的直观理解

后缀自动机(SAM) 搜了网上,多介绍应用,[3]算是一个比严格的定义性描述,并给出了证明.但是这个证明我并未看懂,下面综合一些资料给一些个人的直观但不失严谨的理解. 给定一个串A的后缀自动机是一个有限状态自动机(DFA),它能够且仅能够接受A的后缀,并且我们要求它的状态数最少. 设n=|A|, 状态数:st=[n+1,2n-1], 边数:eg=[n,3n-4].构造:空间复杂度:26*st, 时间复杂度O(3n).查询:O(|q|); 可以看出,我们有可能把26*st优化到3*st的. 先上图

模拟CMOS集成电路-单级放大器增益直观理解

我们再看辅助定理: 这里,Gm是指输出与地短接时的跨导:Rout表示当输入电压为零时的输出电阻.这个是书上的原话,但是在推算公式时发现,这两个量的定义还不是完全完整,我 的理解是: 首先Gm是等效跨导,牢记其定义为: 也就是说,我们在计算等效跨导的时候,直观地,要看输出电流的变化引起的输入电压的变化. 而Rout应该为交流电阻,最初的定义为: 也就是说,在计算交流输出电阻时,应该明确输出电压变化和输出电流变化的关系. 另外,戴维南等效方法贯穿在增益计算过程中,因此理清了这些关系,增益的计算就只涉

从信息熵角度去理解问题

信息是个很抽象的概念.人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少.比如一本五十万字的中文书到底有多少信息量.直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题.三国真人娱乐城 一条信息的信息量大小和它的不确定性有直接的关系.比如说,我们要搞清楚一件非常非常不确定的事,或是我们一无所知的事情,就需要了解大量的信息.相反,如果我们对某件事已经有了较多的了解,我们不需要太多的信息就能把它搞清楚.所以,从这个角度,我们可以认为,信息量的度量就等于不确定性的多少.

如何更直观理解进程、线程、事务的概念

开门见山:我对进程.线程.事务的理解是,它们都是一个执行者.虽然在java的api里面定义了Executor类,不过我们现在谈论的执行者的概念与java语言没有关系,注意区分不要混淆. 在现代操作系统中,进程的概念特别重要,各种操作系统教材都会花不少笔墨来讲解这个概念,然而书中的定义往往很不直观甚至冗长,它们时常给出这样的描述,“操作系统资源调度的基本单位”,我不是说这样的描述有错,而是说这样的描述不直观,如果我们这样来描述:“进程是一个执行者,它负责执行被代码定义了的过程”,或者更简洁的表述为

代价函数的直观理解

通过对代价函数的理解,了解了以下几个点: 1.单变量线性回归:h(x)=&+kx 2.参数:hypothesis 3.代价函数 4.建模误差 这个就是单变量线性回归的h(x),还有代价函数转换后与建模误差的直观体现,在途中我们也看到了函数的最低点也就是代价函数中的J(x)的最小值,直观体现在这两个坐标系上. 当然,由于在这些离散的采样点中,由于有些环境的限制,所以我们不能够人工的去采样,无法用图像的方式来解决,所以我们加入更多的算法来指导计算机进行计算和预测. 原文地址:https://www.

直观理解C语言中指向一位数组与二维数组的指针

一维数组和指针: 对于一位数组和指针是很好理解的: 一维数组名: 对于这样的一维数组:int a[5];  a作为数组名就是我们数组的首地址, a是一个地址常量 . 首先说说常量和变量的关系, 对于变量来说, 用箱子去比喻再好不过了, 声明一个变量就声明一个箱子,比如我们开辟出一个苹果类型的箱子, 给这个变量赋值就是把盛放苹果的箱子中放入一个实实在在的苹果, 这就是变量的赋值.  而对于数组来说, 就是一组类型相同的箱子中,一组苹果箱子, 可以放入不同的苹果. 一维数组空间: 变量被声明后, 我