354 Stimmen

Was bedeutet "Entropie und Informationsgewinn"?

Ich lese gerade dieses Buch ( NLTK ) und es ist verwirrend. Entropie es definiert als :

Die Entropie ist die Summe der Wahrscheinlichkeiten für jedes Etikett mal der logarithmischen Wahrscheinlichkeit desselben Labels

Wie kann ich mich bewerben? Entropie y maximale Entropie in Bezug auf das Textmining? Kann mir jemand ein leichtes, einfaches Beispiel (visuell) geben?

47voto

VforVitamin Punkte 936

Zunächst einmal wäre es am besten zu verstehen the measure of information .

Wie können wir measure die Informationen?

Wenn etwas Unwahrscheinliches passiert, nennen wir es eine große Neuigkeit. Und wenn wir sagen, dass etwas vorhersehbar ist, ist es nicht wirklich interessant. Um dies also zu quantifizieren interesting-ness sollte die Funktion folgende Bedingungen erfüllen

  • wenn die Wahrscheinlichkeit des Ereignisses 1 (vorhersehbar) ist, dann ergibt die Funktion 0
  • Wenn die Wahrscheinlichkeit des Ereignisses nahe bei 0 liegt, dann sollte die Funktion eine hohe Zahl ergeben
  • Wenn mit einer Wahrscheinlichkeit von 0,5 Ereignisse eintreten, ergibt sich one bit von Informationen.

Ein natürliches Maß, das die Bedingungen erfüllt, ist

I(X) = -log_2(p)

donde p ist die Wahrscheinlichkeit des Ereignisses X . Und die Einheit ist in bit das gleiche Bit, das ein Computer verwendet. 0 oder 1.

Beispiel 1

Fairer Münzwurf :

Wie viele Informationen können wir aus einem Münzwurf gewinnen?

Antwort : -log(p) = -log(1/2) = 1 (bit)

Beispiel 2

Wenn morgen ein Meteor auf der Erde einschlägt, p=2^{-22} dann können wir 22 Bits an Informationen erhalten.

Wenn die Sonne morgen aufgeht, p ~ 1 dann ist es 0 Bit an Information.

Entropie

Wenn wir also die Erwartung auf die interesting-ness eines Ereignisses Y dann ist es die Entropie. D.h. die Entropie ist ein Erwartungswert für die Interessantheit eines Ereignisses.

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

Formal gesehen ist die Entropie die erwartete Anzahl von Bits eines Ereignisses.

Beispiel

Y = 1 : ein Ereignis X tritt mit der Wahrscheinlichkeit p ein

Y = 0 : ein Ereignis X tritt mit der Wahrscheinlichkeit 1-p nicht ein

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

Log Basis 2 für alle log.

22voto

Beta Punkte 91455

Ich kann Ihnen keine Grafiken liefern, aber vielleicht kann ich eine klare Erklärung geben.

Nehmen wir an, wir haben einen Informationskanal, z. B. eine Lampe, die einmal am Tag entweder rot oder grün blinkt. Wie viele Informationen werden dadurch übermittelt? Die erste Schätzung könnte ein Bit pro Tag sein. Was aber, wenn wir Blau hinzufügen, so dass der Sender drei Möglichkeiten hat? Wir möchten ein Informationsmaß haben, das nicht nur mit Zweierpotenzen umgehen kann, sondern immer noch additiv ist (so wie die Multiplikation der Anzahl der möglichen Nachrichten mit zwei fügt hinzu. ein Bit). Wir könnten dies tun, indem wir log 2 (Anzahl der möglichen Nachrichten), aber es stellt sich heraus, dass es einen allgemeineren Weg gibt.

Angenommen, wir sind wieder bei Rot/Grün, aber die rote Glühbirne ist durchgebrannt (das ist allgemein bekannt), so dass die Lampe immer grün blinken muss. Der Kanal ist nun nutzlos, wir wissen, was der nächste Blitz sein wird Die Blitze vermitteln also keine Informationen, keine Nachrichten. Jetzt reparieren wir die Glühbirne, legen aber eine Regel fest, dass die rote Glühbirne nicht zweimal hintereinander blinken darf. Wenn die Lampe rot blinkt, wissen wir, was das nächste Blinken sein wird. Wenn Sie versuchen, einen Bitstrom über diesen Kanal zu senden, werden Sie feststellen, dass Sie ihn mit mehr Blitzen kodieren müssen, als Sie Bits haben (50 % mehr, um genau zu sein). Und wenn Sie eine Folge von Blitzen beschreiben wollen, können Sie dies mit weniger Bits tun. Das Gleiche gilt, wenn jeder Blitz unabhängig ist (kontextfrei), aber grüne Blitze häufiger vorkommen als rote: Je schräger die Wahrscheinlichkeit ist, desto weniger Bits braucht man, um die Sequenz zu beschreiben, und desto weniger Informationen enthält sie, bis hin zur Grenze, dass alles grün ist und die Glühbirne durchbrennt.

