首页 > 代码库 > 信息熵的直观理解

信息熵的直观理解

 

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

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))

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

信息熵的直观理解