web-dev-qa-db-fra.com

Qu'est-ce que "l'entropie et le gain d'information"?

Je lis ce livre ( NLTK ) et c'est déroutant. Entropie est défini comme :

L'entropie est la somme de la probabilité de chaque étiquette multipliée par la probabilité de journalisation de cette même étiquette.

Comment puis-je appliquer entropie et entropie maximale en termes d'exploration de texte? Quelqu'un peut-il me donner un exemple simple et visuel (visuel)?

329
TIMEX

Je suppose que l'entropie a été mentionnée dans le contexte de la construction des arbres de décision .

Pour illustrer, imaginez la tâche de apprendre à classer prénoms en groupes d'hommes/femmes. On donne à la liste des noms étiquetés m ou f, nous voulons apprendre un modèle qui correspond aux données et peut être utilisé pour prédire le genre d'un nouveau prénom invisible.

name       gender
-----------------        Now we want to predict 
Ashley        f              the gender of "Amro" (my name)
Brian         m
Caroline      f
David         m

La première étape est décider ce que () caractéristiques des données sont pertinentes pour la classe cible que nous voulons prédire. Voici quelques exemples de fonctionnalités: première/dernière lettre, longueur, nombre de voyelles, se termine-t-il par une voyelle, etc. Ainsi, après l'extraction de la fonctionnalité, nos données ressemblent à:

# name    ends-vowel  num-vowels   length   gender
# ------------------------------------------------
Ashley        1         3           6        f
Brian         0         2           5        m
Caroline      1         4           8        f
David         0         2           5        m

Le but est de construire un arbre de décision . Un exemple de arbre serait:

length<7
|   num-vowels<3: male
|   num-vowels>=3
|   |   ends-vowel=1: female
|   |   ends-vowel=0: male
length>=7
|   length=5: male

en gros, chaque nœud représente un test effectué sur un seul attribut, et nous allons à gauche ou à droite en fonction du résultat du test. Nous continuons à parcourir l’arbre jusqu’à atteindre un nœud feuille contenant la prédiction de classe (m ou f)

