香浓熵(转)

原文:Shannon Entropy, Information Gain, and Picking Balls from Buckets

参考视频:Information Entropy

在1948年,Glaude Shannon发表了文章《A Mathematical Theory of Communication》首次提出了革命性的概念“信息熵”。 熵也是物理中的一个概念。简单来说,如果一个系统中的粒子在运动过程中有很多可能的位置,那么这个系统具有比较高的熵值,反之,如果系统中的粒子处于静止状态(粒子的位置相对固定),则系统具有很低的熵值。例如,水有三种状态:固液气,具有不同的熵值。冰中的分子位置固定,是一个稳定的状态,所以冰具有最低的熵值。水中的分子相对可以进行一些移动,所以水具有中间大小的熵值。水蒸气中的分子几乎可以移动到任何地方,所以水蒸气具有最大的熵值。

但是这个和信息论有什么关系呢。答案需要通过研究“知识”和“概率”来说明。 熵和知识为了使用概率来介绍熵的概念,这篇文章中我们将用这样一个例子加以说明:有三个桶,每个桶里面有四个小球,每个桶里面的小球的颜色分布如下: 桶1:4个红色小球 桶2:三个红色小球,1个蓝色小球 桶3:两个红色小球,2个蓝色小球

我们将通过从桶里面取出小球的颜色来判断我们可以获得多少知识。结论如下: 在第一个桶中,我们可以确定取出来的所有小球颜色都是红色的; 在第二个桶中,取出红色小球的概率是75%,取出蓝色小球的概率是25%; 在第三个桶中,取出红色小球的概率是50%,取出蓝色小球的概率是50%.

所以,我们可以说桶1给出了关于小球颜色最多的知识(因为我们确定地知道所有小球都是红色),桶2给出了部分知识,而桶3给出了最少量的知识。熵和知识类似,但是却刚好相反。所以,桶1具有最小的熵,桶2次之,桶3具有最高的熵。 

我们需要一个公式定量地表示熵,为了找到这样一个公式,我们需要使用概率。 熵和概率

现在的问题是如何创造出一个公式对于桶1中的4个红球具有较低的值,对于桶2中的三个红球1个蓝球具有中等的值,对于桶3中的2个红球和2个蓝球具有较高的值。首先,我们需要记住熵的定义:一个系统中的粒子具有很大的可重新排列的可能性,系统具有较高的熵;反之,具有较低的熵。所以,我们首先计算桶中的球可以重新排列的可能情况。对于桶1,只有一种可能性;对于桶2,有两种可能性;对于桶3,有六种可能。这个可以通过二项式系数计算得到(1,4,6,1)。

对于小球排列情况的计算并不是熵公式的一部分,但是我们可以发现,有越多排列的可能性,则其熵越大;有越少的排列的可能性,则其熵越小。在下一节,我们将会构造熵的计算公式。基本思想通过考虑以某种确定的方式从每个桶中取出特定颜色排列的小球的概率。 熵和有趣的小球实验

现在我们正式开始通过下面的游戏发现用于计算熵的公式。可以提前剧透一下:通过游戏获胜的概率,我们可以得到熵的定义公式。

在这个游戏中,我们给定三个桶。游戏规则如下: 首先我们选择一个桶; 以某种颜色排列取出该桶里面的小球,然后将小球放回; 每次从该桶中取出一个小球并记录颜色,并放回; 四次以后如果记录的颜色和2中的颜色排列一致,则我们获胜,可赢得1,000,000人民币,否则游戏失败。

这个听起来可能有些负责,但是实际很简单。举个例子,比如我们选择桶2,里面有三个红球,一个蓝球。我们从桶里面以某种特定的排列取出小球,比如说(红,红,红,蓝)这个颜色排列。然后我们开始一次一次从桶里面取一个小球,如果四次以后,我们取出来的颜色排列也是(红,红,红,蓝)这个组合,我们获胜。那么我们获胜的概率是多少呢。 第一次取出红球的概率是3/4,即0.75; 第二次取出红球的概率是3/4(我们每次都是有放回的取出); 第三次取出红球的概率仍然是3/4; 第四次取出蓝球的概率是1/4,即0.25。

这四次操作都是独立事件,独立事件同时发生的概率使用乘法公式即: (3/4)?(3/4)?(3/4)?(1/4)=27/256 ( 3 / 4 ) ? ( 3 / 4 ) ? ( 3 / 4 ) ? ( 1 / 4 ) = 27 / 256 ,即0.105。这是一个很小的概率。下面的图给出了我们使用每个桶想要获胜的概率。

为了方面说明,下面的图给出了使用每个桶获胜的概率。对于桶1,获胜的概率为1;对于桶2,概率为0.105;对于桶3,概率为0.0625.



三个桶获胜的概率总结如下表: 

