Ich gehe davon aus, dass Entropie im Zusammenhang mit der Erstellung von Entscheidungsbäumen erwähnt wurde .
Stellen Sie sich zur Veranschaulichung die Aufgabe vor, zu lernen , Vornamen in männliche / weibliche Gruppen einzuteilen . Das ist eine Liste von Namen, die jeweils entweder mit m
oder gekennzeichnet f
sind. Wir möchten ein Modell lernen , das zu den Daten passt und verwendet werden kann, um das Geschlecht eines neuen unsichtbaren Vornamens vorherzusagen.
name gender
----------------- Now we want to predict
Ashley f the gender of "Amro" (my name)
Brian m
Caroline f
David m
Der erste Schritt besteht darin, zu entscheiden, welche Merkmale der Daten für die Zielklasse relevant sind, die wir vorhersagen möchten. Einige Beispielfunktionen umfassen: erster / letzter Buchstabe, Länge, Anzahl der Vokale, endet er mit einem Vokal usw. Nach der Merkmalsextraktion sehen unsere Daten also wie folgt aus:
# 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
Ziel ist es, einen Entscheidungsbaum zu erstellen . Ein Beispiel für einen Baum wäre:
length<7
| num-vowels<3: male
| num-vowels>=3
| | ends-vowel=1: female
| | ends-vowel=0: male
length>=7
| length=5: male
Grundsätzlich stellt jeder Knoten einen Test dar, der für ein einzelnes Attribut durchgeführt wird, und wir gehen je nach Testergebnis nach links oder rechts. Wir durchqueren den Baum so lange, bis wir einen Blattknoten erreichen, der die Klassenvorhersage enthält ( m
oderf
)
Wenn wir also den Namen Amro in diesem Baum ausführen , testen wir zunächst " Ist die Länge <7? " Und die Antwort lautet " Ja ". Also gehen wir diesen Zweig hinunter. Nach der Verzweigung wird der nächste Test " Ist die Anzahl der Vokale <3? " Erneut als wahr ausgewertet . Dies führt zu einem beschrifteten Blattknoten m
, und daher ist die Vorhersage männlich (was ich zufällig bin, also hat der Baum das Ergebnis korrekt vorhergesagt ).
Der Entscheidungsbaum wird von oben nach unten erstellt. Die Frage ist jedoch, wie Sie auswählen, welches Attribut an jedem Knoten aufgeteilt werden soll. Die Antwort lautet: Finden Sie die Funktion, die die Zielklasse am besten in die reinsten untergeordneten Knoten aufteilt (dh Knoten, die keine Mischung aus männlichen und weiblichen Knoten enthalten, sondern reine Knoten mit nur einer Klasse).
Dieses Maß an Reinheit wird als Information bezeichnet . Es stellt die erwartete Menge an Informationen dar , die erforderlich wären, um anzugeben, ob eine neue Instanz (Vorname) anhand des Beispiels, das den Knoten erreicht hat, als männlich oder weiblich klassifiziert werden soll. Wir berechnen es basierend auf der Anzahl der männlichen und weiblichen Klassen am Knoten.
Die Entropie hingegen ist ein Maß für die Verunreinigung (im Gegenteil). Es ist für eine Binärklasse mit Wertena
/ definiertb
als:
Entropy = - p(a)*log(p(a)) - p(b)*log(p(b))
Diese binäre Entropiefunktion ist in der folgenden Abbildung dargestellt (Zufallsvariable kann einen von zwei Werten annehmen). Es erreicht sein Maximum, wenn die Wahrscheinlichkeit ist p=1/2
, was bedeutet, dass p(X=a)=0.5
oder in ähnlicher Weise p(X=b)=0.5
eine 50% / 50% ige Chance besteht, entweder a
oder zu sein b
(die Unsicherheit ist maximal). Die Entropiefunktion ist bei einem Minimum von Null, wenn die Wahrscheinlichkeit p=1
oder p=0
mit vollständiger Sicherheit ist ( p(X=a)=1
oder p(X=a)=0
letztere impliziert p(X=b)=1
).
Natürlich kann die Definition der Entropie für eine diskrete Zufallsvariable X mit N Ergebnissen (nicht nur zwei) verallgemeinert werden:
(Das log
in der Formel wird normalerweise als Logarithmus zur Basis 2 verwendet. )
Zurück zu unserer Aufgabe der Namensklassifizierung, schauen wir uns ein Beispiel an. Stellen Sie sich vor, wir haben irgendwann während der Erstellung des Baums die folgende Aufteilung in Betracht gezogen:
ends-vowel
[9m,5f] <--- the [..,..] notation represents the class
/ \ distribution of instances that reached a node
=1 =0
------- -------
[3m,4f] [6m,1f]
Wie Sie sehen können, hatten wir vor der Trennung 9 Männer und 5 Frauen, dh P(m)=9/14
und P(f)=5/14
. Nach der Definition der Entropie:
Entropy_before = - (5/14)*log2(5/14) - (9/14)*log2(9/14) = 0.9403
Als nächstes vergleichen wir es mit der Entropie, die berechnet wurde, nachdem die Aufteilung anhand von zwei untergeordneten Zweigen betrachtet wurde. Im linken Zweig von ends-vowel=1
haben wir:
Entropy_left = - (3/7)*log2(3/7) - (4/7)*log2(4/7) = 0.9852
und den richtigen Zweig von ends-vowel=0
haben wir:
Entropy_right = - (6/7)*log2(6/7) - (1/7)*log2(1/7) = 0.5917
Wir kombinieren die linken / rechten Entropien unter Verwendung der Anzahl der Instanzen in jedem Zweig als Gewichtsfaktor (7 Instanzen gingen nach links und 7 Instanzen gingen nach rechts) und erhalten die endgültige Entropie nach der Aufteilung:
Entropy_after = 7/14*Entropy_left + 7/14*Entropy_right = 0.7885
Durch Vergleichen der Entropie vor und nach der Aufteilung erhalten wir nun ein Maß für den Informationsgewinn oder wie viele Informationen wir durch die Aufteilung mit diesem bestimmten Merkmal gewonnen haben:
Information_Gain = Entropy_before - Entropy_after = 0.1518
Sie können die obige Berechnung wie folgt interpretieren: Durch die Aufteilung mit dem end-vowels
Feature konnten wir die Unsicherheit im Ergebnis der Unterbaumvorhersage um einen kleinen Betrag von 0,1518 (gemessen in Bits als Informationseinheiten ) reduzieren .
An jedem Knoten des Baums wird diese Berechnung für jedes Merkmal durchgeführt, und das Merkmal mit dem größten Informationsgewinn wird für die Aufteilung auf gierige Weise ausgewählt (wodurch Merkmale bevorzugt werden, die reine erzeugen Teilungen mit geringer Unsicherheit / Entropie ). Dieser Prozess wird vom Stammknoten abwärts rekursiv angewendet und stoppt, wenn ein Blattknoten Instanzen enthält, die alle dieselbe Klasse haben (keine weitere Aufteilung erforderlich).
Beachten Sie, dass ich einige Details übersprungen habe, die über den Rahmen dieses Beitrags hinausgehen, einschließlich des Umgangs mit numerischen Features , fehlenden Werten , Überanpassung und Beschneiden von Bäumen usw.