Zum Hauptinhalt springen

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.

linksrechts
Bilddichte Wolke, aber neben der Mitteweit gestreut, aber um die Mitte herum
Fehlerartsystematisch daneben: Verzerrung (bias)große Schwankungen: Varianz (variance)

Das gilt für jeden Schätzer („alles mit Hut“), z. B.

  • die Vorhersage f^(X)\hat f(X) verglichen mit der wahren Funktion f(X)f(X),
  • einen Parameter β^\hat\beta verglichen mit dem wahren β\beta.

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 f^\hat f. 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 xx-Positionen die Vorhersagen beider Modelle auswerten (grüne Punkte, also 200 pro xx-Position) und den Mittelwert bilden (rote Punkte).
lineares ModellPolynom-Modell
grüne Punkte (einzelne Fits)schmales Bandstreuen extrem (weit über den Bildrand)
rote Punkte (Mittel)gerade Linie, verfehlt die Wellenliegen fast auf der wahren Kurve
DiagnoseUnderfitting, geringe Varianz, etwas BiasOverfitting, 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 Datenstrukturzu 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 ff, und Beobachtungen entstehen durch additives Rauschen:

Y=f(x)+ε,E[ε]=0,Var⁡(ε)=σ2.Y = f(x) + \varepsilon,\qquad \mathbb E[\varepsilon]=0,\qquad \operatorname{Var}(\varepsilon) = \sigma^2.

Training: Aus einem zufällig gezogenen Trainingsdatensatz DD wird ein Modell f^D\hat f_D gelernt. Weil DD zufällig ist, ist f^D(x0)\hat f_D(x_0) an einer festen Stelle x0x_0 eine Zufallsvariable. Wir schreiben kurz f^=f^D(x0)\hat f = \hat f_D(x_0) und

fˉ:=ED[f^D(x0)]\bar f := \mathbb E_D\bigl[\hat f_D(x_0)\bigr]

für die mittlere Vorhersage über alle möglichen Trainingsdatensätze. (In der Simulation oben: der rote Punkt an der Stelle x0x_0.)

Test: An der festen Stelle x0x_0 wird ein neuer Wert Y0=f(x0)+ε0Y_0 = f(x_0) + \varepsilon_0 beobachtet. Das neue Rauschen ε0\varepsilon_0 ist unabhängig von den Trainingsdaten DD, also auch von f^\hat f.

Gesucht: Der erwartete quadratische Testfehler an x0x_0, gemittelt über beides, die Trainingsdaten und das neue Rauschen:

E[(Y0−f^)2].\mathbb E\bigl[(Y_0 - \hat f)^2\bigr].

Kurz f0:=f(x0)f_0 := f(x_0). Diese Zahl ist fest, nicht zufällig.

Schritt 1: Rauschen abspalten​

Trick: f0f_0 addieren und wieder abziehen.

Y0−f^=(Y0−f0)⏟= ε0+(f0−f^).Y_0 - \hat f = \underbrace{(Y_0 - f_0)}_{=\ \varepsilon_0} + (f_0 - \hat f).

Quadrieren mit (a+b)2=a2+2ab+b2(a+b)^2 = a^2 + 2ab + b^2 und Erwartungswert bilden (Linearität):

E[(Y0−f^)2]=E[ε02]+2 E[ε0 (f0−f^)]+E[(f0−f^)2].\mathbb E\bigl[(Y_0-\hat f)^2\bigr] = \mathbb E[\varepsilon_0^2] + 2\,\mathbb E\bigl[\varepsilon_0\,(f_0-\hat f)\bigr] + \mathbb E\bigl[(f_0-\hat f)^2\bigr].

