2013-05-19 4 views
5

Ich lese Machine Learning In Action und gehe durch den Entscheidungsbaum Kapitel. Ich verstehe, dass Entscheidungsbäume so aufgebaut sind, dass das Teilen des Datensatzes Ihnen eine Möglichkeit gibt, Ihre Zweige und Blätter zu strukturieren. Dies gibt Ihnen wahrscheinlichere Informationen an der Spitze des Baums und begrenzt, wie viele Entscheidungen Sie durchlaufen müssen.Verständnis Shannon Entropie eines Datensatzes

Das Buch zeigt eine Funktion der Shannon-Entropie eines Datensatzes Bestimmung:

def calcShannonEnt(dataSet): 
    numEntries = len(dataSet) 
    labelCounts = {} 
    for featVec in dataSet: #the the number of unique elements and their occurance 
     currentLabel = featVec[-1] 
     if currentLabel not in labelCounts.keys(): labelCounts[currentLabel] = 0 
     labelCounts[currentLabel] += 1 
    shannonEnt = 0.0 
    for key in labelCounts: 
     prob = float(labelCounts[key])/numEntries 
     shannonEnt -= prob * log(prob,2) #log base 2 
    return shannonEnt 

Wenn der Eingabedatensatz ein Array von Arrays, wobei jedes Array ein Potential klassifizierbar Merkmal darstellt:

dataSet = [[1, 1, 'yes'], 
    [1, 1, 'yes'], 
    [1, 0, 'no'], 
    [0, 1, 'no'], 
    [0, 1, 'no']] 

Was ich nicht verstehe ist, warum die Shannon-Entropie-Funktion in diesem Buch immer nur das letzte Element im Feature-Array betrachtet? Es sieht so aus, als würde es nur die Entropie für "Ja" oder "Nein" -Elemente berechnen und nicht die Entropie irgendeines der anderen Merkmale?

enter image description here

Es macht Sinn für mich nicht, weil die Entropie für diese Daten

gesetzt
dataSet = [[1, 1, 'yes'], 
    [1, 'asdfasdf', 'yes'], 
    [1900, 0, 'no'], 
    [0, 1, 'no'], 
    ['ddd', 1, 'no']] 

Ist das gleiche wie die Entropie oben, obwohl es viel vielfältige Daten hat.

Sollten nicht auch die anderen Feature-Elemente gezählt werden, um die gesamte Entropie des Datensatzes zu erhalten, oder verstehe ich nicht, was die Entropieberechnung machen soll?

Wenn jemand neugierig ist, ist die vollständige Quelle (wo dieser Code herkam) für das Buch here unter dem Ordner Chapter03.

Antwort

8

Die mögliche Mehrdeutigkeit besteht darin, dass der Datensatz, den Sie betrachten, sowohl Merkmale als auch Ergebnisvariable enthält, wobei die Ergebnisvariable in der letzten Spalte steht. Das Problem, das Sie zu lösen versuchen, ist "Do Feature 1 und Feature 2 helfen mir, das Ergebnis vorherzusagen"?

Eine andere Möglichkeit, dies zu sagen ist, wenn ich meine Daten nach Merkmal 1 aufteilen, bekomme ich bessere Informationen über das Ergebnis?

In diesem Fall ist die Outcome-Variable ohne Aufteilen [ja, ja, nein, nein, nein]. Wenn ich auf Eigenschaft 1 geteilt, erhalte ich 2 Gruppen: Eigenschaft 1 = 0 -> Ergebnis ist [no, no] Eigenschaft 1 = 1 -> Ouctome ist [ja, ja, nein]

hier Die Idee ist, um zu sehen, ob du mit dieser Spaltung besser dran bist. Zu Beginn hatten Sie eine bestimmte Information, die von der Shannon-Entropie von [ja, ja, nein, nein, nein] beschrieben wurde. Nach der Teilung haben Sie zwei Gruppen mit "besseren Informationen" für die Gruppe, in der Merkmal 1 = 0 ist: Sie wissen in diesem Fall, dass das Ergebnis nein ist, und das wird durch die Entropie von [nein, nein] gemessen. Mit anderen Worten, der Ansatz besteht darin, herauszufinden, ob aus den verfügbaren Funktionen eine vorhanden ist, die, wenn sie verwendet wird, Ihre Informationen zu dem erhöht, was Ihnen am Herzen liegt, dh zur Outcome-Variable. Das Baumgebäude wird gierig das Merkmal mit dem höchsten Informationsgewinn bei jedem Schritt auswählen und dann sehen, ob es sich lohnt, die resultierenden Gruppen weiter aufzuteilen.