如何计算Kullback-Leibler的散度/距离?


10

我有三个数据集X,Y和Z。每个数据集定义事件发生的频率。例如:

数据集X:E1:4,E2:0,E3:10,E4:5,E5:0,E6:0等等。
数据集Y:E1:2,E2:3,E3:7,E4: 6,E5:0,E6:0等。
数据集Z:E1:0,E2:4,E3:8,E4:4,E5:1,E6:0等。

我必须找到X和Y之间的KL散度;在X和Z之间。如您所见,对于某些事件,将有0和非零值。对于某些事件,所有三个数据集均为0。

如果有人可以帮助我找到KL的分歧,我将不胜感激。我不是统计学家,所以我没有太多想法。就我的理解而言,我在网上查看的教程过于复杂。

Answers:


11

为了回答您的问题,我们应该回顾一下KL散度定义

DKL(Y||X)=i=1Nln(YiXi)Yi

首先,您必须从必须具备的内容着手进行概率分布。为此,您应该对数据进行归一化,以使其总数为一:

Xi:=Xii=1NXi ; ; Yi:=Yii=1NYiZi:=Zii=1NZi

然后,对于离散值,我们有一个非常重要的假设需要用来评估KL散度,并且经常被违反:

Xi=0应该暗示。Yi=0

如果和都等于零,则假定为零(作为极限值)。XiYiln(Yi/Xi)Yi

在您的数据集中,这意味着您可以找到,但是找不到例如(因为第二个条目)。DKL(X||Y)DKL(Y||X)

从实际的角度来看,我可以建议的是:

要么使您的事件“更大”,以使您的零更少

或获取更多数据,以便您至少要输入一项就可以涵盖罕见事件。

如果您不能使用以上两个建议,则可能需要在分布之间找到另一个指标。例如,

互信息,定义为。其中是两个事件的联合概率。I(X,Y)=i=1Nj=1Np(Xi,Yj)ln(p(Xi,Yj)p(Xi)p(Yj))p(Xi,Yi)

希望它会有所帮助。


0

在此处输入图片说明

您可能希望将\ epsilon设置为一个非常小的值0.00001(例如),然后对所有概率使用非零值并计算KL分数。

请让我知道这是否有效。


2
如果不是您自己的图像,请为所附的图像添加适当的引文(否则,您可以使用进行排版),并指出它如何应用于当前的特定问题?(OP明确表示他不太精通数学统计学。)LATEX
chl 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.