Es hat sich herausgestellt, dass es eine Möglichkeit gibt, den Informationsgehalt eines Signals zu messen, und zwar auf der Grundlage der Wahrscheinlichkeiten der verschiedenen Symbole. Wenn die Wahrscheinlichkeit des Empfangs von Symbol x i ist p i dann betrachten Sie die Menge

\-log pi

Der kleinere p i desto größer ist dieser Wert. Wenn x i doppelt so unwahrscheinlich wird, erhöht sich dieser Wert um einen festen Betrag (log(2)). Dies soll Sie daran erinnern, wie man ein Bit zu einer Nachricht hinzufügt.

Wenn wir nicht wissen, was das Symbol sein wird (aber wir kennen die Wahrscheinlichkeiten), dann können wir den Durchschnitt dieses Wertes berechnen, wie viel wir bekommen werden, indem wir über die verschiedenen Möglichkeiten summieren:

I = -Σ pi log(pi)

Dies ist der Informationsgehalt auf einen Blick.

Red bulb burnt out: pred = 0, pgreen\=1, I = -(0 + 0)  = 0
Red and green equiprobable: pred = 1/2, pgreen = 1/2, I = -(2 \* 1/2 \* log(1/2)) = log(2)
Three colors, equiprobable: pi\=1/3, I = -(3 \* 1/3 \* log(1/3)) = log(3)
Green and red, green twice as likely: pred\=1/3, pgreen\=2/3, I = -(1/3 log(1/3) + 2/3 log(2/3)) = log(3) - 2/3 log(2)

Dies ist der Informationsgehalt bzw. die Entropie der Nachricht. Sie ist maximal, wenn die verschiedenen Symbole gleichwertig sind. Wenn Sie Physiker sind, verwenden Sie den natürlichen Logarithmus, wenn Sie Informatiker sind, verwenden Sie log 2 und erhalten Bits.

11voto

Ich empfehle Ihnen, sich über Informationstheorie, bayesianische Methoden und MaxEnt zu informieren. Ein guter Einstieg ist dieses (online frei verfügbare) Buch von David Mackay:

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

Diese Inferenzmethoden sind wirklich viel allgemeiner als nur Text Mining, und ich kann mir nicht wirklich vorstellen, wie man sie auf NLP anwenden kann, ohne einige der allgemeinen Grundlagen aus diesem Buch oder anderen einführenden Büchern über maschinelles Lernen und MaxEnt-Bayes-Methoden zu lernen.

Die Verbindung zwischen Entropie und Wahrscheinlichkeitstheorie und der Informationsverarbeitung und -speicherung ist sehr, sehr tief. Um einen Vorgeschmack zu geben: Es gibt ein Theorem von Shannon, das besagt, dass die maximale Menge an Informationen, die ohne Fehler durch einen verrauschten Kommunikationskanal übertragen werden kann, gleich der Entropie des Rauschprozesses ist. Es gibt auch ein Theorem, das besagt, dass die Entropie des Prozesses, der die Daten erzeugt hat, mit der Frage zusammenhängt, wie stark man ein Stück Daten komprimieren kann, um den kleinstmöglichen Speicherplatz in einem Computer zu belegen.

Ich glaube nicht, dass es wirklich notwendig ist, all diese Theoreme über Kommunikationstheorie zu lernen, aber es ist nicht möglich, dies zu lernen, ohne die Grundlagen darüber zu lernen, was Entropie ist, wie sie berechnet wird, in welcher Beziehung sie zu Information und Inferenz steht usw..

6voto

Informell

Entropie Der Mangel an Informationen führt zu Schwierigkeiten bei der Vorhersage der Zukunft, was eine hohe Entropie bedeutet (Vorhersage des nächsten Wortes im Text Mining), während die Verfügbarkeit von Informationen/Wissen zu einer realistischeren Vorhersage der Zukunft führt (niedrige Entropie).

Relevante Informationen jeglicher Art verringern die Entropie und helfen uns, die Zukunft realistischer vorherzusagen, sei es, dass das Wort "Fleisch" im Satz vorkommt oder nicht. Dies wird als Informationsgewinn


Formal

Entropie ist das Fehlen einer Ordnung der Vorhersehbarkeit

5voto

Matt Warren Punkte 10169

Als ich einen Algorithmus zur Berechnung der Entropie eines Bildes implementierte, fand ich diese Links, siehe aquí y aquí .

Dies ist der Pseudocode, den ich verwendet habe. Sie müssen ihn anpassen, damit er mit Text und nicht mit Bildern funktioniert, aber die Prinzipien sollten dieselben sein.

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

Ich habe diesen Code von irgendwoher, aber ich kann den Link nicht mehr finden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X