如何以数值方式估计互信息?

数据挖掘 数值 互信息 分配 估计者 信息论
2021-09-21 05:26:13

假设我有一个样本 {zi}i[0,N] = {(xi,yi)}i[0,N] 来自概率分布 pz(z). 如何使用它来估计 X 和 Y 之间的互信息?

MI(X,Y)=YXpz(x,y)log(pz(x,y)px(x)py(y))

在哪里 pxpy 是 X 和 Y 的边际分布:

px(x)=Ypz(x,y)

py(y)=Xpz(x,y).

1个回答

装箱

进行这种估计的一种简单方法是将连续值放入箱中并获得离散问题。拆分域XY放入箱中并计算落在每个箱内的点数以获得密度。因此,计算将是:

bxBinsxbyBinsy#(bx,by)Nlog#(bx,by)N#bxN#byN

在哪里 #(bxby) 是样本数,其中 XbxYby, #by 是样本数,其中 Yby#bx 是样本数,其中 Xbx.

熵和密度估计

另一种方法是注意互信息可以表示为

I(X,Y)=H(X)+H(Y)H(X,Y)

因此,如果您可以估计熵,则可以估计信息。现在,为了找到函数对数据的期望,您可以使用插件估算器并执行

E[g(X)]=1nig(Xi)

这里的问题是我们要估计函数 logp(x) 在哪里 p 取决于我们的数据。

所以可以使用密度的估计 p对于每个点,然后使用插件估计器。核密度估计器是一种方法,最近邻估计器是另一种方法。这两种方法都是非参数的。