Kursinhalt
Klassifikation mit Python
Klassifikation mit Python
Verrückter Baum
Bevor wir endlich damit beginnen, einen Entscheidungsbaum mit Python zu implementieren, sollte noch eine Sache besprochen werden. Das ist Overfitting – die primäre Herausforderung, die mit Entscheidungsbäumen verbunden ist.
Hier ist ein Beispiel dafür, wie der Entscheidungsbaum den Datensatz anpasst.
Sie können feststellen, dass das Modell das Trainingsset perfekt anpasst, ohne Instanzen falsch zu klassifizieren.
Das einzige Problem ist, dass die Entscheidungsgrenzen zu komplex sind und die Test- (oder Kreuzvalidierungs-) Genauigkeit deutlich niedriger sein wird als die Genauigkeit des Trainingssatzes. Das Modell überanpasst.
Der Entscheidungsbaum wird so viele Teilungen vornehmen, wie nötig sind, um die Trainingsdaten perfekt anzupassen.
Glücklicherweise ist der Entscheidungsbaum ziemlich konfigurierbar. Schauen wir uns an, wie wir den Baum einschränken können, um Überanpassung zu reduzieren:
max_depth
Tiefe eines Knotens ist der Abstand (vertikal) vom Knoten zum Wurzelknoten.
Wir können die maximale Tiefe eines Entscheidungsbaums einschränken, wodurch der Baum kleiner wird und weniger wahrscheinlich überanpasst. Dazu verwandeln wir die Entscheidungsnoten auf einer maximalen Tiefe in Blattknoten.
Hier ist auch ein GIF, das zeigt, wie sich die Entscheidungsgrenze mit unterschiedlicher max_depth ändert.
min_samples_leaf
Eine weitere Möglichkeit, den Baum einzuschränken, besteht darin, die Mindestanzahl von Stichproben an den Blattknoten festzulegen. Dies macht das Modell einfacher und robuster gegenüber Ausreißern.
Hier ist ein GIF, das zeigt, wie min_samples_leaf
die Entscheidungsgrenze beeinflusst.
Beide Parameter sind in Scikit-Learn als Hyperparameter des Entscheidungsbaums enthalten. Standardmäßig ist der Baum unbeschränkt, daher ist max_depth
auf None
gesetzt, was keine Einschränkungen der Tiefe bedeutet, und min_samples_leaf
ist auf 1 gesetzt.
Danke für Ihr Feedback!