Ich versuche zu verstehen, wie man den Entscheidungsprozess eines mit sklearn erstellten Entscheidungsbaum-Klassifizierungsmodells vollständig versteht. Die beiden Hauptaspekte, die ich betrachte, sind eine grafische Darstellung des Baums und die Liste der Funktionsbedeutungen. Was ich nicht verstehe, ist, wie die Merkmalsbedeutung im Kontext des Baums bestimmt wird. Hier ist zum Beispiel meine Liste der Funktionsbedeutungen:
Feature-Ranking: 1. FeatureA (0,300237)
FeatureB (0,166800)
FeatureC (0,092472)
FeatureD (0.075009)
FeatureE (0.068310)
FeatureF (0.067118)
FeatureG (0,066510)
FeatureH (0,043502)
FeatureI (0,040281)
FeatureJ (0.039006)
FeatureK (0.032618)
FeatureL (0,008136)
FeatureM (0,000000)
Wenn ich jedoch auf die Spitze des Baumes schaue, sieht es so aus:
Tatsächlich werden einige der Features, die als "am wichtigsten" eingestuft werden, erst viel weiter unten im Baum angezeigt, und oben im Baum befindet sich FeatureJ, eines der Features mit dem niedrigsten Rang. Meine naive Annahme wäre, dass die wichtigsten Merkmale in der Nähe der Baumspitze platziert werden, um die größte Wirkung zu erzielen. Wenn das falsch ist, was macht dann eine Funktion "wichtig"?
quelle
Antworten:
Es ist nicht erforderlich, dass je wichtiger ein Feature ist, desto höher sein Knoten im Entscheidungsbaum ist.
Dies liegt einfach daran, dass in jedem dieser beiden Fälle unterschiedliche Kriterien (z. B. Gini-Verunreinigung, Entropie-Informationsgewinn, MSE usw.) verwendet werden können (Aufteilung gegen Wichtigkeit).
Beispielsweise können
SkLearn
Sie bei wählen, ob die Knoten im Entscheidungsbaum gemäß dem Entropie-Informationsgewinn-Kriterium (siehecriterion
&'entropy'
atSkLearn
) aufgeteilt werden sollen, während die Wichtigkeit der Merkmale durch die Gini-Wichtigkeit gegeben ist, die die mittlere Abnahme des Gini darstellt Verunreinigung für eine bestimmte Variable über alle Bäume des zufälligen Waldes (siehefeature_importances_
beiSkLearn
und hier ).Wenn ich recht habe,
SkLearn
gilt dies auch dann, wenn Sie die Aufteilung der Knoten im Entscheidungsbaum nach dem Gini-Verunreinigungskriterium vornehmen, während die Bedeutung der Merkmale durch die Gini-Wichtigkeit angegeben wird, da Gini-Verunreinigung und Gini-Wichtigkeit nicht identisch sind (Siehe auch dies und das auf Stackoverflow über Gini Importance).quelle
Beim Scikit-Lernen ist die Bedeutung der Knoten die Verunreinigung der Knoten. Der Schlüssel ist, dass es die Wichtigkeit nur auf Knotenebene misst. Dann werden alle Knoten damit gewichtet, wie viele Stichproben diesen Knoten erreichen.
Wenn also nach dem ersten Split nur wenige Samples im linken Knoten landen, bedeutet dies möglicherweise nicht, dass J das wichtigste Merkmal ist, da die Verstärkung am linken Knoten möglicherweise nur sehr wenige Samples betrifft. Wenn Sie zusätzlich die Anzahl der Samples in jedem Knoten ausdrucken, erhalten Sie möglicherweise ein besseres Bild von den Vorgängen.
quelle
Nur weil ein Knoten im Baum niedriger ist, bedeutet dies nicht unbedingt, dass er weniger wichtig ist. Die Merkmalsbedeutung in Sci-Kitlearn wird dadurch berechnet, wie rein ein Knoten die Klassen trennt (Gini-Index). Sie werden sogar in Ihrem abgeschnittenen Baum feststellen, dass A im Vergleich zu J dreimal geteilt wird und die Entropiewerte (ein ähnliches Maß an Reinheit wie Gini) in A-Knoten etwas höher sind als in J.
Wenn Sie jedoch nur einen Knoten auswählen könnten, würden Sie J wählen, da dies zu den besten Vorhersagen führen würde. Wenn Sie jedoch die Option hätten, dass viele Knoten mehrere unterschiedliche Entscheidungen treffen, wäre A die beste Wahl.
quelle
Die Wichtigkeit der Variablen wird durch Abnahme der Modellgenauigkeit gemessen, wenn die Variable entfernt wird. Der neue Entscheidungsbaum, der mit dem neuen Modell ohne die Variable erstellt wurde, kann sehr unterschiedlich zum ursprünglichen Baum aussehen. Die Aufteilungsentscheidung in Ihrem Diagramm erfolgt unter Berücksichtigung aller Variablen im Modell.
Welche Variable an der Wurzel (und anderen Knoten) aufgeteilt werden soll, wird durch Verunreinigung gemessen. Eine gute Reinheit (z. B. alles im linken Zweig hat den gleichen Zielwert) ist keine Garantie für eine gute Genauigkeit. Ihre Daten sind möglicherweise verzerrt. Ihr rechter Zweig hat mehr Antworten als Ihr linker Zweig. Daher ist es nicht gut, nur den linken Zweig richtig zu klassifizieren, wir müssen auch den rechten Zweig berücksichtigen. Daher kann die Aufteilungsvariable eine wichtige Variable für die Gesamtmodellgenauigkeit sein oder auch nicht.
Die variable Wichtigkeit ist ein besseres Maß für die Variablenauswahl.
quelle