我使用KL散度作为2 之间差异的量度。米。f 。 和。
如果
但是,如果且Q (X i)= 0,则 如何计算P (X i)l n ( Q (X i))
我使用KL散度作为2 之间差异的量度。米。f 。 和。
如果
但是,如果且Q (X i)= 0,则 如何计算P (X i)l n ( Q (X i))
Answers:
你不能,你不能。假设您有一个概率分布Q的随机变量。但您的朋友鲍勃(Bob)认为结果来自概率分布P。结果。但是,由于他是根据P而不是Q构造编码的,因此他的代码将比必要的更长。KL散度测量代码将持续多长时间。
现在说他有一个硬币,他想告诉你他获得的结果的顺序。因为头部和尾部的可能性相同,所以他都给了他们两个1位代码。0表示头,1表示尾巴。如果他的尾巴是尾巴,他可以发送1 1 01。现在,如果他的硬币落在边缘,他可能就不会告诉你!他发送给您的任何代码都行不通。在这一点上,吉隆坡的分歧被打破。
由于KL散度分解,您将不得不使用其他度量或其他概率分布。您应该做什么实际上取决于您想要什么。为什么要比较概率分布?您的概率分布来自哪里,它们是根据数据估算的吗?
您说您的概率分布以某种方式来自自然语言文档,并且您想要比较类别对。
首先,我建议采用对称相关性度量。对于此应用程序,听起来像A与B相似,而B与A相似。
您是否尝试过余弦相似性度量?在NLP中很常见。
如果要坚持使用KL,您可以做的一件事是从两个文档中估计一个概率函数,然后查看每个文档平均需要多少个额外位。即(P |||(P + Q)/ 2 + Q ||(P + Q)/ 2)/ 2
实际上,我也遇到了这个问题。在这种情况下,我发现用0代替很小的数字会引起问题。根据您使用的值,您将在KL值中引入“偏差”。如果您将KL值用于假设检验或其他涉及阈值的用途,那么这个较小的值可能会使您的结果有偏差。我发现解决此问题的最有效方法是仅考虑在一致的假设空间X_i上计算KL,其中P和Q都不为零。本质上,这将KL的域限制为同时定义了两者的域,并且使您在使用KL进行假设检验时不会遇到麻烦。
解决方案是永远不要在估计的分布中允许0或1个概率。这通常是通过某种形式的平滑来实现的,例如Good-Turing平滑,Dirichlet平滑或Laplace平滑。