Donc, si nous lançons le nom Amro dans cet arbre, nous commençons par tester "est-ce que la longueur est <7?" et la réponse est oui, alors nous descendons cette branche. Après la branche, le test suivant "le nombre de voyelles <3?" est évalué à nouveau à true. Cela conduit à un nœud feuille nommé m, et donc la prédiction est mâle (ce que je suis, donc l'arbre a prédit le résultat correctement ).

L'arbre de décision est construit de manière descendante , mais la question est de savoir comment choisir un attribut à scinder sur chaque noeud. La réponse est de trouver la fonctionnalité qui divise le mieux la classe cible en nœuds enfants les plus purs possibles (c.-à-d. Des nœuds ne contenant pas un mélange de mâles et de femelles, des nœuds purs avec une seule classe).

Cette mesure de pureté est appelée information . Il représente la quantité attendue de information qui serait nécessaire pour spécifier si une nouvelle instance (prénom) doit être classifiée homme ou femme, compte tenu de l'exemple ayant atteint le nœud. . Nous le calculons en fonction du nombre de classes d'hommes et de femmes au nœud.

Entropie est en revanche une mesure de impureté (l'inverse). Il est défini pour un classe binaire avec les valeurs a/b comme:

Entropy = - p(a)*log(p(a)) - p(b)*log(p(b))

Cette fonction d'entropie binaire est décrite dans la figure ci-dessous (la variable aléatoire peut prendre l'une des deux valeurs). Il atteint son maximum lorsque la probabilité est p=1/2, ce qui signifie que p(X=a)=0.5 ou pareillementp(X=b)=0.5 ayant une chance d'être 50%/50% d'être a ou b ( l'incertitude est maximale). La fonction d'entropie est au minimum zéro lorsque la probabilité est p=1 ou p=0 avec une certitude absolue (p(X=a)=1 ou p(X=a)=0 respectivement, ce qui implique p(X=b)=1).

https://en.wikipedia.org/wiki/File:Binary_entropy_plot.svg

Bien sûr, la définition de l'entropie peut être généralisée pour une variable aléatoire discrète X avec N résultats (pas seulement deux):

entropy

(la log de la formule est généralement considérée comme le logarithme de la base 2 )


Revenons à notre tâche de classification des noms, regardons un exemple. Imaginez à un moment donné au cours du processus de construction de l’arbre, nous envisagions la division suivante:

     ends-vowel
      [9m,5f]          <--- the [..,..] notation represents the class
    /          \            distribution of instances that reached a node
   =1          =0
 -------     -------
 [3m,4f]     [6m,1f]

Comme vous pouvez le constater, avant la scission, nous avions 9 hommes et 5 femmes, à savoir P(m)=9/14 et P(f)=5/14. Selon la définition de l'entropie:

Entropy_before = - (5/14)*log2(5/14) - (9/14)*log2(9/14) = 0.9403

Ensuite, nous la comparons à l'entropie calculée après avoir considéré la scission en considérant deux branches filles. Dans la branche gauche de ends-vowel=1, nous avons:

Entropy_left = - (3/7)*log2(3/7) - (4/7)*log2(4/7) = 0.9852

et la branche droite de ends-vowel=0, nous avons:

Entropy_right = - (6/7)*log2(6/7) - (1/7)*log2(1/7) = 0.5917

Nous combinons les entropies gauche/droite en utilisant le nombre d'instances dans chaque branche sous la forme facteur de pondération (7 instances sont passées à gauche et 7 instances à droite), et obtenons l'entropie finale après la scission:

Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885

Maintenant, en comparant l'entropie avant et après la scission, nous obtenons une mesure de gain d'information , ou combien d'informations nous avons obtenues. en faisant la scission en utilisant cette fonctionnalité particulière:

Information_Gain = Entropy_before - Entropy_after = 0.1518

Vous pouvez interpréter le calcul ci-dessus comme suit: en effectuant la scission avec la fonction end-vowels, nous avons pu réduire l’incertitude du résultat de la prédiction de sous-arbre d’un faible montant de 0,1518 (mesuré - bits comme nités d'information ).

À chaque nœud de l’arbre, ce calcul est effectué pour chaque caractéristique, et la caractéristique avec le plus grand gain d’information est choisie pour la scission de manière gourmande (favorisant ainsi les caractéristiques). qui produisent pur se divise avec une faible incertitude/entropie). Ce processus est appliqué de manière récursive à partir du nœud racine et s’arrête lorsqu'un nœud feuille contient des instances ayant toutes la même classe (il n’est pas nécessaire de les fractionner davantage).

Notez que j'ai ignoré certains détails qui dépassent le cadre de cet article, y compris comment gérer fonctions numériques , valeurs manquantes , overfitting et élagage arbres, etc.

1032
Amro

Pour commencer, il serait préférable de comprendre the measure of information.

Comment pouvons-nous measure l'information?

Quand quelque chose d'inattendu se produit, nous disons que c'est une grande nouvelle. En outre, lorsque nous disons quelque chose de prévisible, ce n'est pas vraiment intéressant. Donc, pour quantifier ce interesting-ness, la fonction doit satisfaire

  • si la probabilité de l'événement est 1 (prévisible), alors la fonction donne 0
  • si la probabilité de l'événement est proche de 0, la fonction doit donner un nombre élevé
  • si 0,5 événement de probabilité se produit, il donne one bit d'information.

Une mesure naturelle qui satisfait les contraintes est

I(X) = -log_2(p)

p est la probabilité de l'événement X. Et l'unité est en bit, le même bit que l'ordinateur utilise. 0 ou 1.

Exemple 1

Juste pièce flip:

Combien d'informations pouvons-nous obtenir d'une pièce de monnaie?

Réponse: -log(p) = -log(1/2) = 1 (bit)

Exemple 2

Si un météore frappe la Terre demain, p=2^{-22}, alors nous pouvons obtenir 22 bits d'information.

Si le soleil se lève demain, p ~ 1 alors il s'agit d'un bit d'information 0.

Entropie

Donc, si nous attendons le interesting-ness d'un événement Y, alors c'est l'entropie. l'entropie est une valeur attendue de l'intérêt d'un événement.

H(Y) = E[ I(Y)]

Plus formellement, l'entropie est le nombre attendu de bits d'un événement.

Exemple

Y = 1: un événement X se produit avec une probabilité p

Y = 0: un événement X ne se produit pas avec la probabilité 1-p

H(Y) = E[I(Y)] = p I(Y==1) + (1-p) I(Y==0) 
     = - p log p - (1-p) log (1-p)

Journal de base 2 pour tous les journaux.

41
VforVitamin

Je ne peux pas vous donner de graphiques, mais je peux peut-être donner une explication claire.

Supposons que nous ayons un canal d'information, tel qu'un voyant qui clignote une fois par jour en rouge ou en vert. Combien d'informations transmet-il? La première hypothèse pourrait être un bit par jour. Mais que se passe-t-il si nous ajoutons du bleu, de sorte que l'expéditeur ait trois options? Nous aimerions avoir une mesure d’information capable de gérer des choses autres que les pouvoirs de deux, tout en restant additive (la façon de multiplier par deux le nombre de messages possibles ajoute un bit). Nous pourrions le faire en prenant le journal2(nombre de messages possibles), mais il s’avère qu’il existe un moyen plus général.

Supposons que nous revenions au rouge/vert, mais que l'ampoule rouge soit éteinte (c'est la connaissance commune), de sorte que la lampe doit toujours clignoter en vert. Le canal est maintenant inutile, nous savons ce que sera le prochain flash , de sorte que les flashs ne transmettent aucune information, aucune nouvelle. Maintenant, nous réparons l'ampoule mais imposons une règle selon laquelle l'ampoule rouge ne peut pas clignoter deux fois de suite. Lorsque le témoin clignote en rouge, nous savons ce que sera le prochain flash. Si vous essayez d'envoyer un flux de bits par ce canal, vous constaterez que vous devez l'encoder avec plus de clignotements que de bits (50% de plus, en fait). Et si vous souhaitez décrire une séquence de clignotements, vous pouvez le faire avec moins de bits. Il en va de même si chaque clignotement est indépendant (sans contexte), mais les clignotements verts sont plus fréquents que les voyants rouges: plus la probabilité est asymétrique, moins vous avez besoin de bits pour décrire la séquence, et moins elle contient d'informations jusqu'à la fin. tout vert, limite de l'ampoule grillée.

Il s'avère qu'il existe un moyen de mesurer la quantité d'informations dans un signal, en fonction des probabilités des différents symboles. Si la probabilité de recevoir le symbole xje est pje, alors considérez la quantité

 - log pje

Le plus petit pjeplus cette valeur est grande. Si xje devient deux fois plus improbable, cette valeur augmente d’un montant fixe (log (2)). Cela devrait vous rappeler d'ajouter un bit à un message.

Si nous ne savons pas ce que sera le symbole (mais que nous connaissons les probabilités), nous pouvons calculer la moyenne de cette valeur, combien nous obtiendrons, en faisant la somme des différentes possibilités:

 I = - & # 931 pje log (pje) 

Ceci est le contenu de l'information en un éclair.

 Ampoule rouge grillée: prouge = 0, pvert= 1, I = - (0 + 0) = 0 
 Équiprobable du rouge et du vert: prouge = 1/2, pvert = 1/2, I = - ((2 * 1/2 * log (1/2)) = log (2) 
 Trois couleurs, équiprobable: pje= 1/3, I = - (3 * 1/3 * log (1/3)) = log (3) 
 Vert et rouge, vert deux fois plus probable: prouge= 1/3, pvert= 2/3, I = - (1/3 log (1/3) + 2/3 log (2/3)) = log (3) - 2/3 log (2) 

C'est le contenu d'information, ou l'entropie, du message. Il est maximal lorsque les différents symboles sont équiprobables. Si vous êtes physicien, vous utilisez le journal naturel, si vous êtes informaticien, vous utilisez le journal2 et obtenir des bits.

21
Beta

Je vous recommande vraiment de lire sur la théorie de l'information, les méthodes bayésiennes et MaxEnt. L’endroit pour commencer est ce livre (disponible gratuitement en ligne) de David Mackay:

http://www.inference.phy.cam.ac.uk/mackay/itila/

Ces méthodes d’inférence sont bien plus générales que l’exploration de texte et je ne peux vraiment pas imaginer comment l’appliquer à la PNL sans apprendre quelques notions de base contenues dans ce livre ou d’autres livres d’introduction à Machine Learning et MaxEnt bayesian. méthodes.

Le lien entre l'entropie et la théorie des probabilités avec le traitement et le stockage de l'information est vraiment très profond. Pour en avoir un aperçu, il existe un théorème dû à Shannon qui stipule que la quantité maximale d'informations que vous pouvez transmettre sans erreur via un canal de communication bruyant est égale à l'entropie du processus de bruit. Il existe également un théorème qui connecte combien vous pouvez compresser une donnée pour occuper le minimum de mémoire possible sur votre ordinateur avec l'entropie du processus qui a généré les données.

Je ne pense pas qu'il soit vraiment nécessaire de vous familiariser avec tous ces théorèmes sur la théorie de la communication, mais il est impossible de l'apprendre sans apprendre les bases de ce qu'est l'entropie, de son calcul, de sa relation avec l'information et l'inférence, etc. ...

9

informellement

entropie est la disponibilité des informations ou des connaissances, le manque d'informations entraînera des difficultés dans la prédiction de l'avenir qui est hautement entropique (prochaine prédiction de Word dans l'exploration de texte) et la disponibilité des informations/connaissances nous aidera à prévoir de manière plus réaliste d'avenir (faible entropie).

Toute information pertinente, de quelque type que ce soit, réduira l'entropie et nous aidera à prévoir un avenir plus réaliste, que l'information peut être que Word "viande" est présent dans la phrase ou Word "viande" n'est pas présent. C'est ce qu'on appelle Gain d'information


officiellement

entropie est le manque d'ordre de prédicabilité

4
Waseem Ahmad Naeem

Lorsque j'ai implémenté un algorithme pour calculer l'entropie d'une image, j'ai trouvé ces liens, voir ici et ici .

C’est le pseudo-code que j’ai utilisé; vous devrez l’adapter pour travailler avec du texte plutôt que des images, mais les principes devraient être les mêmes.

//Loop over image array elements and count occurrences of each possible
//pixel to pixel difference value. Store these values in prob_array
for j = 0, ysize-1 do $
    for i = 0, xsize-2 do begin
       diff = array(i+1,j) - array(i,j)
       if diff lt (array_size+1)/2 and diff gt -(array_size+1)/2 then begin
            prob_array(diff+(array_size-1)/2) = prob_array(diff+(array_size-1)/2) + 1
       endif
     endfor

//Convert values in prob_array to probabilities and compute entropy
n = total(prob_array)

entrop = 0
for i = 0, array_size-1 do begin
    prob_array(i) = prob_array(i)/n

    //Base 2 log of x is Ln(x)/Ln(2). Take Ln of array element
    //here and divide final sum by Ln(2)
    if prob_array(i) ne 0 then begin
        entrop = entrop - prob_array(i)*alog(prob_array(i))
    endif
endfor

entrop = entrop/alog(2)

J'ai reçu ce code quelque part, mais je ne peux pas extraire le lien.

4
Matt Warren

Pendant que vous lisez un livre sur NLTK, il serait intéressant de lire MaxEnt Classifier Module http://www.nltk.org/api/nltk.classify.html#module-nltk.classify.maxent

Pour la classification par extraction de texte, les étapes peuvent être les suivantes: pré-traitement (tokenization, steaming, sélection de caractéristiques avec gain d’information, etc.), transformation en numérique (fréquence ou TF-IDF) (je pense que c’est l’étape clé à comprendre lors de texte en tant qu'entrée dans un algorithme acceptant uniquement numérique) puis classifié avec MaxEnt, bien sûr, il ne s'agit que d'un exemple.

0
Paulo