2016-06-15 19 views
0

Das ist super einfach, aber ich lerne über Entscheidungsbäume und den ID3-Algorithmus. Ich fand eine Website, die sehr hilfreich ist und ich über Entropie und Informationszunahme nach alles, bis ich zuBerechnung der Entropie eines bestimmten Attributs?

this point on the page.

Ich verstehe nicht bekam, wie die Entropie für jedes einzelne Attribut (sonnig, windig, regnerisch) ist berechnet - insbesondere, wie p-sub-i berechnet wird. Es scheint anders zu sein als die Berechnung für Entropie (S). Kann jemand den Prozess hinter dieser Berechnung erklären?

Antwort

0

Um einen Knoten in zwei verschiedene untergeordnete Knoten aufzuteilen, besteht eine Methode darin, den Knoten entsprechend der Variablen aufzuteilen, die Ihren Informationsgewinn maximieren kann. Wenn Sie einen reinen Blattknoten erreichen, ist der Informationsgewinn gleich 0 (weil Sie keine Informationen erhalten können, indem Sie einen Knoten aufteilen, der nur eine Variable enthält - logic).

In Ihrem Beispiel Entropy(S) = 1.571 ist Ihre aktuelle Entropie - die, die Sie vor dem Aufteilen haben. Nennen wir es HBase. Dann berechnen Sie die Entropie in Abhängigkeit von mehreren spaltbaren Parametern. Ihre Informationsgewinn zu erhalten, subtrahieren Sie die Entropie Ihres Kindes Knoten HBase ->gain = Hbase - child1NumRows/numOfRows*entropyChild1 - child2NumRows/numOfRows*entropyChild2

def GetEntropy(dataSet): 
    results = ResultsCounts(dataSet) 
    h = 0.0 #h => entropy 

    for i in results.keys(): 
     p = float(results[i])/NbRows(dataSet) 
     h = h - p * math.log2(p) 
    return h 

def GetInformationGain(dataSet, currentH, child1, child2): 
    p = float(NbRows(child1))/NbRows(dataSet) 
    gain = currentH - p*GetEntropy(child1) - (1 - p)*GetEntropy(child2) 
    return gain 

Das Ziel ist es, die beste aller Informationen Gewinne zu erhalten!

Hoffe, das hilft! :)