Mathematical-Statistics
為什麼我得到的信息熵大於 1?
我實現了以下函數來計算熵:
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 位信息。換句話說,如果您能夠完美地壓縮一系列樣本,則平均每個樣本需要那麼多位。