Mathematical-Statistics

為什麼我得到的信息熵大於 1?

  • April 26, 2014

我實現了以下函數來計算熵:

from math import log

def calc_entropy(probs):
   my_sum = 0
   for p in probs:
       if p > 0:
           my_sum += p * log(p, 2)

   return - my_sum

結果:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
1.1488348542809168
>>> from scipy.stats import entropy # using a built-in package 
                                   # give the same answer
>>> entropy([1/7.0, 1/7.0, 5/7.0], base=2)
1.1488348542809166

我的理解是熵介於 0 和 1 之間,0 表示非常確定,1 表示非常不確定。為什麼我得到大於 1 的熵度量?

我知道如果我增加對數基數的大小,熵度量會更小,但我認為基數 2 是標準的,所以我認為這不是問題。

我一定遺漏了一些明顯的東西,但是什麼?

不等於概率_

熵衡量隨機變量的“信息”或“不確定性”。當您使用基數 2 時,它以位為單位;並且變量中可以有不止一位信息。

在此示例中,一個樣本“包含”大約 1.15 位信息。換句話說,如果您能夠完美地壓縮一系列樣本,則平均每個樣本需要那麼多位。

引用自:https://stats.stackexchange.com/questions/95261

comments powered by Disqus