这样我们就可以定量评价使用三个桶获胜的情况。游戏获胜的概率为: 桶1为1 桶2为0.105 桶3为0.0625

为了得到熵的计算公式,我们需要一个大小相反的度量,对于桶1有最小值,对于桶2有一个中间的值,对于桶3有最大值。这个很简单,我们可以使用对数进行处理得到我们想要的结果。 将连乘转变为连加

下面的处理使用了很简单的数学技巧,特别是在机器学习中使用的比较广泛。连乘一般都不会得到一个比较好的结果。这里我们有四个数字,每个都不是特别差,但是如果我们有一百万个数据点,这一百万个概率的连乘会得到一个怎么样的结果。可想而知是特别特别地小。一般我们要尽可能地避免连乘。什么比连乘好呢。当然是连加。我们如何将连乘转变为连加呢。对,使用对数函数,因为下面的恒等式特别有用:

log(ab)=log(a)+log(b) log ? ( a b ) = log ? ( a ) + log ? ( b )

我们有四个概率的连乘,使用对数以后,可以变为四个数字的连加。对于桶2(三个红球,一个蓝球的排列),我们有如下的计算过程:

0.75?0.75?0.75?0.25=0.10546875 0.75 ? 0.75 ? 0.75 ? 0.25 = 0.10546875

通过使用对数变换(为了,使得结果是正数,这里在对数前面添加了一个负号),我们有:

?log2(0.75)?log2(0.75)?log2(0.75)?log2(0.25)=3.245 ? log 2 ? ( 0.75 ) ? log 2 ? ( 0.75 ) ? log 2 ? ( 0.75 ) ? log 2 ? ( 0.25 ) = 3.245

现在,只剩下最后一步了。为了对结果进行规范化,我们对该结果取平均。这就是我们要找的熵的静思园公式了。对于桶2,其熵为0.811.

14(?log2(0.75)?log2(0.75)?log2(0.75)?log2(0.25))=0.811 1 4 ( ? log 2 ? ( 0.75 ) ? log 2 ? ( 0.75 ) ? log 2 ? ( 0.75 ) ? log 2 ? ( 0.25 ) ) = 0.811

如果我们计算桶1的熵,可以得到:

14(?log2(1)?log2(1)?log2(1)?log2(1))=0 1 4 ( ? log 2 ? ( 1 ) ? log 2 ? ( 1 ) ? log 2 ? ( 1 ) ? log 2 ? ( 1 ) ) = 0

桶3的熵为:

14(?log2(0.5)?log2(0.5)?log2(0.5)?log2(0.5))=1 1 4 ( ? log 2 ? ( 0.5 ) ? log 2 ? ( 0.5 ) ? log 2 ? ( 0.5 ) ? log 2 ? ( 0.5 ) ) = 1

至此,我们已经找到了熵的定义公式:对概率对对数的负值。注意到桶1具有最低的熵,桶3具有最高的熵,桶2居于中间。总结如下: 

对于更通用的公式,我们可以总结如下:假设我们的桶里有 m m 个红球和 n n 个蓝球,则: 

Entropy=?mm+nlog2(mm+n)+?nm+nlog2(nm+n) E n t r o p y = ? m m + n log 2 ? ( m m + n ) + ? n m + n log 2 ? ( n m + n )

多类别熵

目前为止我们处理了连个类别的熵(红色和蓝色)。为了使得熵和信息论关联起来,我们有必要看一些多个类别的情况。这里为了是情况更加清晰一些,我们使用字母来进行说明。假设我们有三个桶,每个桶里面有8个字母。桶1中的字母是AAAAAAAA,桶2中的字母是AAAABBCD,桶3中的字母是AABBCCDD。我们可以很直观地感受到桶1中的熵最小,但是桶2和桶3的却并不是很明显。我们下面通过计算知道桶3具有最高的熵值,桶2熵值居中。 

对于多个类别的可以推广我们对于熵的定义如下:

Entropy=?∑i=1npilog2pi E n t r o p y = ? ∑ i = 1 n p i log 2 ? p i

公式中的 n n 是类别数, pi p i 是第 i i 个类别出现的概率。对于我们的三个桶,我们有如下分析:

对于桶1,只有一个类别(字母A),出现的概率肯定是1,所以熵值为:

Entropy=?1log2(1)=0 E n t r o p y = ? 1 log 2 ? ( 1 ) = 0

对于桶2,我们有四个类别(字母A,B,C和D),A出现的概率是4/8,B的概率是2/8,C的概率是1/8,D的概率是1/8。所以熵值为:

Entropy=?48log2(48)?28log2(28)?18log2(18)?18log2(18)=1.75 E n t r o p y = ? 4 8 log 2 ? ( 4 8 ) ? 2 8 log 2 ? ( 2 8 ) ? 1 8 log 2 ? ( 1 8 ) ? 1 8 log 2 ? ( 1 8 ) = 1.75

