我了解互信息是如何计算的,以及它要解决的问题:一个变量的分布有多少变化取决于另一个变量的值。但是我真的不明白互信息计算的输出值实际上意味着什么。我知道 0 意味着变量是独立的,并且我知道我可以在相对比较中使用这些值来进行特征选择,而无需真正深入,但它仍然想尝试了解绝对值的含义。例如(在这个 MI 实现中使用 python ):
这是什么意思0.92 尼特?. 这个值实际上与数据的最大可压缩性有关,还是与变量之间的关系有关?还是完全是别的东西?
我了解互信息是如何计算的,以及它要解决的问题:一个变量的分布有多少变化取决于另一个变量的值。但是我真的不明白互信息计算的输出值实际上意味着什么。我知道 0 意味着变量是独立的,并且我知道我可以在相对比较中使用这些值来进行特征选择,而无需真正深入,但它仍然想尝试了解绝对值的含义。例如(在这个 MI 实现中使用 python ):
这是什么意思0.92 尼特?. 这个值实际上与数据的最大可压缩性有关,还是与变量之间的关系有关?还是完全是别的东西?
让我们从熵的定义开始
引用自维基百科
数据源的熵率是指编码它所需的每个符号的平均比特数。
如果我们使用公平的硬币,我们将需要每箱一点来存储结果。如果我们使用正面概率为 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。由于我们将数据存储在使用二进制系统的计算机上,因此位是常见且更直观的单位。