熵最初是一个热力学中表征物质状态的参量,是体系混乱程度的度量。香农大佬在通讯的数学原理这篇论文中用来表示一个信源所发出的信息具有的平均信息量。可以说如果没有香农大佬这篇论文,就没有现在的现代通信体系。虽然信源熵这个概念出自通信,但是在其他的领域也有很广泛的应用。在数据挖掘和机器学习中也有所体现。由于作者专业本身就是通信,写今天这篇文章主要是想通过一些简单易懂的例子来描述一下熵的实际意义,帮助一些非通信的同学了解这个概念。
信息有大小吗?如何定量描述?
在香农大佬发表论文之前,人们没有办法对信息进行量化。例如这个苹果是红的这条消息,它到底包含了多少的信息呢,能够用数字来衡量吗?为了解决这个问题,香农大佬在他论文里描述到:一条消息所包含的信息量,应该与这个消息所包含的事件发生的概率成反比。这句话的意思是:如果一个事件发生的概率越大,那么这个事件发生时所包含的信息量就越少;如果一个事件发生的概率越小,那么这个事件包含的信息量就越大。
就拿刚才那个红苹果的例子来举例:例如你昨天从超市买了一个红苹果放在桌子上,今天有一条消息告诉你桌子上的苹果是红色的。由于昨天购买的红苹果今天任然是红苹果的概率几乎是百分之百,因此这条信息的所包含的信息量几乎为0。如果有一条消息告诉你:桌子上的苹果是金黄色的,由于你购买一个红苹果放在桌上而变成金黄色的概率几乎为0,因此这条消息所包含的信息量就非常大。它可能意味着你购买了一个具有特异功能的苹果或者昨晚有小偷进入到你的家里把你桌子上苹果偷偷的涂成金黄色再悄悄离开。
所以,香农大佬提出了自信息量的的概念:对于消息 x ,它发生的概率为 p。那么 x 的自信息量定为:
$$
I(x) = -log(p)
$$
这里 log 的底数可以是 2 或是 e。如果是 2 那么对应的单位为 bit 否则为 nat。
在很多时候,消息源都不止发出一条消息。那么如何衡量一个消息源的所包含的信息量呢?这里可以采用我们在统计学中期望值的思想:对于一个可以发出 n 条消息的消息源 X ,其中消息 $m_i$ 所发生的概率为 $p_i$ 。那么这个消息所包含的平均自信息量为:
$$
E(X)=-\sum_{i=1}^n\frac{1}{p_i}log(p)
$$
这也就是熵的定义。
信息增益
信息增益在数据挖掘中也有许多的应用,例如在决策树选择属性进行划分的时候要优先选择信息增益较大的属性。简答来说,信息增益就是在收到了一条消息后,信息源的不确定性的减少程度。再举一个例子。
有一天你的朋友问了你这样一个问题: 我在超市买了一个苹果,并把它藏在那大海的深处,请问你知道它是生的还是熟的吗?此时,你不知道关于这个苹果的任何信息,猜中这个苹果是生的还是熟的概率为50%。也就是说,苹果这个信息源有50%的可能会发出:我是生的这条消息。或者以50%的消息发出:我是熟的这条消息。那么我们计算一个这个苹果此时的熵为:
$$
-\frac{1}{2}log\frac{1}{2}-\frac{1}{2}log\frac{1}{2}=1(bit)
$$
此时你的朋友着你迷茫的双眼,他准备给你点提示: 我藏在大海深处的苹果是红色的。于是你到楼下超市看了一圈,并做出如下统计:
| 颜色 | 成熟 | 非成熟 |
|---|---|---|
| 红色 | 90 | 10 |
| 非红色 | 10 | 90 |
这时你使用你在大学学到有关条件概率计算出。也就是说,当我们知道一个苹果是红色的,并且为熟的概率为 $\frac{9}{10}$ 。那么此时苹果的熵为:
$$
-\frac{9}{10}log\frac{9}{10}-\frac{1}{10}log\frac{1}{10}=0.469(bit)
$$
可以看出,这个苹果是红色的这条消息使得信源的消息减少了 $1 - 0.469 = 0.531(bit)$