Kullback-Leibler

如何計算 Kullback-Leibler 散度/距離?

  • June 1, 2013

我有三個數據集 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 分歧,我將不勝感激。我不是一個統計學家,所以我沒有太多想法。我在網上看的教程對於我的理解來說有點太複雜了。

要回答您的問題,我們應該回顧一下KL 散度的定義

$$ D_{KL}(Y||X) = \sum_{i=1}^N \ln \left( \frac{Y_i}{X_i} \right) Y_i $$

首先,你必須從你所擁有的到概率分佈。為此,您應該規範化您的數據,使其總和為一個:

$ X_i := \frac{X_i}{\sum_{i=1}^N X_i} $ ; $ Y_i := \frac{Y_i}{\sum_{i=1}^N Y_i} $ ; $ Z_i := \frac{Z_i}{\sum_{i=1}^N Z_i} $

然後,對於離散值,我們有一個非常重要的假設,它需要評估 KL 散度並且經常被違反:

$ X_i = 0 $ 應該暗示 $ Y_i = 0 $ .

萬一當兩者 $ X_i $ 和 $ Y_i $ 等於零, $ \ln \left( Y_i / X_i \right) Y_i $ 假定為零(作為極限值)。

在您的數據集中,這意味著您可以找到 $ D_{KL}(X||Y) $ ,但不是例如 $ D_{KL}(Y||X) $ (因為第二次進入)。

從實際的角度來看,我可以建議的是:

要么讓你的事件“更大”,這樣你就會有更少的零

或獲得更多數據,這樣您就可以通過至少一個條目來涵蓋罕見的事件。

如果您不能使用上述任何建議,那麼您可能需要在分佈之間找到另一個指標。例如,

互信息,定義為 $ I(X, Y) = \sum_{i=1}^N \sum_{j=1}^N p(X_i, Y_j) \ln \left( \frac{p(X_i, Y_j)}{p(X_i) p(Y_j)} \right) $ . 在哪裡 $ p(X_i, Y_i) $ 是兩個事件的聯合概率。

希望它會有所幫助。

引用自:https://stats.stackexchange.com/questions/60619

comments powered by Disqus

相關問答