簡體   English   中英

如何從兩個二維分布中找到樣本的 KL 散度?

[英]How do I find the KL Divergence of samples from two 2D distributions?

假設我有兩個 1000 個樣本的 2D 集,看起來像這樣:

在此處輸入圖像描述

我想對分布之間的差異量有一個度量標准,並認為 KL 散度是合適的。

我一直在看 sp.stats.entropy(),但是從這個答案:

解釋 scipy.stats.entropy 值似乎我需要先將其轉換為 pdf。 如何使用 4 1D arrays 做到這一點?

上面的示例數據生成如下:

dist1_x = np.random.normal(0, 10, 1000)
dist1_y = np.random.normal(0, 5, 1000)

dist2_x = np.random.normal(3, 10, 1000)
dist2_y = np.random.normal(4, 5, 1000)

plt.scatter(dist1_x, dist1_y)
plt.scatter(dist2_x, dist2_y)
plt.show()

對於我的真實數據,我只有樣本,而不是它們的分布(盡管如果需要可以計算均值和方差並假設為高斯分布)。 可以這樣計算KL散度嗎?

有一篇論文叫做“Kullback-Leibler Divergence Estimation of Continuous Distributions (2008)”

您可能會在這里找到開源實現https://gist.github.com/atabakd/ed0f7581f8510c8587bc2f41a094b518

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM