2219 2

[MATLAB] 【转】kullback-leibler distance的计算(matlab) [推广有奖]

已卖:12444份资源

学术权威

34%

还不是VIP/贵宾

-

TA的文库  其他...

产业经济学基础理论库

产业集群中英文书籍库

产业集群英文文献研读

威望
3
论坛币
464609 个
通用积分
901.8884
学术水平
877 点
热心指数
1052 点
信用等级
910 点
经验
185746 点
帖子
4475
精华
3
在线时间
3877 小时
注册时间
2013-9-16
最后登录
2025-10-10

初级学术勋章 初级热心勋章 中级热心勋章 中级学术勋章 高级热心勋章 高级学术勋章 初级信用勋章 高级信用勋章 中级信用勋章

楼主
三世相思2013 学生认证  发表于 2016-6-22 09:43:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
仅供学习参考哈!!!


最近在学习相对熵,发现论坛里面关于这方面的资料很少,于是就找了一些大家共同学习进步啦






KL-distance是用来计算两组离散数值的信息量(相对熵)的,一般针对的是离散数据。可以用来做特征筛选。但如果是连续数据,则先要离散化求每个bin内的frequency后再计算KL-distance
KL-distance的解释:
(1)http://en.wikipedia.org/wiki/Kullback–Leibler_divergence
(2)http://mathworld.wolfram.com/RelativeEntropy.html


那么具体用matlab或者R都可以实现KL-distance的计算。R中有entropy的包,不再介绍。这里重点说明用matlab如何计算KL-distance。
参考资料:
(1)http://www.mathworks.com/matlabcentral/fileexchange/20688-kullback-leibler-divergence
这个帖子里面提供了一个KLDiv.m的代码,但是输入得是已经求好概率或者frequency的数据。
经过测试,可以使用,但是我没有看懂它的计算方法,测试后的结果都是0,放弃。

(2)http://blog.sina.com.cn/s/blog_64e045400101o8ln.html
这个帖子中作者粘贴了一个更加详细的code,尚未测试。

(3)http://stackoverflow.com/questions/13370229/kullback-leibler-kl-distance-between-histograms-matlab
在stackoverflow上有一些相关的帖子,其中这个人问如何由两个histogram数据中(只有bin和每个bin里面的count)计算KL-distance,这个跟我的要求最相近。

因此,决定参考上述(1)(2)(3)中的代码自己写一个从连续值做histogram,然后利用每个bin的frequency求KL-distance的代码,如下所示:

function dist=KLDiv_v2(P,Q)

if size(P,2)~=size(Q,2)
    error('the number of columns in P and Q should be the same');
end

if sum(~isfinite(P(:))) + sum(~isfinite(Q(:)))
   error('the inputs contain non-finite values!')
end

dist = zeros(size(P));

%# create an index of the "good" data points
goodIdx = P>0 & Q>0; %# bin counts <0 are not good, either

d1 = sum(P(goodIdx) .* log(P(goodIdx) ./Q(goodIdx)));
d2 = sum(Q(goodIdx) .* log(Q(goodIdx) ./P(goodIdx)));

%# overwrite d only where we have actual data
%# the rest remains zero
dist(goodIdx) = d1 + d2;
end

来源:http://blog.sina.com.cn/s/blog_4a0824490102v847.html


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Distance MATLAB stance matla atlab distance matlab

沙发
william9225 学生认证  发表于 2016-6-22 13:28:38 来自手机
谢谢分享

藤椅
maodongjun 发表于 2016-11-2 22:29:38
楼主,stata中能不能做?谢谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-16 12:18