E· Universitetklassisk-ml· ca 60 min· utvecklande· verifierad 2026-09-20
Bias–varians-avvägningen
Kunna dekomponera fel i bias och varians och koppla till modellkomplexitet.
Förkunskaper
Intuition
Tänk dig att du tränar samma modelltyp på tio olika stickprov ur samma population och tittar på förutsägelserna i en given punkt.
- Bias = hur långt medelvärdet av de tio förutsägelserna ligger från sanningen. Systematiskt fel — modellen är för enkel för mönstret.
- Varians = hur mycket de tio spretar. Modellen är så flexibel att den följer just sitt stickprov.
- Brus = det som inte går att förutsäga oavsett modell.
En rät linje på krokig data: hög bias, låg varians. Ett polynom av grad 15: låg bias, hög varians. Båda har stort totalfel.
Formellt
För kvadratisk förlust i en punkt , med och , :
Väntevärdet tas över olika träningsmängder.
Vad som påverkar vad:
- Ökad modellkomplexitet: bias ↓, varians ↑.
- Mer träningsdata: varians ↓ (bias oförändrad).
- Regularisering: varians ↓, bias ↑ något.
- Ensembler (bagging, random forest): varians ↓ genom medelvärdesbildning.
- Boosting: bias ↓ genom att successivt korrigera fel.
Nyansen för moderna nät: «double descent» visar att testfelet kan sjunka igen bortom interpolationspunkten för mycket stora modeller — den klassiska U-kurvan är inte hela bilden.
Kod
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
rng = np.random.default_rng(0)
f = lambda x: np.sin(1.5 * x)
x_test = np.linspace(-3, 3, 200)[:, None]
for grad in (1, 3, 15):
preds = []
for _ in range(50): # 50 olika träningsmängder
X = rng.uniform(-3, 3, (30, 1)); y = f(X[:, 0]) + rng.normal(0, 0.3, 30)
m = make_pipeline(PolynomialFeatures(grad), LinearRegression()).fit(X, y)
preds.append(m.predict(x_test))
P = np.array(preds)
bias2 = float(np.mean((P.mean(axis=0) - f(x_test[:, 0])) ** 2))
var = float(np.mean(P.var(axis=0)))
print(f"grad {grad:2d} bias² {bias2:.3f} varians {var:.3f} summa {bias2 + var:.3f}")
# grad 1 bias² 0.281 varians 0.021 summa 0.302
# grad 3 bias² 0.020 varians 0.049 summa 0.069 ← bäst
# grad 15 bias² 0.013 varians 0.612 summa 0.625
Behärskning innebär
- Dekomponerar fel i bias, varians och brus
- Kopplar avvägningen till modellkomplexitet och datamängd
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- scikit-learn User Guide (BSD-3) — BSD-3-Clause
- arXiv — Reconciling modern machine learning and the bias-variance trade-off — arXiv (öppen åtkomst; licens per artikel)