Kostenkomplexität in Entscheidungsbäumen reduzieren

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon.

Verstehen Sie das Problem der Überanpassung in Entscheidungsbäumen und lösen Sie es, indem Sie Komplexität und minimale Kosten mit Scikit-Learn in Python reduzieren

Decision Tree ist eines der intuitivsten und effektivsten Tools im Toolkit eines Data Scientists.. Es hat eine invertierte Baumstruktur, die früher nur in der Entscheidungsanalyse verwendet wurde, aber jetzt ist es auch ein brillanter Algorithmus für maschinelles Lernen, besonders wenn wir ein Sortierproblem haben.

Diese Entscheidungsbäume sind für ihre Fähigkeit bekannt, Muster in den Daten zu erfassen.. Aber, Übermaß an allem ist schädlich, Wahrheit? Entscheidungsbäume sind berüchtigt, da sie sich zu sehr an die Daten klammern können, mit denen sie trainiert werden.

Deswegen, unser Baum liefert schlechte Implementierungsergebnisse, weil er mit einem neuen Satz von Werten nicht umgehen kann.

Featured-Image-8347301

Aber keine Sorge! Wie ein gelernter Mechaniker hat er Schraubenschlüssel aller Größen in seinem Werkzeugkasten vorrätig, ein erfahrener Datenwissenschaftler hat auch seine Techniken, um mit jeder Art von Problem umzugehen. Und das werden wir in diesem Artikel untersuchen..

Die Rolle des Beschneidens in Entscheidungsbäumen

Das Beschneiden ist eine der Techniken, die verwendet werden, um unser Überanpassungsproblem zu überwinden. Beschneidung, im wahrsten Sinne des Wortes, ist eine Praxis, bei der bestimmte Teile eines Baumes selektiv entfernt werden (die Pflanze), wie Zweige, Triebe oder Wurzeln, zur Verbesserung der Baumstruktur und zur Förderung eines gesunden Wachstums. Genau das macht das Beschneiden auch mit unseren Entscheidungsbäumen. Es macht es vielseitig, so dass es sich anpassen kann, wenn wir ihm neue Informationen geben, damit das Problem der Überanpassung gelöst.

Reduzieren Sie die Größe eines Entscheidungsbaums, lo que puede aumentar ligeramente el error de Ausbildung, aber den Testfehler drastisch verringern, was macht es anpassungsfähiger.

Beschneidung mit minimalen Kosten und Komplexität ist eine der Arten des Beschneidens von Entscheidungsbäumen.

Dieser Algorithmus ist parametrisiert durch α (≥0) bekannt als Komplexitätsparameter.

Der Komplexitätsparameter wird verwendet, um das Kosten-Komplexitäts-Maß zu definieren, Rein(T) eines gegebenen Baumes T: Rein(T) = R (T) + ein | T |

wo | T | ist die Anzahl der Endknoten in T und R (T) wird traditionell als die Gesamtfehlklassifizierungsrate der Endknoten definiert.

In seiner Version 0.22, Scikit-learn hat diesen Parameter namens ccp_alpha eingeführt (Jawohl! Es ist kurz für Beschneidung der Kostenkomplexität – Alfa) zu Entscheidungsbäumen, mit denen das gleiche getan werden kann.

Aufbau des Entscheidungsbaums in Python

Wir werden den Iris-Datensatz verwenden, um den Entscheidungsbaum anzupassen. Sie können den Datensatz herunterladen hier.

Zuerst, Lassen Sie uns die erforderlichen Basisbibliotheken und den Datensatz importieren:

256341_tdqxh0n70ie6d19gh0hziw-1198314

Der Datensatz sieht so aus:

Bild-1-4122232

Unser Ziel ist es, die Art einer Blüte anhand der Länge und Breite ihrer Kelchblätter vorherzusagen.

Wir werden den Datensatz in zwei Teile aufteilen: trainieren und testen. Wir tun dies, damit wir sehen können, wie unser Modell auch bei unsichtbaren Daten funktioniert. Wir werden die verwenden train_test_split Die Funktion von sklearn.model_selection den Datensatz teilen.

Bild-2-8128487

Jetzt, lasst uns einen Entscheidungsbaum an den Teil des Zuges anpassen und sowohl im Test als auch im Training vorhersagen. wir werden verwenden DecisionTreeClassifier von sklearn.baum für diesen Zweck.

Bild-3-3076137

Standardmäßig, Die Entscheidungsbaumfunktion führt keine Beschneidung durch und lässt den Baum so weit wachsen, wie er kann. Wir erhalten eine Genauigkeit von 0,95 Ja 0,63 im Zug und auf dem Prüfling, beziehungsweise, wie im Folgenden gezeigt. Wir können sagen, dass unser Modell überangepasst ist, nämlich, den Teil des Zuges auswendig lernen, aber es kann im Testteil nicht so gut funktionieren.

Bild-4-1641353

Entscheidungsbaum in sklearn hat es eine Funktion namens cost_complexity_pruning_path, was die effektiven Alphas der Teilbäume beim Beschneiden und auch die entsprechenden Verunreinigungen ergibt. Mit anderen Worten, wir können diese Alpha-Werte verwenden, um unseren Entscheidungsbaum zu beschneiden:

Bild-5-3967849

Wir werden diese Alpha-Werte setzen und an weitergeben ccp_alpha Parameter unserer DecisionTreeClassifier. Schleife drüber alfas Hauptquartier, Wir finden die Präzision in den Trainings- und Testteilen unseres Datensatzes.

Bild-6-7729865

Bild-7-5156829

In der Grafik oben, wir sehen, dass zwischen alpha = 0.01 Ja 0.02, wir erreichen höchste Prüfpräzision. Obwohl die Genauigkeit unseres Zuges auf gesunken ist 0,8, unser Modell ist jetzt generalisierter und funktioniert besser mit unsichtbaren Daten.

Bild-8-3359046

Abschließende Anmerkungen

Wenn Sie die Mathematik hinter der Kosten- und Komplexitätsbeschneidung verstehen möchten, klicke auf hier. Sehen Sie sich die scikit-learn-Dokumentation für Entscheidungsbäume an, indem Sie auf klicken hier.

Sie finden das Notizbuch in mi GitHub und sieh dir genauer an, was ich gemacht habe. Was ist mehr, verbinde dich mit mir auf LinkedInund reden wir über die Daten.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.

Datenlautsprecher