- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个函数来计算从 N(mu2, sigma2) 到 N(0, 1) 的 Kullback-Leibler 散度。
mu1 <- 0
sigma1 <- 1
f <- function(mu2, sigma2)
{
g <- function(x)
{
(dnorm(x, mean=mu1, sd=sigma1, log=TRUE) -
dnorm(x, mean=mu2, sd=sigma2, log=TRUE)) *
dnorm(x, mean=mu1, sd=sigma1)
}
return(integrate(g, -Inf, Inf)$value)
}
例如从N(5, 1)到N(0, 1)的KL散度为
> f(5, 1)
[1] 12.5
我确信这个结果是正确的,因为我手边计算了一个封闭形式的表达式,它给出了从 N(mu2, sigma2) 到 N(mu1, sigma1) 的 KL 散度。
我的问题是关于 flexmix 包中的 KLdiv 函数。为什么它不产生相同的结果?它实际计算什么?
> library(flexmix)
> x <- seq(-4, 12, length=200)
> y <- cbind(norm1=dnorm(x, mean=0, sd=1), norm2=dnorm(x, mean=5, sd=1))
> KLdiv(cbind(y))
norm1 norm2
norm1 0.000000 7.438505
norm2 7.438375 0.000000
如果不使用 KLdiv,您认为以下过程如何:
> x <- rnorm(1000)
> dist <- mean(dnorm(x, mean=0, sd=1, log=TRUE)) -
+ mean(dnorm(x, mean=5, sd=1, log=TRUE))
> print(dist)
[1] 12.40528
???
提前致谢!
最佳答案
在你写的最后一部分
x <- rnorm(1000)
dist <- mean(dnorm(x, mean=0, sd=1, log=TRUE)) -
mean(dnorm(x, mean=5, sd=1, log=TRUE))
print(dist)
[1] 12.40528
这是大小为 1000 的随机样本的散度。封闭形式表达式是样本大小趋于无穷大时的极限值。如果你改变你的样本量,你会更接近。或者,如果您重复进行相同的计算,您会发现估算值的平均值如您所愿为 12.5。
关于r - Kullback-Leibler 散度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4864623/
我编写了一个函数来计算从 N(mu2, sigma2) 到 N(0, 1) 的 Kullback-Leibler 散度。 mu1 f(5, 1) [1] 12.5 我确信这个结果是正确的,因为我手边
我想使用 Jensen-Shannon 散度作为直方图距离函数。我正在实现一个简单的图像相似性搜索,直方图是归一化的 RGB 颜色分布。 我对 Kullback-Leibler 散度公式(JS 的依据
我正在尝试计算字符串中字符的散度,但我真的不知道如何将 Kullback 散度算法应用于此类问题。请任何人解释我可以用来解决这样的问题的 KLD 算法。 谢谢 最佳答案 KL 散度是一种度量,它可以为
我做了一个java实现Kullback-leibler散度的方法。我使用了以 2 为基数的日志,但我不确定我是否正确使用了它,或者我应该使用以 10 为基数的日志值。我正在使用这种方法来测量两个文本单
我已经关注论文here和代码 here (它是使用对称 kld 和论文中第一个链接中提出的退避模型实现的)用于计算两个文本数据集之间的 KLD。我在最后更改了 for 循环以返回两个数据集的概率分布,
我知道 KL 不是一个指标,也不能被视为一个指标。但是,是否可以使用 KL 来衡量一幅图像与另一幅图像的差异?我试图从中得出一种直觉。提前感谢所有回复。 最佳答案 KL 测量两个概率分布之间的差异。
我正在处理属于 2 个组(A 和 B)的数据。我试图找到显示两个群体之间最大差异的变量,我认为 Kullback-Leibler 距离将是一个很好的衡量标准。这是代表我的数据的示例 df1 <- st
我在java中有这个方法来计算概率分布的KL: public static double klDivergence(double[] p1, double[] p2) { double klDi
我有以下问题:我有一个矩阵,比如 20K 离散分布(直方图),我需要计算这些对之间的 KL 散度 (KLD)。简单的方法是使用两个 for 循环并通过标准 KLD 计算计算每两个分布之间的 KLD。这
在从 mallet 中的各种文档中获得各种概率分布后,我应用以下代码来计算第一个和第二个文档之间的 KL 散度: Maths.klDivergence(double[] d1,doub
我需要最小化 KL loss在 tensorflow . 我试过这个功能 tf.contrib.distributions.kl(dist_a, dist_b, allow_nan=False, na
我有两个(不同长度的)数字列表。使用 Python,我想用 10 个 bin 来计算直方图。然后我想用标准核(均值为 0 的高斯核,sigma=1)平滑这两个直方图然后我想计算这两个平滑直方图之间的
function [ d ] = hcompare_KL( h1,h2 ) %This routine evaluates the Kullback-Leibler (KL) distance bet
我必须计算 Kullback-Leibler Divergence (KLD) 在数千个离散概率向量之间。目前我正在使用以下代码,但它对我的目的来说太慢了。我想知道是否有更快的方法来计算 KL 散度?
我有两个名为 x_t、x_k 的张量,分别具有以下形状 NxHxW 和 KxNxHxW,其中 K,是用于重建x_t的自动编码器的数量(如果您不知道这是什么,假设它们是K个不同的网络,旨在预测x_t,这
我有两个矩阵 X 和 Y(在大多数情况下它们是相似的)现在我想计算所有行之间的成对 KL 散度并将它们输出到一个矩阵中。例如: X = [[0.1, 0.9], [0.8, 0.2]] 然后该函数应采
我的目标是计算以下文本文档之间的 KL 距离: 1)The boy is having a lad relationship 2)The boy is having a boy relationshi
我是一名优秀的程序员,十分优秀!