互信息

  |  

摘要: 互信息

【对算法,数学,计算机感兴趣的同学,欢迎关注我哈,阅读更多原创文章】
我的网站:潮汐朝夕的生活实验室
我的公众号:算法题刷刷
我的知乎:潮汐朝夕
我的github:FennelDumplings
我的leetcode:FennelDumplings


互信息的定义

对于两个随机变量 X 和 Y,如果其联合分布为 p(x, y),边缘分布为 p(x), p(y),则互信息定义为

互信息(Mutual Information)是信息论里一种有用的信息度量,它可以看成是一个随机变量中包含的关于另一个随机变量的信息量

互信息量

一般而言,信道中总是存在着噪声和干扰,信源发出消息 X,通过信道后信宿只可能收到由于干扰作用引起的某种变形的 Y。

信宿收到 Y 后推测信源发出 X 的概率,这一过程可由后验概率 p(x|y) 来描述。

相应地,信源发出 X 的概率 p(x) 称为先验概率。我们定义 x 的后验概率与先验概率比值的对数为 y 对 x 的互信息量

互信息的性质

对称性

半正定

马尔可夫链上的互信息

如果 U -> X -> Y -> V 构成马尔可夫链,则 I(U; V) <= I(X; Y)

互信息与相对熵的关系

互信息量可以理解为 A 出现的时候 B 出现的概率,概率范围是从 0 到 1,即完全不确定到完全确定

Python代码

1
2
3
4
5
# 离散型分布
x = [np.random.randint(1, 100) for i in range(10000)]
px = x / np.sum(x)
y = [np.random.randint(1, 100) for i in range(10000)]
py = y / np.sum(y)
  • sklearn
1
2
3
from sklearn import metrics

MI = metrics.normalized_mutual_info_score(x, y)

Share