首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >3个计算相对熵的函数。有什么关系呢?

3个计算相对熵的函数。有什么关系呢?
EN

Stack Overflow用户
提问于 2020-08-12 04:51:20
回答 1查看 2.9K关注 0票数 2

python中的Scipy提供了以下函数,这些函数似乎计算相同的信息论度量,Kullback散度,也称为相对熵:

可以切换到计算KL-散度的

  • scipy.stats.entropy,,如果是qk=None
  • scipy.special.rel_entr
  • scipy.special.kl_div

为什么是三件一样的事?有人能解释一下他们之间的区别吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-12 05:36:08

计算离散概率向量之间KL-差异的默认选项是scipy.stats.entropy

相反,scipy.special.rel_entrscipy.special.kl_div都是“按元素划分的函数”,它们可以与通常的数组操作一起使用,并且必须在得到聚合相对熵值之前进行求和。

虽然两者的结果是相同的和(当使用适当的概率向量,其中的和为1),第二个变量(scipy.special.kl_div)在元素上是不同的,因为它添加了-x +y项,即,

(x log(x/y)) -x+y

在总数中抵消掉。

例如

代码语言:javascript
复制
from numpy import array
from scipy.stats import entropy
from scipy.special import rel_entr, kl_div

p = array([1/2, 1/2])
q = array([1/10, 9/10])

print(entropy(p, q))
print(rel_entr(p, q), sum(rel_entr(p, q)))
print(kl_div(p, q), sum(kl_div(p, q)))

收益率

代码语言:javascript
复制
0.5108256237659907
[ 0.80471896 -0.29389333] 0.5108256237659907
[0.40471896 0.10610667] 0.5108256237659906

我不熟悉scipy.special.kl_div的元素级额外术语背后的基本原理,但是文档指出了一种可能解释更多的引用。

请参阅:https://docs.scipy.org/doc/scipy/reference/generated/scipy.special.kl_div.html#scipy.special.kl_div

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63369974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档