エントロピーを計算するために、次の関数を実装しました。
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を底とするシャノンエントロピーと自然対数統計力学エントロピーではないですか?
—
Alexis
@アレクシスですが、シャノンのエントロピー範囲は0から1の間ではありませんか?
—
Akavall 14
いいえ:シャノンエントロピーは負ではありません。
—
Alexis 14
イベントが2つ以上ある場合、エントロピーが1を超えても問題はないようです。エントロピーの値は、イベントがバイナリである(2つのイベントがある)特別な場合にのみ0と1の間です。
—
Akavall 14