Bias-Varianz-Simulator: Random Forest (Regression)
Wahre Funktion: f(x₁) = sin(2πx₁) · Beobachtung: y = f(x₁) + ε mit ε ~ N(0, σ²).
Wir spielen „Gott“: Wir kennen f und ziehen beliebig viele frische Trainingsdatensätze aus derselben Verteilung.
Neu gegenüber der Polynom-Version: Der Schätzer ist jetzt selbst zufällig – Bootstrap und Feature-Auswahl bringen
eine zweite Zufallsebene ins Spiel.
Datenerzeugung Gott-Regler
Modell Random-Forest-Regler
Achtung: Der Wald ist gar kein Wald.
Ohne Bootstrap und mit mtry = allen Features ist der Baumbau vollständig deterministisch –
alle B Bäume sind identisch. Der Mittelwert von B gleichen Bäumen ist dieser eine Baum. Schalten Sie eine
Zufallsquelle ein und beobachten Sie, was mit der Varianz passiert.
rechnet …
Beobachtungsauftrag
Jedes Fenster zeigt eine eigene Welt: einen frisch gezogenen Trainingsdatensatz und den darauf trainierten
Random Forest. Die graue gestrichelte Linie ist die wahre Funktion. Gezeigt werden acht Welten pro Seite –
mit den Pfeilen blättern Sie durch alle M Welten, aus denen weiter hinten Bias und Varianz berechnet werden.
Fragen: Wie ähnlich sind sich die Wälder bei 2 Blättern? Bei 8? Bei ∞? Und: Was passiert an den Rändern von [0,1]?
–
Treppen statt Kurven
Ein Baum sagt stückweise konstant vorher – die Vorhersage ist eine Treppe, deren Stufenzahl der Blätterregler steuert.
Am linken und rechten Rand läuft sie flach aus: Bäume extrapolieren nicht. Das ist ein systematischer Fehler,
also Bias – aber ein völlig anderer als beim Polynom, das dort explodierte.
Bewusst ohne Kennzahlen
In einem einzelnen Fenster gibt es keinen Bias und keine Varianz – ein Einzelmodell hat nur einen Fehler.
Bias und Varianz sind Eigenschaften der ganzen Modellschar.
Ein Baum, aufgeklappt
Hier sehen Sie einen einzelnen Baum des Waldes so, wie er wirklich gebaut ist: als Folge von Ja/Nein-Fragen.
Der Blätterregler oben schneidet den Baum ab – bei 6 Blättern sehen Sie die 5 wichtigsten Splits, bei „∞“ den
voll ausgewachsenen Baum. Jeder Split im Diagramm entspricht genau einer Stufenkante in der Vorhersage rechts.
Baumdiagramm
Trainingsdatensatz dieser Welt
im Bagging-Datensatz · selten → oft gezogen
Out-of-Bag: dieser Baum hat den Punkt nie gesehen
x₁ – das echte Signal Rausch-Feature beim Split nicht angeboten wäre die beste Wahl gewesen, fehlte aber im Angebot
So liest man max_features (mtry)
Die Tabelle links ist nach x₁ sortiert – Sie können jede Split-Schwelle darin direkt wiederfinden.
Die kleine Kästchenreihe über jeder Frage ist der Feature-Vorrat. Gefüllte Kästchen = das Angebot an diesem
Knoten, ihre Anzahl ist genau mtry. Das dick umrandete Kästchen ist die getroffene Wahl. Der Baum darf immer
nur aus dem Angebot wählen – und das Angebot wird an jedem Knoten neu ausgewürfelt.
Was dieser eine Baum vorhersagt
wahre Funktion f(x₁) Vorhersage dieses Baums Split auf x₁ (wird zur Stufenkante)Punkte wie in der Tabelle: blau = gezogen, rot = Out-of-Bag
Bilanz dieses Baums
Splits im gezeigten Baum–
Blätter–
Splits auf x₁ (Signal)–
Splits auf Rausch-Features–
beste Variable fehlte im Angebot–
Experiment
Stellen Sie oben k = 3 irrelevante Features ein und mtry auf 1. Dann wird an jedem Knoten nur eine
Variable angeboten – in 3 von 4 Fällen eine nutzlose. Der Baum wird sichtbar schlechter. Genau dafür gibt es
den Wald: Was ein einzelner Baum an Qualität verliert, gewinnt die Schar an Unabhängigkeit zurück.
Mit mtry = 4 sieht jeder Knoten alles – die Bäume werden besser und sich gegenseitig ähnlicher.
Eine Welt, viele Bäume
Ansicht 1 zeigte viele Welten mit je einem Wald. Hier steigen wir in eine Welt hinab und sehen die
B Einzelbäume, aus denen der Wald gemittelt wird. Der Bootstrap zieht dafür n Punkte mit Zurücklegen aus
demselben einen Datensatz – er ist der Viele-Welten-Ansatz für Sterbliche.
Brücke zur Praxis
Der OOB-Fehler nutzt für jeden Punkt nur die Bäume, die ihn nie gesehen haben. Er kostet nichts extra und
ersetzt im Wald die Cross-Validation. Vergleichen Sie die beiden Zahlen: So nah kommt man dem Blick Gottes,
ohne Gott zu sein.
Bootstrap-Welten sind keine echten Welten
Gott zieht aus der wahren Verteilung P. Der Bootstrap zieht aus der einen vorliegenden Stichprobe.
Alle Bootstrap-Bäume hängen an denselben n Punkten und sind deshalb untereinander korreliert – deshalb kann
Bagging die Varianz senken, aber nie auf null.
Alle Wälder übereinandergelegt
Jetzt werden alle M Wälder halbtransparent überlagert. Zwei geometrische Größen werden sichtbar:
der Abstand der Mittelwertkurve zur wahren Funktion (→ Bias)
und die Breite des Kurvenschlauchs (→ Varianz).
Merksatz
Bias² + Varianz + σ² ≈ gemessener Testfehler. Neu: Die Varianz zerfällt weiter. Der Anteil
„innerhalb einer Welt“ ist der Preis des Zufalls im Algorithmus – und er schrumpft mit 1/B.
Ziehen Sie den B-Regler und beobachten Sie genau diese Zeile.
Ein Fenster pro Komplexitätsstufe
Jedes Fenster zeigt die komplette Waldschar bei einer festen Blätterzahl – deshalb darf hier (und erst hier)
in jedem Fenster die volle Analytik stehen. Die Leiter der Blätterzahlen passt sich n an: Mehr Blätter als
unterscheidbare Punkte kann ein Baum nicht bilden, deshalb endet sie bei „∞“ = voll ausgewachsen.
Fehlerzerlegung über die Modellkomplexität
Bias² (Wald) Varianz (Wald) Summe (Wald) Summe bei B = 1 (Einzelbaum) σ² (irreduzibler Sockel)
Die Pointe
Der Einzelbaum (gestrichelt) zeigt die klassische U-Form: rechts läuft ihm die Varianz davon. Der Wald
(durchgezogen) hat einen fast flachen rechten Ast. Bagging bügelt den Overfitting-Arm der U-Kurve platt –
deshalb ist „zu viele Blätter“ beim Random Forest ein weit geringeres Problem als „zu hoher Grad“ beim Polynom.
Der Bias-Ast links bleibt dagegen unangetastet: Zu wenig Blätter kann kein Wald reparieren.