Scipy的entropy
函数使用基数e作为默认值计算Kullback-Leibler散度。根据{{3}},使用基数e时KL散度不能大于1。我发现了scipy
的熵函数返回一个大于1的值的情况。这让我感到困惑,因为我认为使用e为基数时,KL散度应始终返回小于1的值。我实际上不是在使用scipy
的{{1}}函数计算KL散度吗?使用基数e的KL散度能否返回大于1的值?
entropy
答案 0 :(得分:0)
使用底数e对KL散度没有上限。维基百科的介绍性段落可能会引起误解:
在简单情况下,Kullback-Leibler散度为0表示 我们可以期望两个不同的行为相似(如果不相同) 分布,而Kullback-Leibler散度为1表示 两种分布的行为方式不同, 第一个分布接近零时的期望值。
正如评论中指出的那样,没有上限,大于1的值是有效的KL散度。