Interpretieren des Entscheidungsbaums im Kontext von Feature-Wichtigkeiten

9

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)

  1. FeatureB (0,166800)

  2. FeatureC (0,092472)

  3. FeatureD (0.075009)

  4. FeatureE (0.068310)

  5. FeatureF (0.067118)

  6. FeatureG (0,066510)

  7. FeatureH (0,043502)

  8. FeatureI (0,040281)

  9. FeatureJ (0.039006)

  10. FeatureK (0.032618)

  11. FeatureL (0,008136)

  12. FeatureM (0,000000)

Wenn ich jedoch auf die Spitze des Baumes schaue, sieht es so aus:Baumschnipsel

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"?

Tim Lindsey
quelle
1
Wie viele Samples werden links und rechts vom ersten Knoten zugewiesen?
oW_

Antworten:

4

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 SkLearnSie bei wählen, ob die Knoten im Entscheidungsbaum gemäß dem Entropie-Informationsgewinn-Kriterium (siehe criterion& 'entropy'at SkLearn) 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 (siehe feature_importances_bei SkLearnund hier ).

Wenn ich recht habe, SkLearngilt 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).

Ausgestoßene
quelle
@OW_ hat die ursprüngliche Frage bereits ziemlich richtig beantwortet, aber ich fand es gut, sie für den Leser prägnanter und klarer zu schreiben.
Ausgestoßene
3

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.

oW_
quelle
2

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.

J_Heads
quelle
Unter der Annahme, dass es nur zwei mögliche Klassifikationen gibt (nennen wir sie 0 und 1), ist das Merkmal an der Basis des Baums dasjenige, das die Stichproben am besten in zwei Gruppen aufteilt (dh die beste Aufgabe der Aufteilung die Einsen auf einer Seite des Baumes und die Nullen auf der anderen Seite). Ist das richtig? Ich bin mir immer noch nicht ganz sicher, welche Bedeutung das Feature hat, wenn es in diesem Zusammenhang nicht das Beste ist, die Nullen und Einsen zu trennen
Tim Lindsey,
-2

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.

Hallo Welt
quelle
2
Ich glaube nicht, dass es so in Scikit-Learn implementiert wird. Dort wird die Merkmalsbedeutung als "Gini-Wichtigkeit" gemessen, dh die Gesamtabnahme der Knotenverunreinigung, gewichtet mit dem Anteil der Proben, die diesen Knoten erreichen.
oW_
"Die Wichtigkeit eines Merkmals wird als (normalisierte) Gesamtverringerung des durch dieses Merkmal hervorgerufenen Kriteriums berechnet. Es wird auch als Gini-Wichtigkeit bezeichnet." - scikit-learn.org/stable/modules/generated/…
Afflatus