Die drei Terme einzeln:

  • E[ε02]=Var⁡(ε0)+(E[ε0])2=σ2+0=σ2\mathbb E[\varepsilon_0^2] = \operatorname{Var}(\varepsilon_0) + (\mathbb E[\varepsilon_0])^2 = \sigma^2 + 0 = \sigma^2.
  • Kreuzterm: ε0\varepsilon_0 ist unabhängig von f^\hat f, also faktorisiert der Erwartungswert: E[ε0(f0−f^)]=E[ε0]⋅E[f0−f^]=0⋅E[f0−f^]=0\mathbb E[\varepsilon_0(f_0-\hat f)] = \mathbb E[\varepsilon_0]\cdot\mathbb E[f_0-\hat f] = 0\cdot\mathbb E[f_0-\hat f] = 0.
  • Der dritte Term bleibt stehen.

Zwischenergebnis:

E[(Y0−f^)2]=σ2+E[(f0−f^)2].\mathbb E\bigl[(Y_0-\hat f)^2\bigr] = \sigma^2 + \mathbb E\bigl[(f_0-\hat f)^2\bigr].

Der zweite Summand ist der erwartete quadratische Abstand des Modells von der wahren Funktion (ohne Rauschen), also der MSE des Schätzers f^\hat f für f0f_0.

Schritt 2: Schätzfehler in Bias und Varianz zerlegen​

Gleicher Trick, diesmal mit der mittleren Vorhersage fˉ\bar f:

f0−f^=(f0−fˉ)+(fˉ−f^).f_0 - \hat f = (f_0 - \bar f) + (\bar f - \hat f).

Quadrieren und Erwartungswert (nur noch über DD, denn ε0\varepsilon_0 kommt nicht mehr vor):

E[(f0−f^)2]=(f0−fˉ)2+2 (f0−fˉ) E[fˉ−f^]+E[(fˉ−f^)2].\mathbb E\bigl[(f_0-\hat f)^2\bigr] = (f_0-\bar f)^2 + 2\,(f_0-\bar f)\,\mathbb E\bigl[\bar f-\hat f\bigr] + \mathbb E\bigl[(\bar f-\hat f)^2\bigr].

Beim ersten Term und im Kreuzterm durfte (f0−fˉ)(f_0-\bar f) vor den Erwartungswert, weil f0f_0 und fˉ\bar f feste Zahlen sind (fˉ\bar f ist ja schon ein Erwartungswert).

  • Kreuzterm: E[fˉ−f^]=fˉ−E[f^]=fˉ−fˉ=0\mathbb E[\bar f - \hat f] = \bar f - \mathbb E[\hat f] = \bar f - \bar f = 0.
  • Erster Term: (f0−fˉ)2=Bias⁡(f^)2(f_0-\bar f)^2 = \operatorname{Bias}(\hat f)^2, mit Bias⁡(f^):=E[f^]−f0\operatorname{Bias}(\hat f) := \mathbb E[\hat f] - f_0 (das Vorzeichen spielt im Quadrat keine Rolle).
  • Dritter Term: E[(f^−E[f^])2]=Var⁡(f^)\mathbb E[(\hat f-\mathbb E[\hat f])^2] = \operatorname{Var}(\hat f), genau die Definition der Varianz.

Ergebnis​

Bias-Varianz-Zerlegung (an einer festen Stelle x0x_0)
E[(Y0−f^D(x0))2]⏟erwarteter Testfehler=(ED[f^D(x0)]−f(x0))2⏟Bias2+Var⁡D(f^D(x0))⏟Varianz+σ2⏟irreduzibel\underbrace{\mathbb E\bigl[(Y_0 - \hat f_D(x_0))^2\bigr]}_{\text{erwarteter Testfehler}} = \underbrace{\bigl(\mathbb E_D[\hat f_D(x_0)] - f(x_0)\bigr)^2}_{\text{Bias}^2} + \underbrace{\operatorname{Var}_D\bigl(\hat f_D(x_0)\bigr)}_{\text{Varianz}} + \underbrace{\sigma^2}_{\text{irreduzibel}}

