Dlaczego dostaję entropię informacji większą niż 1?

11

Zaimplementowałem następującą funkcję do obliczania entropii:

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

Wynik:

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

Zrozumiałem, że entropia zawiera się między 0 a 1, 0 oznacza bardzo pewny, a 1 oznacza bardzo niepewny. Dlaczego otrzymuję miarę entropii większą niż 1?

Wiem, że jeśli zwiększę rozmiar podstawy logu, miara entropii będzie mniejsza, ale myślałem, że baza 2 jest standardowa, więc nie sądzę, że to jest problem.

Muszę przegapić coś oczywistego, ale co?

Akavall
źródło
Czy podstawa nie zależy od rodzaju entropii? Czy nie jest entropia podstawy 2 Shannona i entropia mechaniki statystycznej dziennika naturalnego?
Alexis,
@Alexis, ale czy entropia Shannonsa nie mieści się w przedziale od 0 do 1?
Akavall,
1
Nie: Entropia Shannona nie jest ujemna.
Alexis,
2
Wydaje się, że nie ma nic złego w tym, że entropia jest większa niż 1, jeśli mam więcej niż dwa zdarzenia, a wartość entropii wynosi od 0 do 1 tylko w szczególnych przypadkach, w których moje zdarzenia są binarne (mam dwa zdarzenia).
Akavall,

Odpowiedzi:

17

Entropia to nie to samo, co prawdopodobieństwo .

Entropia mierzy „informację” lub „niepewność” zmiennej losowej. Gdy używasz podstawy 2, jest ona mierzona w bitach; a zmienna może zawierać więcej niż jeden bit informacji.

W tym przykładzie jedna próbka „zawiera” około 1,15 bitów informacji. Innymi słowy, gdybyś był w stanie idealnie skompresować serię próbek, potrzebowałbyś średnio tyle bitów na próbkę.

CL.
źródło
Dziękuję Ci. Myślę, że rozumiem, ale chcę się upewnić. Mam następujące stwierdzenie, prawda? Jeśli mam tylko dwa wyniki, to większość informacji, które mogę uzyskać, to 1 bit, ale jeśli mam więcej niż 2 wyniki, to mogę uzyskać więcej niż 1 bit informacji.
Akavall
Tak. (Na przykład rozważ cztery równomiernie rozłożone wyniki, które mogą być wygenerowane przez dwa rzuty monetą na próbkę.)
CL.
Aby dodać do tego, entropia waha się od 0-1 dla problemów z klasyfikacją binarną i od 0 do logarytmicznej podstawy 2 k, gdzie k jest liczbą klas, które masz.
MichaelMMeskhi
13

Maksymalna wartość entropii wynosi logk, gdzie kto liczba używanych kategorii. Jego wartość liczbowa będzie naturalnie zależeć od podstawy używanych logarytmów.

Wykorzystując logarytmy podstawowe 2 jako przykład, jak w pytaniu: log2)1 jest 0 i log2)2) jest 1, więc wynik jest większy niż 1 jest zdecydowanie błędny, jeśli liczba kategorii wynosi 1 lub 2). Wartość większa niż1 będzie źle, jeśli przekroczy log2)k.

W związku z tym dość często skaluje się entropię według logk, więc wyniki mieszczą się między 0 i 1,

Nick Cox
źródło
nie wiedziałem o tym, dzięki. Więc w zasadzie podstawa logarytmu powinna być taka sama jak długość próbki, a nie więcej?
Fierce82,
2
Długość próbki również nie ma znaczenia. To ile masz kategorii.
Nick Cox,
dla wyjaśnienia, czy jest to liczba możliwych kategorii, czy liczba kategorii, dla których obliczana jest entropia? na przykład. Mam 10 możliwych kategorii, ale w systemie są 3 próbki reprezentujące 2 kategorie, dla których obliczam entropię. jest k w tym przypadku 2?
eljusticiero67,
Kategorie, które nie występują w praktyce, mają prawdopodobieństwo zerowe i nie wpływają na wynik entropii. To silna konwencja, którą można bardziej rygorystycznie uzasadnić-0log0należy przyjmować jako zero (podstawa logarytmów jest tutaj nieistotna).
Nick Cox,
-2

Spróbuj tego (zwróć uwagę na bazę mi):

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

Dający:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
0.796311640173813
Alexis
źródło
Wiem, że mogę to zrobić, ale miałem wrażenie, że użycie logarytmicznej podstawy 2 powinno również dać wartość entropii od 0 do 1. Czy logarytmiczną podstawę 2 można stosować tylko wtedy, gdy mam dwa prawdopodobieństwa?
Akavall,
Za pomocą log2) mierzy liczbę bitów wymaganych do scharakteryzowania niepewności szeregu p-wartości. Zobacz xkcd.com/936 i en.wikipedia.org/wiki/Entropy_%28information_theory%29
Alexis
Ta odpowiedź sugerowałaby, że entropia wyrażona w natach nie powinna przekraczać 1, ale wątpię, by to była informacja, którą zamierzałeś przekazać, ponieważ to po prostu nieprawda.
whuber