对于桶3,我们也有四个类别(字母A,B,C和D),每个字母出现的概率都是1/4,所以:

Entropy=?28log2(28)?28log2(28)?28log2(28)?28log2(28)=2 E n t r o p y = ? 2 8 log 2 ? ( 2 8 ) ? 2 8 log 2 ? ( 2 8 ) ? 2 8 log 2 ? ( 2 8 ) ? 2 8 log 2 ? ( 2 8 ) = 2

对于三个桶,我们总结如下: 

更有趣的在下面,这儿就是信息论发挥作用的地方。 信息论

下面还有一种方式来理解熵。我们还是以从桶中随机取出字母为例。我们要判断从桶中取出的字母平均需要提出多少个问题。(假设有一个人从桶里取字母,另外一个人通过提问得到取出来的是哪个字母)

首先看最简单的情况。对于桶1,我们可以确信取出来的肯定是A。所以我们不用提出任何问题就可以知道从桶里面取出来的字母是什么。用公式简单表示如下:

Average Number of Questions=0 A v e r a g e   N u m b e r   o f   Q u e s t i o n s = 0

对于桶3和桶4,可能有人认为通过四个问题可以知道到底取出来的是什么字母。这四个问题如下: 是不是字母A。 是不是字母B。 是不是字母C。 是不是字母D。

其实,这四个问题是有冗余的,因为如果前面三个问题的答案如果是“NO”的话,那么我们肯定知道取出来的屙屎字母D。所以三个问题足够了,但是我们可以做得更好吗。我们提出的问题需要消除冗余。我们可以这样改进我们的提问: 该字母是A或者B。 如果1的回答是“YES”,继续提问是否是字母A。如果1的回答是“NO”,继续提问是否是字母C。

如果这样提问,只需要基于两个问题就可以得到答案: 对于YES,YES的回答,则取出来的是A 对于YES,NO的回答,则取出来的是B 对于NO,YES的回答,则取出来的是C 对于NO,NO的回答,则取出来的是D

以树状结构表示如下: 

对于桶3,每个字母出现的概率都是1/4,所以为了找出取出来的字母平均提问的个数应该为2。计算如下:

Average Number of Questions=14?2+14?2+14?2+14?2=2 A v e r a g e   N u m b e r   o f   Q u e s t i o n s = 1 4 ? 2 + 1 4 ? 2 + 1 4 ? 2 + 1 4 ? 2 = 2

对于桶1,我们如果使用桶3的提问策略,当然得出的结果也是2,然而我们可以做得更好。我们可以首先提问是不是A,然后问是不是B,然后再问是不是C。 

这样我们的提问顺序如下: 如果是字母A,则我们只用了1次提问 如果是字母B,则我们只用了2次问题 如果是字母C或者D,则我们只用了3次提问

对于是字母C和D,我们3次提问超出了对于桶2的提问策略,但是平均来看,我们可能做得更好。桶3有字母AAAABBCD,A出现了一半,B出现了1/4,C和D都出现了1/8。平均提问次数为:

Average Number of Questions=12?1+14?2+18?3+18?3=1.75 A v e r a g e   N u m b e r   o f   Q u e s t i o n s = 1 2 ? 1 + 1 4 ? 2 + 1 8 ? 3 + 1 8 ? 3 = 1.75

总结如下: 

这就是熵。熵和信息论就是这样关联起来的。如果我们想要找出从桶里取出来的字母,平均需要提出问题的个数就是熵的值。

当然,这引出了更大问题:我们如何确定我们提问的方式是最可能好的。如果提问的方式不是太明显,当然需要做更多的工作。

原文地址:https://www.cnblogs.com/yangziyao/p/10014977.html

时间: 2024-10-13 19:43:42

香浓熵(转)的相关文章

[zz]求一维序列的信息熵(香浓熵)的matlab程序实例

对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵.    但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的,不会是(0-255)这么确定,如果进行域值变换,使其转换到一个整数范围的话,就会丢失数据,请高手指点,怎么计算. 比如数字信号是x(n),n=1~N(1)先用Hist函数对x(n)的赋值范围进行分块,比如赋值范围在0~10的对应第      一块,10~20的第二块,以此类推.这之前需要对x(n)做

机器学习笔记----- ID3算法的python实战

本文申明:本文原创,如有转载请申明.数据代码来自实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. Hello,又和大家见面了,今天心情出奇的好,不知道为什么.就是好...此处省略一万字...上一次和大家说了,决策树的理论部分,今天我们就来动手帮助眼科医生做一个系统,让这个系统学会给需要隐形眼睛的用户一个建议,让用户可以知道自己适合哪种眼睛.老规矩,系统先从数据中学习. 一:计算给定数据集的香浓熵 大家还记得我们上

