log(p(x,y)) 如何对逐点互信息进行归一化?

机器算法验证 信息论 互信息
2022-03-10 02:56:52

我试图理解逐点互信息的规范化形式。

npmi=pmi(x,y)log(p(x,y))

为什么对数联合概率将逐点互信息归一化在 [-1, 1] 之间?

逐点互信息为:

pmi=log(p(x,y)p(x)p(y))

p(x,y) 以 [0, 1] 为界,因此 log(p(x,y)) 以 (,0] 为界。似乎 log(p(x,y)) 应该以某种方式平衡分子,但我不明白到底是怎么回事。它也让我想起了熵h=log(p(x)),但我还是不明白确切的关系。

2个回答

来自关于逐点互信息的维基百科条目

逐点互信息可以在 [-1,+1] 之间进行归一化,导致 -1(在极限内)表示从不一起出现,0 表示独立,+1 表示完全共现。

为什么会这样?那么,逐点互信息的定义是

pmilog[p(x,y)p(x)p(y)]=logp(x,y)logp(x)logp(y),

而对于归一化的逐点互信息是:

npmipmilogp(x,y)=log[p(x)p(y)]logp(x,y)1.

当有:

  • 没有同时出现,logp(x,y), 所以nmpi是 -1,
  • 随机同时出现,logp(x,y)=log[p(x)p(y)], 所以nmpi为 0,
  • 完全共现,logp(x,y)=logp(x)=logp(y),所以 nmpi为 1。

虽然 Piotr Migdal 的回答在给出 nmpi 达到三个极值的示例方面提供了丰富的信息,但它并不能证明它在区间内[1,1]. 这是不等式及其推导。

logp(x,y)logp(x,y)logp(x)logp(y)=logp(x,y)p(x)p(y)=:pmi(x;y)=log[p(x,y)p(x)p(x,y)p(y)1p(x,y)]=log[p(x|y)p(y|x)1p(x,y)]=logp(x|y)+logp(y|x)logp(x,y)=logp(x,y)[logp(A)0 for any event A]

logp(x,y)pmi(x;y)logp(x,y)

两边除以非负,我们有 h(x,y):=logp(x,y)

1npmi(x;y):=pmi(x;y)h(x,y)1.