Zusammenfassung
In diesem Beitrag vergleichen wir die Ausführung eines Entscheidungsbaums in Python mit der in JMP und zeigen, wie man in JMP einen angepassten Entscheidungsbaum erstellt, indem man mathematische Kriterien anwendet, um zu bestimmen, nach welchem Parameter jeder Zweig aufgeteilt werden soll. Diese Anpassungsstufe ist in Python nicht verfügbar, weshalb JMP unverzichtbar für die Erstellung robuster Modelle ist, bei denen die Aufteilungsparameter nicht dem Zufall überlassen werden. Darüber hinaus können Sie mit dieser Anpassung Ihr Fachwissen nutzen, um die Auswahl des Aufteilungsparameters in jedem Zweig zu begründen, insbesondere wenn mehrere Kandidaten eine ähnliche Fähigkeit zum effektiven Aufteilen der Daten zeigen.
In diesem Beispiel wird der Wine-Datensatz verwendet, ein Klassifizierungsbeispiel, das allgemein in der Scikit-learn-Bibliothek verfügbar ist. Er enthält die Ergebnisse einer chemischen Analyse von Weinen, die in derselben Region in Italien angebaut werden, aber aus drei verschiedenen Sorten (Rebsorten) stammen: mit den Bezeichnungen 0, 1 und 2. Im Datensatz wurden für jede Probe 13 chemische Charakterisierungstechniken ausgeführt, darunter die Menge an Flavonoiden (eine Art Phenol), die Farbintensität des Weins, der Aschegehalt, der Farbton, der Alkoholgehalt usw.
Das Ziel? Ein Entscheidungsbaum-Klassifizierungsmodell zu erstellen, um die Herkunft des Weins mit möglichst wenigen und kostengünstigen Charakterisierungstests zu identifizieren.
Verwenden von Python
Sehen wir uns zunächst an, was wir erhalten, wenn wir ein Entscheidungsbaummodell in Python erstellen. (Das Skript ist diesem Beitrag beigefügt.) Das resultierende Modell kann mit der Matplot-Bibliothek grafisch dargestellt werden, wie unten gezeigt. Das erste Modell klassifiziert nach Farbintensität, Prolin, Aschegehalt, Flavonoiden und Alkoholgehalt.

Wenn der Zufallsstartwert nicht auf einen bestimmten Wert eingestellt ist, sieht der Baum bei jedem neuen Durchlauf anders aus, wie unten zu sehen. Dies ist zwar zu erwarten, aber nicht praktikabel, da Sie möglicherweise die besten Charakterisierungstests auswählen möchten, die schnell und/oder kostengünstig durchzuführen sind. In diesem Beispiel gibt es keine Möglichkeit, das Merkmal zu steuern, bei dem die Aufteilung erfolgt oder bei welchem Wert.
|
Zufallszustand = 2
|
Zufallszustand = 14
|
Zufallszustand = 24
|
|
|
|
|
Erforderliche Tests: Farbintensität, Prolin, Alkoholgehalt, Flavonoide
|
Erforderliche Tests: Farbintensität, Prolin, Asche, Aschealkalität, Apfelsäure, Alkoholgehalt, Flavonoide
|
Erforderliche Tests: Farbintensität, Prolin, OD280/OD315, Flavonoide, Alkalität der Asche
|
Verwenden von JMP
Mal sehen, ob JMP bei der Auswahl der Charakterisierungstests bessere Arbeit leisten kann.
Wenn Sie die Decision Tree-Plattform in JMP ausführen, gehen Sie zu Analysieren > Prädiktive Modellierung > Partition. Setzen Sie den Validierungsanteil auf 0,3 und aktivieren Sie Informative Missing und Ordinal Restricts Order.

Der Bericht sieht ungefähr so aus. Klicken Sie auf „Los“.

Wenn Sie auf „Los“ klicken, wird dieser Entscheidungsbaum angezeigt:

Wie in Python wird durch die erneute Durchführung der Analyse eine andere Struktur für den Entscheidungsbaum erstellt.
Was kann also getan werden, um ein weniger zufälliges Modell zu erstellen, das auf einigen Präferenzen für die verwendeten Charakterisierungsmethoden basiert? Wir werden die Aufteilungen außer Kraft setzen und die Parameter selbst auswählen.
Zuerst klicken wir auf die Schaltfläche „Beschneiden“. Durch Klicken auf „Beschneiden“ können Sie einen Schritt zurückgehen und jeweils einen Zweig entfernen. Klicken Sie als Nächstes auf die Kandidatenliste und ordnen Sie die Features nach ihrem G^2- oder Logworth-Aufteilungskriterium, sodass Sie analysieren können, welche Parameter ganz oben auf der Liste stehen.
Unten sehen Sie die verschiedenen Kandidaten für die Aufteilung, wobei Flavonoide ganz oben auf der Liste stehen, gefolgt von OD280/OD315, Gesamtphenolen und Prolin.

Der G^2-Wert sagt uns, dass das Modell Flavonoid als Teilungskriterium wählt. Wenn Sie auf Teilen klicken, erfolgt die Teilung der Zweige mit dem Flavonoidwert 1,41.
Erweitern Sie als Nächstes die Kandidatenliste unter Flavonoide < 1,41. Die Farbintensität steht jetzt ganz oben auf der Liste. Es ist jedoch möglicherweise einfacher, den Farbton über die Farbintensität zu messen. Klicken Sie in diesem Fall auf das rote Dreieck und dann auf „Spezifisch aufteilen“. Anschließend können Sie den Parameter für die Aufteilung auswählen – in diesem Fall den Farbton – und auf „OK“ klicken.

Der neue Baum unten zeigt, dass bei einem Flavonoidgehalt unter 1,41 und einem Farbton unter 0,906 die Wahrscheinlichkeit 0,98 beträgt, dass der Wein aus der Sorte Nr. 2 hergestellt wurde. Wenn der Farbton hingegen über 0,906 liegt, stammt er höchstwahrscheinlich von der Rebsorte 1. Wenn der Flavonoidgehalt über 1,41 liegt, besteht eine fast 50:50-Chance, dass die Sorte entweder 0 oder 1 ist. Lassen Sie uns also die Aufteilung dort fortsetzen.

Unter Flavonoide >=1,41 sehen Sie sich die Kandidaten und ihre G^2-Werte an. Alkohol und Prolin haben einen ähnlichen G^2-Wert. Da es einfacher ist, auf Alkohol zu testen, nehmen Sie die Aufteilung bei Alkohol vor. Es zeigt sich, dass es eine 91-prozentige Wahrscheinlichkeit gibt, dass der Wein aus der Traube Typ 0 stammt, wenn der Alkoholgehalt über 13,5 liegt.

Unten sehen Sie das endgültige erstellte Entscheidungsbaummodell. Wir benötigen jetzt weniger Charakterisierungstests, um die Traubensorte zu identifizieren, und die ausgewählten Tests sind einfacher durchzuführen, ohne dass wir bei der Auswahl dieser Parameter einen Black-Box-Ansatz verfolgen müssen. Die Entscheidungsregeln können dann einfach gespeichert und mit anderen geteilt werden.