GAN相关知识点总结--散度(相对熵)

如何理解K-L散度(相对熵) Kullback-Leibler Divergence,即K-L散度,是一种量化两种概率分布P和Q之间差异的方式,又叫相对熵.在概率学和统计学上,我们经常会使用一种更简单的.近似的分布来替代观察数据或太复杂的分布.K-L散度能帮助我们度量使用一个分布来近似另一个分布时所损失的信息. K-L散度定义见文末附录1.另外在附录5中解释了为什么在深度学习中,训练模型时使用的是Cross Entropy 而非K-L Divergence. 我们从下面这个问题出发思考K-L散度

【算法】决策树

本文旨在用最短的文章,最通俗的描述,让读者迅速掌握决策树究竟是什么?干什么?怎么用?三大问题.只需要您注意力集中25分钟. 1.明白概念: a)决策树是一种分类算法,通过训练数据集构建决策树,可以高效的对未知的数据进行分类,主要是用来做预测 b)决策树是一种树状结构,它的每个叶节点对应着一个分类,非叶节点对应着某个属性的划分,根据样本在该属性上的不同取值将其划分成若干个子集. 2.怎么用? a).根据一些特征值,建立起一个树状结构,根据树状结构的评判标准,来进行预测. b).树的内部结点表示对某

常见机器学习算法原理+实践系列4(决策树)

决策树分类 决策树算法借助于树的分支结构实现分类,决策树在选择分裂点的时候,总是选择最好的属性作为分类属性,即让每个分支的记录的类别尽可能纯.常用的属性选择方法有信息增益(Information Gain),增益比例(gain ratio),基尼指数(Gini index). 信息增益 信息增益基于香浓的信息论,它找出的属性R具有这样的特点:以属性R分裂前后的信息增益比其他属性最大.这里信息(实际上就是熵)的定义如下: 其中的m表示数据集D中类别C的个数,Pi表示D中任意一个记录属于Ci的概率,

[读书笔记]数学之美里的机器学习

这几天陆陆续续把吴军博士的<数学之美>看完了. 整体来说,<数学之美>是一本非常适合于数学不好的人入门机器学习和理解计算机算法原理的科普书.作者结合他多年搞研究和在GOOGLE的经验,把他所理解的机器学习/自然语言处理的发展史一一得梳理了出来,颇有提纲挈领的功效. 在看完这本书后,可以按着里面的线索再去搜相关资料来看,比以前直接上手就看数据挖掘.算法啥的靠谱多了.作者在书里多次推崇[简单的数学模型可以做大事],[换个思路],[做搜索的人要经常研究一下不好的结果/异常值分析],[道]

流媒体 2——数据无损压缩

无损压缩是 指使用压缩后的数据进行重构(或者叫做还原,解压缩),重构后的数据与原来的数据完全相同:无损压缩用于要求重构的信号与原始信号完全一致的场合.一个很 常见的例子是磁盘文件的压缩.根据目前的技术水平,无损压缩算法一般可以把普通文件的数据压缩到原来的1/2-1/4.一些常用的无损压缩算法有霍夫曼 (Huffman)算法和LZW(Lenpel-Ziv & Welch)压缩算法,算术编码.RLE编码(行程长度编码)和词典编码. 有损压缩是指使用压缩后的数据进 行重构,重构后的数据与原来的数据有所

Clustering by Passing Messages Between Data Points(Brendan J.Frey* and Delbert Dueck)例子

例1,数据点聚类:AP应用到25个二维数据中,使用负平法误差作为相似度  聚类数目不用预先指定 AP的一个优点是聚类数目不用预先指定,而是在消息传递方法中慢慢浮现,取决于输入参考度(preference),这种自动模型的选择,基于先验指定每一个数据点有多合适作为exemplar. 下图表示输入常量参考度对聚类数目的影响,这种关系近乎同样于在精确最小平方误差中的关系. 例2,人脸识别:使用优化标准为均方差,识别900张灰度图像   AP一致的能够实现更低的误差,在时间上花费要少于两个数量级. AP

经典创意slogan大全

一句好的广告语,能强烈的激发人的感情,产生心理认同感.对于广告人来说,无论走到哪里,最敏感的就是广告语.一句广告语,可能只有短短几个字或一两句话,却是一个品牌的精华所在.能不能第一时间吸引受众眼球,抓顾客的心,是无数广告人夜不能寐思考的问题.一句简洁.有力的Slogan,汇聚了品牌的理念.企业的价值观.发展愿景,甚至企业的员工.领导习惯,还有当下的市场环境等等方面.例如苹果的:Think different,看似很简单,却直指人心.今天,先知中国命名网小编给大家整理了经典创意slogan大全,供