Pruning: Warum ist der größte Baum nicht der beste?
Cost-Complexity-Pruning (Post-Pruning) – der α-Slider läuft den Pruning-Pfad ab, wie ccp_alpha in sklearn.
Pre-Pruning max_depth:5Post-Pruning α-Pfad:α = 0
Datenraum — 120 Train / 52 Test (≈ 30 %)
Jedes Rechteck ist ein Blatt des Baums. Beim Prunen verschmelzen Regionen – Splitter um
Rauschpunkte verschwinden zuerst. Klick auf einen Punkt zeigt seinen Entscheidungspfad
im Baum (✓/✗ am Endknoten).
Der Baum — geprunte Teile ausgegrautPre-Pruning: max_depth 5Post-Pruning: α-Slider
Kostenfunktion des aktuellen Baums (auf Trainingsdaten):
Train- vs. Test-Fehler über α — Testfehler auf 52 Holdout-Punkten (≈ 30 % der Daten)
Pruning verstehen
Das Problem: Overfitting
Ein voll gewachsener Entscheidungsbaum passt sich auch dem Rauschen in den Trainingsdaten an:
Er baut winzige Regionen um einzelne Ausreißer. Auf den Trainingsdaten sieht das perfekt aus –
auf neuen Daten (Testdaten) rächt es sich. Genau das zeigt die Fehlerkurve links bei α = 0.
Pre-Pruning vs. Post-Pruning
Pre-Pruning: Das Wachstum wird früh gestoppt (z. B. max_depth,
min_samples_leaf, Mindest-Informationsgewinn). Schnell, aber kurzsichtig:
Ein Split, der allein nichts bringt, kann spätere wertvolle Splits ermöglichen (Horizon-Effekt, Klassiker: XOR).
Post-Pruning: Erst voll wachsen lassen, dann gezielt zurückschneiden.
Der Baum darf „über den Horizont schauen" – zurückgeschnitten wird nur, was sich nicht bewährt.
In dieser App: Der max_depth-Slider ist Pre-Pruning (begrenzt das Wachstum),
der α-Slider ist Post-Pruning auf dem so gewachsenen Baum. Beide sind kombinierbar –
genau wie max_depth und ccp_alpha in sklearn.
Beobachtung: Bei kleinem max_depth wird der α-Pfad kurz – es gibt kaum noch etwas zu prunen.
Cost-Complexity-Pruning (CCP)
Wir bestrafen Komplexität mit einem „Strafpreis pro Blatt":
Kosten = Trainingsfehler + α · Blattanzahl.
Für jeden inneren Knoten t lässt sich ausrechnen, ab welchem α es sich lohnt, seinen ganzen Teilbaum
zu einem Blatt zu kollabieren:
g(t) = (R(t) − R(T_t)) / (|T̃_t| − 1)
R(t) = Fehler, wenn t ein Blatt wäre; R(T_t) = Fehler des Teilbaums; |T̃_t| = seine Blattanzahl.
Der Knoten mit dem kleinsten g ist das „schwächste Glied" (weakest link) und fällt zuerst.
So entsteht eine Folge kritischer α-Werte – die Rastpunkte des Sliders.
Zwischen zwei Rastpunkten passiert nichts, deshalb rastet der Slider ein.
α steigt: Teilbäume kollabieren (im Baumdiagramm ausgegraut, Ersatzblatt mit gestricheltem Ring),
Regionen im Datenraum verschmelzen.
Sweet Spot (grüner Marker): minimaler Testfehler – das beste Modell für neue Daten.
α groß: nur noch die Wurzel – der Baum sagt immer dieselbe Klasse → Underfitting.
Ehrlichkeitshinweis
Wir bewerten mit einem Holdout-Testset von 52 Punkten (≈ 30 % der Daten – realistischer Split).
Achtung: Bei so kleinen Testsets zackt die Kurve; ein einzelner Punkt entspricht fast 2 Prozentpunkten.
In der Praxis wählt man das optimale α deshalb per Kreuzvalidierung
(sklearn: cost_complexity_pruning_path + CV über ccp_alpha) –
das Prinzip der Kurve ist identisch.