5.4 Bias-Varianz-Zerlegung
In 5.3 wurden Over- und Underfitting anschaulich gezeigt. Jetzt wird präzisiert, woraus der erwartete Testfehler besteht. Für die Regression mit quadratischem Fehler gibt es eine exakte Zerlegung in drei Teile: Bias², Varianz und irreduzibles Rauschen.
Zwei Arten, falsch zu liegen
Folie: 📄 07_roc_xval_bias_var_ws26.pdf, Folie 30
Das Zielscheibenbild: Der rote Punkt in der Mitte ist der wahre Wert, die blauen Punkte sind Schätzungen, jede aus einem anderen Datensatz gewonnen.
| links | rechts | |
|---|---|---|
| Bild | dichte Wolke, aber neben der Mitte | weit gestreut, aber um die Mitte herum |
| Fehlerart | systematisch daneben: Verzerrung (bias) | große Schwankungen: Varianz (variance) |
Das gilt für jeden Schätzer („alles mit Hut“), z. B.
- die Vorhersage verglichen mit der wahren Funktion ,
- einen Parameter verglichen mit dem wahren .
Wichtig ist der Gedanke dahinter: Ein Schätzer ist eine Zufallsgröße, weil er von den zufällig gezogenen Trainingsdaten abhängt. Mit anderen Trainingsdaten bekommt man ein anderes . Bias und Varianz beschreiben die Verteilung dieser Zufallsgröße.
Simulation mit 200 Durchläufen
Folie: 📄 07_roc_xval_bias_var_ws26.pdf, Folie 29
Aufbau der Simulation von der Folie:
- Die Daten stammen aus einer ansteigenden, oszillierenden wahren Kurve (in der Abbildung blau).
- 200 Durchläufe: Jedes Mal ein Trainingsset aus 10 Punkten ziehen und beide Modelle (Gerade und Polynom) anpassen.
- An 30 festen -Positionen die Vorhersagen beider Modelle auswerten (grüne Punkte, also 200 pro -Position) und den Mittelwert bilden (rote Punkte).
| lineares Modell | Polynom-Modell | |
|---|---|---|
| grüne Punkte (einzelne Fits) | schmales Band | streuen extrem (weit über den Bildrand) |
| rote Punkte (Mittel) | gerade Linie, verfehlt die Wellen | liegen fast auf der wahren Kurve |
| Diagnose | Underfitting, geringe Varianz, etwas Bias | Overfitting, hohe Varianz, kleiner Bias |
Hinweis: Für das Polynom-Modell zeigt die Legende den Median statt des Mittelwerts der Vorhersagen. Vermutlich, weil einzelne Fits so extrem ausschlagen, dass der Mittelwert davon dominiert würde. Für die Definition des Bias unten ist aber der Erwartungswert gemeint.
Das Konzept
Folie: 📄 07_roc_xval_bias_var_ws26.pdf, Folie 31
| unteranpassendes Modell (underfitting, hoher Bias) | überanpassendes Modell (overfitting, hohe Varianz) |
|---|---|
| nicht flexibel genug für die wahre Datenstruktur | zu flexibel für die Datenstruktur |
| systematischer Fehler, weil das Modell einen zu einfachen Zusammenhang annimmt (hoher Bias) | wenige Fehler auf dem Trainingsset, nicht-systematische Testfehler (niedriger Bias) |
| ändert sich wenig, wenn man es auf neuen Trainingsdaten anpasst (niedrige Varianz) | ändert sich stark, wenn man es auf neuen Trainingsdaten anpasst (hohe Varianz) |
Die Folie endet mit dem Hinweis, dass Ensemble-Methoden diese Idee später nutzen: Mittelt man viele Modelle mit hoher Varianz und kleinem Bias, sinkt die Varianz, ohne dass der Bias steigt (siehe Bagging in 5.5).
Die exakte Herleitung für Regression
Ergänzung: Die Folien deuten die Zerlegung nur über die Bilder an. Laut Zeitplan wurde sie in der Vorlesung exakt hergeleitet. Die folgende Herleitung ist die Standardherleitung (wie in ISLR/ESL).
Aufbau
Datenmodell: Es gibt eine wahre, feste (unbekannte) Funktion , und Beobachtungen entstehen durch additives Rauschen:
Training: Aus einem zufällig gezogenen Trainingsdatensatz wird ein Modell gelernt. Weil zufällig ist, ist an einer festen Stelle eine Zufallsvariable. Wir schreiben kurz und
für die mittlere Vorhersage über alle möglichen Trainingsdatensätze. (In der Simulation oben: der rote Punkt an der Stelle .)
Test: An der festen Stelle wird ein neuer Wert beobachtet. Das neue Rauschen ist unabhängig von den Trainingsdaten , also auch von .
Gesucht: Der erwartete quadratische Testfehler an , gemittelt über beides, die Trainingsdaten und das neue Rauschen:
Kurz . Diese Zahl ist fest, nicht zufällig.
Schritt 1: Rauschen abspalten
Trick: addieren und wieder abziehen.
Quadrieren mit und Erwartungswert bilden (Linearität):
Die drei Terme einzeln:
- .
- Kreuzterm: ist unabhängig von , also faktorisiert der Erwartungswert: .
- Der dritte Term bleibt stehen.
Zwischenergebnis:
Der zweite Summand ist der erwartete quadratische Abstand des Modells von der wahren Funktion (ohne Rauschen), also der MSE des Schätzers für .
Schritt 2: Schätzfehler in Bias und Varianz zerlegen
Gleicher Trick, diesmal mit der mittleren Vorhersage :
Quadrieren und Erwartungswert (nur noch über , denn kommt nicht mehr vor):
Beim ersten Term und im Kreuzterm durfte vor den Erwartungswert, weil und feste Zahlen sind ( ist ja schon ein Erwartungswert).
- Kreuzterm: .
- Erster Term: , mit (das Vorzeichen spielt im Quadrat keine Rolle).
- Dritter Term: , genau die Definition der Varianz.
Ergebnis
Den erwarteten Testfehler über den ganzen Eingaberaum erhält man, indem man zusätzlich über die Verteilung der Test- mittelt. Wegen der Linearität des Erwartungswerts gilt die Zerlegung dann für die gemittelten Terme genauso.
Die drei Terme in Worten
| Term | Bedeutung | Wovon abhängig | Wie verkleinern? |
|---|---|---|---|
| Bias² | Wie weit liegt das mittlere Modell von der Wahrheit weg? | Modellklasse zu starr (Gerade für eine Welle) | flexibleres Modell |
| Varianz | Wie stark zappelt das Modell, wenn man andere Trainingsdaten zieht? | Flexibilität im Verhältnis zur Datenmenge | einfacheres Modell, Regularisierung, mehr Daten, Mitteln (Ensembles) |
| Rauschen in den Daten selbst | Messfehler, nicht erfasste Einflüsse | durch kein Modell; höchstens durch bessere Messungen oder zusätzliche Merkmale |
Der Tradeoff: Wird ein Modell flexibler, sinkt typischerweise der Bias, die Varianz steigt. Der Testfehler als Summe ist deshalb U-förmig, genau wie die rote Kurve auf 📄 07_roc_xval_bias_var_ws26.pdf, Folie 22. Und die gestrichelte Linie dort ist : Der erwartete Testfehler kann nie darunter fallen, weil Bias² und Varianz nicht negativ sind.
- „Bias“ hier ist nicht der Bias-Parameter eines linearen Modells oder Neurons, sondern die systematische Abweichung eines Schätzers.
- Bias und Varianz sind Eigenschaften des Lernverfahrens, nicht eines einzelnen gefitteten Modells. Man braucht die (gedachte) Verteilung über viele Trainingsdatensätze, deshalb die Simulation mit 200 Durchläufen.
- Der Trainingsfehler kommt in der Zerlegung nicht vor. Ein Trainingsfehler von 0 heißt nur, dass das Modell die Trainingspunkte interpoliert, nicht dass Bias oder Varianz klein sind.
- Die exakte additive Zerlegung gilt für den quadratischen Fehler. Für 0-1-Verlust (Klassifikation) gibt es nur analoge, weniger saubere Varianten. Die Intuition aus den Klassifikationsbildern (Folien 19–21) ist dieselbe.
Zahlenbeispiel (Ergänzung)
An einer Stelle sei und . Drei gleich wahrscheinliche Trainingsdatensätze liefern die Vorhersagen .
| Größe | Rechnung | Wert |
|---|---|---|
| mittlere Vorhersage | ||
| Bias² | ||
| Varianz | ||
| irreduzibel | ||
| erwarteter Testfehler |
Kontrolle über Schritt 1: . ✔ Plus gibt .
Beispiel: k-Nearest-Neighbors (Ergänzung)
Der „Drehknopf“ von 📄 07_roc_xval_bias_var_ws26.pdf, Folie 11 lässt sich mit der Zerlegung genau verstehen. Die KNN-Regression sagt an den Mittelwert der -Werte der nächsten Trainingspunkte voraus. Hält man die -Werte fest und lässt nur das Rauschen zufällig sein, gilt
- Kleines (z. B. ): Die Nachbarn liegen ganz nah an , der Bias ist klein. Die Varianz ist aber , so groß wie das Rauschen selbst. Overfitting.
- Großes : Die Varianz wird klein, aber man mittelt über weit entfernte Punkte, deren -Werte sich von unterscheiden. Der Bias wächst. Underfitting.
Das beste liegt dazwischen, und finden muss man es per Kreuzvalidierung, denn und kennt man in der Praxis nicht.
Die Simulation zum Nachrechnen (Ergänzung)
Bias² und Varianz per Simulation schätzen (Python)
import numpy as np
rng = np.random.default_rng(0)
f = lambda x: x + 3 * np.sin(x) # wahre Funktion (ansteigend, wellig)
sigma, n_train, runs = 2.0, 10, 200
x_test = np.linspace(0, 20, 30) # 30 feste Testpositionen
for degree in [1, 3, 9]:
preds = np.empty((runs, len(x_test)))
for r in range(runs):
x = rng.uniform(0, 20, n_train)
y = f(x) + rng.normal(0, sigma, n_train)
coef = np.polyfit(x, y, degree)
preds[r] = np.polyval(coef, x_test)
bias2 = np.mean((preds.mean(axis=0) - f(x_test)) ** 2)
var = np.mean(preds.var(axis=0))
print(f"Grad {degree}: Bias² = {bias2:8.2f} Varianz = {var:10.2f} "
f"erw. Testfehler = {bias2 + var + sigma**2:10.2f}")
Typisches Ergebnis: Grad 1 hat deutlichen Bias und kleine Varianz, Grad 9 kleinen Bias und riesige Varianz (bei 10 Trainingspunkten interpoliert das Polynom). numpy warnt bei Grad 9 eventuell vor schlechter Kondition, das ist hier gewollt.