KL散度(Kullback-Leibler_divergence)
2017-06-25 16:17
405 查看
KL散度(Kullback-Leibler_divergence)一. 概念KL-divergence,俗称KL距离,常用来衡量两个概率分布的距离。根据shannon的信息论,给定一个字符集的概率分布,我们可以设计一种编码,使得表示该字符集组成的字符串平均需要的比特数最少。假设这个字符集是X,对x∈X,其出现概率为P(x),那么其最优编码平均需要的比特数等于这个字符集的熵:H(X)=∑x∈XP(x)log[1/P(x)]在同样的字符集上,假设存在另一个概率分布Q(X)。如果用概率分布P(X)的最优编码(即字符x的编码长度等于log[1/P(x)]),来为符合分布Q(X)的字符编码,那么表示这些字符就会比理想情况多用一些比特数。KL-divergence就是用来衡量这种情况下平均每个字符多用的比特数,因此可以用来衡量两个分布的距离。即:DKL(Q||P)=∑x∈XQ(x)[log(1/P(x))] - ∑x∈XQ(x)[log[1/Q(x)]]=∑x∈XQ(x)log[Q(x)/P(x)]由于-log(u)是凸函数,因此有下面的不等式DKL(Q||P) = -∑x∈XQ(x)log[P(x)/Q(x)] = E[-logP(x)/Q(x)] ≥ -logE[P(x)/Q(x)] = -log∑x∈XQ(x)P(x)/Q(x) = 0即KL-divergence始终是大于等于0的。当且仅当两分布相同时,KL-divergence等于0。二. 例子下面举一个实际的例子吧:比如有四个类别,一个方法A得到四个类别的概率分别是0.1,0.2,0.3,0.4。另一种方法B(或者说是事实情况)是得到四个类别的概率分别是0.4,0.3,0.2,0.1,那么这两个分布的KL-Distance(A,B)=0.1*log(0.1/0.4)+0.2*log(0.2/0.3)+0.3*log(0.3/0.2)+0.4*log(0.4/0.1)这个里面有正的,有负的,可以证明KL-Distance()>=0.
从上面可以看出, KL散度是不对称的。即KL-Distance(A,B)!=KL-Distance(B,A)
KL散度是不对称的,当然,如果希望把它变对称,
Ds(p1, p2) = [D(p1, p2) + D(p2, p1)] / 2
三. 应用于推荐系统的一个例子在使用LDA(Latent Dirichlet Allocation)计算物品的内容相似度时,我们可以先计算出物品在话题上的分布,然后利用两个物品的话题分布计算物品的相似度。比如,如果两个物品的话题分布相似,则认为两个物品具有较高的相似度,反之则认为两个物品的相似度较低。计算分布的相似度可以利用KL散度来计算:DKL(p||q)=∑i∈Xp(i)ln(p(i)/q(i),其中p和q是两个分布,KL散度越大说明分布的相似度越低。
从上面可以看出, KL散度是不对称的。即KL-Distance(A,B)!=KL-Distance(B,A)
KL散度是不对称的,当然,如果希望把它变对称,
Ds(p1, p2) = [D(p1, p2) + D(p2, p1)] / 2
三. 应用于推荐系统的一个例子在使用LDA(Latent Dirichlet Allocation)计算物品的内容相似度时,我们可以先计算出物品在话题上的分布,然后利用两个物品的话题分布计算物品的相似度。比如,如果两个物品的话题分布相似,则认为两个物品具有较高的相似度,反之则认为两个物品的相似度较低。计算分布的相似度可以利用KL散度来计算:DKL(p||q)=∑i∈Xp(i)ln(p(i)/q(i),其中p和q是两个分布,KL散度越大说明分布的相似度越低。
相关文章推荐
- KL散度(Kullback-Leibler_divergence)
- KL散度(Kullback-Leibler_divergence)
- KL散度(Kullback-Leibler_divergence)(相对熵)
- KL散度(Kullback-Leibler_divergence)
- Kullback-Leibler Divergence Explained
- KL散度(Kullback-Leibler_divergence)
- KL散度(Kullback-Leibler_divergence)
- 信息论-Shannon entropy-Kullback-Leibler (KL) divergence-cross-entropy
- KL散度(Kullback-Leibler_divergence)
- Kullback–Leibler 距离(相对熵)
- kullback-leibler distance的计算(matlab)
- 解释Kullback-Leibler散度
- KL散度(Kullback–Leibler divergence)
- Kullback Leibler Distance (or divergence)
- Kullback–Leibler divergence(相对熵,KL距离,KL散度)
- 相对熵(relative entropy或 Kullback-Leibler divergence,KL距离)的java实现(三)
- KL距离,Kullback-Leibler Divergence
- paper 22:kl-divergence(KL散度)实现代码
- python 3计算KL散度(KL Divergence)
- cross entropy,logistic loss 和 KL-divergence的关系和区别