是否有对互信息值(位、尼特)的直观解释?

机器算法验证 信息论 直觉 互信息
2022-04-19 04:05:29

我了解互信息是如何计算的,以及它要解决的问题:一个变量的分布有多少变化取决于另一个变量的值。但是我真的不明白互信息计算的输出值实际上意味着什么。我知道 0 意味着变量是独立的,并且我知道我可以在相对比较中使用这些值来进行特征选择,而无需真正深入,但它仍然想尝试了解绝对值的含义。例如(在这个 MI 实现中使用 python ):

X=U(0,1);  n=10000Y=X+U(0,0.5)MI(X,Y)0.92

这是什么意思MI(X,Y)=0.92 尼特?. 这个值实际上与数据的最大可压缩性有关,还是与变量之间的关系有关?还是完全是别的东西?

1个回答

让我们从熵的定义开始

引用自维基百科

数据源的熵率是指编码它所需的每个符号的平均比特数。

如果我们使用公平的硬币,我们将需要每箱一点来存储结果。如果我们使用正面概率为 0.999 的硬币 X,我们可以使用更少的比特

E(X) = -(0.999*log(0.999,2)+0.001*log(0.001,2)) ~ 0.01

您可以使用霍夫曼编码等技术来有效地存储结果。

假设您知道 X 的值,互信息MI(X,Y) 衡量您需要多少位才能存储结果 Y。

比特/尼特来自熵和互信息公式中使用的日志的基础。

如果你使用基于日志的 2,你会得到位。如果你使用基于日志的 e (ln),你会得到 nits。由于我们将数据存储在使用二进制系统的计算机上,因此位是常见且更直观的单位。