Pourquoi est-ce que j'obtiens une entropie d'informations supérieure à 1?

11

J'ai implémenté la fonction suivante pour calculer l'entropie:

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

Résultat:

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

Ma compréhension était que l'entropie est comprise entre 0 et 1, 0 signifiant très certain et 1 signifiant très incertain. Pourquoi ai-je une mesure d'entropie supérieure à 1?

Je sais que si j'augmente la taille de la base logarithmique, la mesure d'entropie sera plus petite, mais je pensais que la base 2 était standard, donc je ne pense pas que ce soit le problème.

Je dois manquer quelque chose d'évident, mais quoi?

Akavall
la source
La base ne dépend-elle pas du type d'entropie? L'entropie de Shannon en base 2 et l'entropie de la mécanique statistique naturelle ne sont-elles pas?
Alexis
@Alexis, mais l'entropie de Shannons ne se situe-t-elle pas entre 0 et 1?
Akavall
1
Non: l'entropie de Shannon n'est pas négative.
Alexis
2
Il semble qu'il n'y ait rien de mal à ce que l'entropie soit supérieure à 1 si j'ai plus de deux événements, et la valeur de l'entropie est comprise entre 0 et 1 uniquement dans un cas spécial, où mes événements sont binaires (j'ai deux événements).
Akavall du

Réponses:

17

L'entropie n'est pas la même chose que la probabilité .

L'entropie mesure «l'information» ou «l'incertitude» d'une variable aléatoire. Lorsque vous utilisez la base 2, elle est mesurée en bits; et il peut y avoir plus d'un bit d'information dans une variable.

Dans cet exemple, un échantillon "contient" environ 1,15 bits d'informations. En d'autres termes, si vous pouviez compresser parfaitement une série d'échantillons, vous auriez besoin de ce nombre de bits par échantillon, en moyenne.

CL.
la source
Merci. Je pense que je comprends, mais je veux m'assurer. Je la déclaration suivante à droite? Si je n'ai que deux résultats, alors la plupart des informations que je peux obtenir sont de 1 bit, mais si j'ai plus de 2 résultats, je peux obtenir plus d'un bit d'informations.
Akavall
Oui. (Par exemple, considérons quatre résultats uniformément distribués, qui pourraient être générés par deux lancers de pièces justes par échantillon.)
CL.
Pour ajouter à cela, l'entropie varie de 0 à 1 pour les problèmes de classification binaire et de 0 à la base de log 2 k, où k est le nombre de classes que vous avez.
MichaelMMeskhi
13

La valeur maximale d'entropie est , où k est le nombre de catégories que vous utilisez. Sa valeur numérique dépendra naturellement de la base des logarithmes que vous utilisez.logkk

En utilisant les logarithmes de base 2 comme exemple, comme dans la question: est 0 et log 2 2 est 1 , donc un résultat supérieur à 1 est définitivement faux si le nombre de catégories est 1 ou 2 . Une valeur supérieure à 1 sera erronée si elle dépasse log 2 k .log210log2211121log2k

logk01

Nick Cox
la source
ne savait pas à ce sujet, merci. Donc, fondamentalement, la base du logarithme doit être la même que la longueur de l'échantillon, et pas plus?
Fierce82
2
La longueur de l'échantillon est également sans importance. C'est le nombre de catégories que vous avez.
Nick Cox
juste pour clarifier, est-ce le nombre de catégories possibles, ou le nombre de catégories pour lesquelles vous calculez l'entropie? par exemple. j'ai 10 catégories possibles, mais il y a 3 échantillons représentant 2 catégories dans le système pour lequel je calcule l'entropie. est k dans ce cas 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

Donnant:

>>> calc_entropy([1/7.0, 1/7.0, 5/7.0])
0.796311640173813
Alexis
la source
Je sais que je peux le faire, mais j'avais l'impression que l'utilisation de la base de log 2 devrait également donner une valeur d'entropie entre 0 et 1. La base de log 2 peut-elle être utilisée uniquement lorsque j'ai deux probabilités?
Akavall
Journal2p
1