Warum erhalte ich eine Informationsentropie größer als 1?

11

Ich habe die folgende Funktion implementiert, um die Entropie zu berechnen:

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

Ergebnis:

>>> 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

Mein Verständnis war, dass die Entropie zwischen 0 und 1 liegt, wobei 0 sehr sicher und 1 sehr unsicher bedeutet. Warum bekomme ich ein Entropiemaß größer als 1?

Ich weiß, dass das Entropiemaß kleiner ist, wenn ich die Log-Basis vergrößere, aber ich dachte, Basis 2 sei Standard, also denke ich nicht, dass das das Problem ist.

Mir muss etwas Offensichtliches fehlen, aber was?

Akavall
quelle
Hängt die Basis nicht von der Art der Entropie ab? Ist nicht Basis 2 Shannon-Entropie und natürliche log statistische Mechanik Entropie?
Alexis
@Alexis, aber liegt Shannons Entropie nicht zwischen 0 und 1?
Akavall
1
Nein: Die Shannon-Entropie ist nicht negativ.
Alexis
2
Es scheint nichts Falsches daran zu sein, dass die Entropie größer als 1 ist, wenn ich mehr als zwei Ereignisse habe, und der Entropiewert nur in besonderen Fällen zwischen 0 und 1 liegt, wenn meine Ereignisse binär sind (ich habe zwei Ereignisse).
Akavall

Antworten:

17

Entropie ist nicht dasselbe wie Wahrscheinlichkeit .

Die Entropie misst die "Information" oder "Unsicherheit" einer Zufallsvariablen. Wenn Sie Basis 2 verwenden, wird diese in Bits gemessen. und es kann mehr als ein Informationsbit in einer Variablen geben.

In diesem Beispiel "enthält" ein Beispiel ungefähr 1,15 Informationsbits. Mit anderen Worten, wenn Sie eine Reihe von Samples perfekt komprimieren könnten, würden Sie durchschnittlich so viele Bits pro Sample benötigen.

CL.
quelle
Dankeschön. Ich glaube, ich verstehe, aber ich möchte sicher gehen. Ich die folgende Aussage richtig? Wenn ich nur zwei Ergebnisse habe, sind die meisten Informationen, die ich erhalten kann, 1 Bit, aber wenn ich mehr als 2 Ergebnisse habe, kann ich mehr als 1 Bit Informationen erhalten.
Akavall
Ja. (Betrachten Sie beispielsweise vier gleichmäßig verteilte Ergebnisse, die durch zwei faire Münzwürfe pro Probe erzielt werden könnten .)
CL.
Um dies hinzuzufügen, reicht die Entropie von 0-1 für binäre Klassifizierungsprobleme und 0 bis zur Protokollbasis 2 k, wobei k die Anzahl Ihrer Klassen ist.
MichaelMMeskhi
13

Der Maximalwert der Entropie ist , wobei k die Anzahl der von Ihnen verwendeten Kategorien ist. Der numerische Wert hängt natürlich von der Basis der verwendeten Logarithmen ab.Logkk

Verwenden Sie als Beispiel Logarithmen zur Basis 2, wie in der Frage: ist 0 und log 2 2 ist 1 , daher ist ein Ergebnis größer als 1 definitiv falsch, wenn die Anzahl der Kategorien 1 oder 2 beträgt . Ein Wert größer als 1 ist falsch, wenn er log 2 k überschreitet .Log210Log2211121Log2k

In Anbetracht dessen ist es ziemlich üblich, die Entropie nach zu skalieren , so dass die Ergebnisse dann zwischen 0 und 1 liegen .Logk01

Nick Cox
quelle
Ich wusste nichts davon, danke. Die Basis des Logarithmus muss also im Grunde der Länge der Stichprobe entsprechen und nicht mehr?
Fierce82
2
Die Länge der Probe spielt ebenfalls keine Rolle. Es ist, wie viele Kategorien Sie haben.
Nick Cox
Ist es nur zur Verdeutlichung die Anzahl der möglichen Kategorien oder die Anzahl der Kategorien, für die Sie die Entropie berechnen? z.B. Ich habe 10 mögliche Kategorien, aber es gibt 3 Stichproben, die 2 Kategorien in dem System darstellen, für das ich die Entropie berechne. ist k in diesem Fall 2?
eljusticiero67
- -0Log0
-2

e

from math import log

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

    return - my_sum

Geben:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
0.796311640173813
Alexis
quelle
Ich weiß, dass ich das kann, aber ich hatte den Eindruck, dass die Verwendung von Log Base 2 auch einen Entropiewert zwischen 0 und 1 ergeben sollte. Kann Log Base 2 nur verwendet werden, wenn ich zwei Wahrscheinlichkeiten habe?
Akavall
Log2p
1