背景:调研了一些信息熵相关的知识,整理成博客。如有错误,欢迎留言/私信指正。
信息熵系列:
信息熵系列(一):信息熵的定义及理解
信息熵系列(二):联合熵与条件熵(本篇)
联合熵
上篇中,我们详细讲述了信息熵的含义,我们了解到,当每个p越相近时,信息熵越大。实际上这说的是:当一个分布越接近均匀分布时,信息熵越大,而一个均匀分布的信息熵则达到最大值。
例如下面两个概率分布,左边的分布比右边的更均匀(p更接近),所以左边的信息熵比右边更大:
那么既然信息熵表征的是一个概率分布的均匀性,那么对于一个联合概率分布的信息熵便是联合熵了:
$$ H(X,Y) = -\Sigma p(x,y) \cdot \log_2(x,y) $$
不要被这个公式的形式吓住,它的计算方式其实跟普通信息熵的计算方法一样,就是把每个p取对数乘以自己再求和就可以了。同样,它也用来表征一个分布的均匀程度,只不过这个分布是个联合分布。
举个例子,小帅和小美参加“读书交流会”分享了各自的书单,他们按照文学地域和体裁两个维度统计了各自的读书偏好,并画出了各自的联合概率分布:
我们分别计算一下小帅和小美书单的联合熵:
小帅书单的联合熵:\( H(地域,体裁)_{小帅} = -(0.2 \cdot \log_2(0.2) + 0.2 \cdot \log_2(0.2) + 0.1 \cdot \log_2(0.1) + 0.2 \cdot \log_2(0.2) + 0.1 \cdot \log_2(0.1) + 0.2 \cdot \log_2(0.2)) \approx 2.52 \)
小美书单的联合熵:\( H(地域,体裁)_{小美} = -(0.1 \cdot \log_2(0.1) + 0.5 \cdot \log_2(0.5) + 0.1 \cdot \log_2(0.1) + 0.1 \cdot \log_2(0.1) + 0.1 \cdot \log_2(0.1) + 0.1 \cdot \log_2(0.1)) \approx 2.16 \)
可以看到,小帅书单的联合熵比小美高,因为小帅是个“杂食动物”,每类书都会看一些,相较小美,他书单的联合概率分布更均匀,所以联合熵更高。
上述举的例子是一个有两个随机变量的联合概率分布,我们当然可以把它推广到多维的情况,即有n个随机变量的联合概率分布,同样的,不管联合分布是几维的,分布越均匀,联合熵越高。
条件熵
讲述了联合熵,我们便可引入条件熵了,它的定义如下:
$$ H(X|Y) = H(X,Y) - H(Y) $$
它表征的是:在一个联合概率分布中,当一个条件确定时,剩余变量引起的不确定度有多大。
经过推导(详细步骤可见斯坦福Gray教授的书《Entropy and Information Theory》第2.5节),条件熵也可以写成如下的形式:
$$ H(X|Y) = \Sigma p(y)H(X|Y=y) $$
我们可以看到,条件熵表征的是确定了某个条件后剩余的不确定度,所以条件熵既可以写成:联合熵扣除掉该条件自己的信息熵(也即定义式),也可以写成:确定了该条件后剩余变量的不确定度的期望(也即推导式)。
现在,我们继续用小帅和小美书单的例子帮助我们理解上面两个公式。
小帅得到了小美的书单,知道了小美书单联合概率分布后,他们决定玩一个游戏:小美心里想一本自己书单上的书,小帅需要猜测小美想的是哪一本。
而在猜之前,小帅有一个使用“锦囊”的机会:他可以先知道书的“地域”或“体裁”。
那么,小帅是选择知道书的“地域”更容易接下来的猜测,还是选择“体裁”更容易呢?
我们可以分别看下小美书单“地域”和“体裁”单独的分布:
根据这个分布,直觉上,似乎选择知道书属于哪种“体裁”会更好。因为一但知道了“体裁”,那么这本书要么是占比20%的“小说类”,要么是占比60%的“诗歌”类,要么是占比20%的“散文”类。相比于选择了“地域”——将会知道这本书要么是占比70%的“中国文学”,要么是占比30%的“欧美文学”,选择“体裁”可以将猜测范围收缩得更小一些。
为了量化我们的直觉,我们可以分别计算一下“体裁”确定后的条件熵: \( H(地域|体裁) \),和“地域”条件确定后的条件熵:\( H(体裁|地域) \)
这里说明一下这个条件熵的表示方法,以“体裁”条件熵为例,因为“体裁”这个条件确定后,系统中就只剩下了“地域”这个随机变量了,所以写作\( H(地域|体裁) \),竖线“|”前面的“地域”表示系统中还剩下的没有确定的随机变量,竖线后面的“体裁”表示已经确定好的条件。假如我们的联合概率分布有3个随机变量,比如:“体裁”、“地域”、“语种”,那么“体裁”条件熵就写作\( H(地域,语种|体裁) \),表示确定了体裁后,系统还剩下的不确定度。
现在,我们用两种方法分别计算条件熵。
方法一,用定义式:条件熵等于联合熵减去条件自己的信息熵。
在上文,我们已经计算了小美书单的联合熵:\( H(地域,体裁) \approx 2.16\)。
根据条件熵的公式,只要再分别计算一下“体裁”和“地域”两个单独分布的信息熵,再用联合熵减便可以得到条件熵了。
首先计算“体裁”和“地域”两个单独分布的信息熵:
体裁分布的信息熵:\( H(体裁) = -(0.2 \cdot \log_2(0.2) + 0.6 \cdot \log_2(0.6) + 0.2 \cdot \log_2(0.2) \approx 1.37 \)
地域分布的信息熵:\( H(地域) = -(0.7 \cdot \log_2(0.7) + 0.3 \cdot \log_2(0.3) \approx 0.88 \)
然后用联合熵减去上述便可得到“体裁”和“地域”的条件熵:
体裁条件熵:\( H(地域|体裁) = H(地域,体裁) - H(体裁) \approx 2.16 - 1.37 \approx 0.79 \)
地域条件熵:\( H(体裁|地域) = H(地域,体裁) - H(地域) \approx 2.16 - 0.88 \approx 1.28 \)
可以看到,在知道了“体裁”后,我们只剩下了0.79的不确定度,而知道“地域”后,我们还有1.28的不确定度,这确实符合我们的直觉。
现在我们再用第二种方法计算一下,看会不会得到相同的结果。
方法二,用推导式:条件熵等于确定了该条件后剩余变量的不确定度的期望。
我们以体裁条件熵为例,看下如何用推导式计算:
\( H(地域|体裁) = p(小说) \cdot H(地域|小说) + p(诗歌) \cdot H(地域|诗歌) + p(散文) \cdot H(地域|散文) \)
理解一下这个表达式的含义:“体裁”包含三类:“小说”、“诗歌”、“散文”。如果我们选择明确“体裁”这个条件,那么书就有 \( p(小说) = 20\% \) 的概率是“小说”,而一但明确真的是“小说”,那么剩余的不确定度就是\( H(地域|小说) \)。“诗歌”与“散文”也是同样的道理。所以将每个“体裁”确定后剩余的不确定度,乘以它们各自的概率,再求和,这便是期望的计算方法。
我们现在已经知道了\( p(小说) = 20\% \)、\( p(诗歌) = 60\% \)、\( p(散文) = 60\% \),还需要分别计算出\( H(地域|小说) \)、\( H(地域|诗歌) \)、\( H(地域|散文) \)。
这里需要注意一下它们的计算方法,我们以\( H(地域|小说) \)为例,\( H(地域|小说) \)的含义是,当我们已经明确了书属于“小说”后还剩余的不确定度,如下图:
已经明确了“体裁”是“小说”后,书是“中国文学”还是“欧美文学”的概率实际上就都是50%了:
\( p(中国文学) = \frac{0.1}{0.1+0.1} = 50\% \)
\( p(欧美文学) = \frac{0.1}{0.1+0.1} = 50\% \)
所以剩余的不确定度就是:
\( H(地域|小说) = -(0.5 \cdot \log_2(0.5) + 0.5 \cdot \log_2(0.5)) = 1.0 \)
按同样的方法,我们再计算出:
\( H(地域|诗歌) = -(\frac{0.5}{0.5+0.1} \cdot \log_2(\frac{0.5}{0.5+0.1}) + \frac{0.1}{0.5+0.1} \cdot \log_2(\frac{0.1}{0.5+0.1}) \approx 0.6500 \)
\( H(地域|散文) = -(\frac{0.1}{0.1+0.1} \cdot \log_2(\frac{0.1}{0.1+0.1}) + \frac{0.1}{0.1+0.1} \cdot \log_2(\frac{0.1}{0.1+0.1}) = 1.0 \)
最后代入体裁条件熵的公式:
\( H(地域|体裁) = 0.2 \cdot 1.0 + 0.6 \cdot 0.6500 + 0.2 \cdot 1.0 \approx 0.79 \)
这与第一种方法的计算结果相同。
一个应用:特征选择
条件熵可以应用在特征选择上:我们可以通过计算每个特征的条件熵,得到这个特征对结果的影响程度,条件熵越低,说明明确了该条件后,结果的不确定度越低,这便越是我们想要的特征。
举一个挑西瓜的例子:
小帅想要在一堆西瓜中挑选一个比较“熟”的西瓜,他观察到了这堆西瓜的两个特征:圆度和颜色。
此外,小帅每次挑瓜都会做一个历史记录,积累多了,他便有了这么一张历史挑瓜数据表:
序号 | 圆度 | 颜色 | 成熟度 |
---|---|---|---|
1 | 正圆 | 深绿 | 熟了 |
2 | 椭圆 | 浅绿 | 熟了 |
3 | 正圆 | 深绿 | 熟了 |
4 | 椭圆 | 深绿 | 熟了 |
5 | 正圆 | 浅绿 | 没熟 |
6 | 椭圆 | 深绿 | 没熟 |
7 | 正圆 | 浅绿 | 没熟 |
8 | 椭圆 | 浅绿 | 没熟 |
那么,小帅在这次新一轮的挑瓜中想要避坑的话,应该更看重“圆度”特征还是更看重“颜色”特征呢?
我们可以计算一下每个特征的条件熵:
首先,通过历史数据,我们将每个特征与“成熟度”这个结果变量的频次分布统计出来:
然后,得到它们的联合概率分布:
最后,计算出“圆度”和“颜色”的条件熵:
$$ \begin{align} H(成熟度|圆度) &= H(成熟度,圆度) - H(圆度) \\ &= - 4 \cdot 0.25 \cdot \log_2(0.25) - ( - 2 \cdot 0.5 \cdot \log_2(0.5) ) \\ &= 2.0 - 1.0 \\ &= 1.0 \end{align} $$
$$ \begin{align} H(成熟度|颜色) &= H(成熟度,颜色) - H(颜色) \\ &= - (2 \cdot 0.125 \cdot \log_2(0.125) + (2 \cdot 0.375 \cdot \log_2(0.375)) ) - ( - 2 \cdot 0.5 \cdot \log_2(0.5) ) \\ & \approx 1.81 - 1.0 \\ & \approx 0.81 \end{align} $$
可见,相比于“圆度”,确定了“颜色”后的“成熟度”结果的不确定度更低,所以,小帅应该更看重“颜色”特征。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。