Den erwarteten Testfehler über den ganzen Eingaberaum erhält man, indem man zusätzlich über die Verteilung der Test-x0x_0 mittelt. Wegen der Linearität des Erwartungswerts gilt die Zerlegung dann für die gemittelten Terme genauso.

Die drei Terme in Worten​

TermBedeutungWovon abhängigWie verkleinern?
Bias²Wie weit liegt das mittlere Modell von der Wahrheit weg?Modellklasse zu starr (Gerade für eine Welle)flexibleres Modell
VarianzWie stark zappelt das Modell, wenn man andere Trainingsdaten zieht?Flexibilität im Verhältnis zur Datenmengeeinfacheres Modell, Regularisierung, mehr Daten, Mitteln (Ensembles)
σ2\sigma^2Rauschen in den Daten selbstMessfehler, nicht erfasste Einflüssedurch 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 σ2\sigma^2: Der erwartete Testfehler kann nie darunter fallen, weil Bias² und Varianz nicht negativ sind.

Häufige Missverständnisse
  • „Bias“ hier ist nicht der Bias-Parameter w0w_0 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 x0x_0 sei f(x0)=5f(x_0)=5 und σ2=1\sigma^2=1. Drei gleich wahrscheinliche Trainingsdatensätze liefern die Vorhersagen f^=2, 4, 6\hat f = 2,\ 4,\ 6.

GrößeRechnungWert
mittlere Vorhersage fˉ\bar f(2+4+6)/3(2+4+6)/344
Bias²(4−5)2(4-5)^211
Varianz((2−4)2+(4−4)2+(6−4)2)/3=8/3\bigl((2-4)^2+(4-4)^2+(6-4)^2\bigr)/3 = 8/3≈2,67\approx 2{,}67
irreduzibelσ2\sigma^211
erwarteter Testfehler1+8/3+11 + 8/3 + 1≈4,67\approx 4{,}67

Kontrolle über Schritt 1: E[(f0−f^)2]=((5−2)2+(5−4)2+(5−6)2)/3=11/3=1+8/3\mathbb E[(f_0-\hat f)^2] = \bigl((5-2)^2+(5-4)^2+(5-6)^2\bigr)/3 = 11/3 = 1 + 8/3. ✔ Plus σ2=1\sigma^2=1 gibt 14/3≈4,6714/3\approx 4{,}67.

Beispiel: k-Nearest-Neighbors (Ergänzung)​

Der „Drehknopf“ kk von 📄 07_roc_xval_bias_var_ws26.pdf, Folie 11 lässt sich mit der Zerlegung genau verstehen. Die KNN-Regression sagt an x0x_0 den Mittelwert der yy-Werte der kk nächsten Trainingspunkte x(1),…,x(k)x_{(1)},\dots,x_{(k)} voraus. Hält man die xx-Werte fest und lässt nur das Rauschen zufällig sein, gilt

f^(x0)=1k∑l=1k(f(x(l))+εl)⇒Bias⁡=1k∑l=1kf(x(l))−f(x0),Var⁡=σ2k.\hat f(x_0) = \frac1k\sum_{l=1}^k \bigl(f(x_{(l)}) + \varepsilon_l\bigr) \quad\Rightarrow\quad \operatorname{Bias} = \frac1k\sum_{l=1}^k f(x_{(l)}) - f(x_0), \qquad \operatorname{Var} = \frac{\sigma^2}{k}.
  • Kleines kk (z. B. k=1k=1): Die Nachbarn liegen ganz nah an x0x_0, der Bias ist klein. Die Varianz ist aber σ2\sigma^2, so groß wie das Rauschen selbst. Overfitting.
  • Großes kk: Die Varianz σ2/k\sigma^2/k wird klein, aber man mittelt über weit entfernte Punkte, deren ff-Werte sich von f(x0)f(x_0) unterscheiden. Der Bias wächst. Underfitting.

Das beste kk liegt dazwischen, und finden muss man es per Kreuzvalidierung, denn ff und σ2\sigma^2 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.