Overfitting och generalisering
Kunna känna igen överanpassning i kurvor och siffror, förklara bias/varians, och välja motåtgärder.
Intuition
En modell som får 99 % på träningsdata och 60 % på ny data har memorerat i stället för att lära sig mönstret. Det är överanpassning (overfitting).
Motsatsen, underanpassning: modellen är för enkel för mönstret — dålig på både träning och test.
Bias/varians: enkel modell → hög bias (systematiskt fel), låg varians (stabil). Komplex modell → låg bias, hög varians (svaret svänger med vilka exempel den råkade se). Man vill ha lagom.
Det enda som räknas är prestanda på data modellen inte sett.
Kod
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import make_pipeline
from sklearn.model_selection import train_test_split
rng = np.random.default_rng(0)
X = np.sort(rng.uniform(-3, 3, 40))[:, None]
y = np.sin(X[:, 0]) + rng.normal(0, 0.3, 40)
Xtr, Xva, ytr, yva = train_test_split(X, y, test_size=0.5, random_state=0)
for grad in (1, 3, 15):
m = make_pipeline(PolynomialFeatures(grad), LinearRegression()).fit(Xtr, ytr)
print(grad, round(m.score(Xtr, ytr), 2), round(m.score(Xva, yva), 2))
# 1 0.45 0.40 ← underanpassad
# 3 0.85 0.80 ← lagom
# 15 0.99 -2.1 ← överanpassad: perfekt på träning, katastrof på validering
Formellt
Förväntat testfel för en punkt kan skrivas , där är oreducerbart brus. Modellkapacitet minskar bias men ökar varians. Regularisering (t.ex. L2: ) byter lite bias mot mycket mindre varians. Tidigt stopp i iterativ träning är en implicit regularisering.
Behärskning innebär
- Känner igen överanpassning i tränings-/valideringskurvor
- Förklarar bias/varians-avvägningen
- Väljer motåtgärd: mer data, regularisering, enklare modell, tidigt stopp
Förkunskaper
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
- Dive into Deep Learning (CC BY-SA 4.0) — CC BY-SA 4.0
Leder till
Del av målen (24)
- Träna neuronnät på riktigt
- Klassisk maskininlärning i praktiken
- Bildklassificering med faltningsnät
- Se och höra med AI
- Data: samla, städa, dokumentera
- Frontier Lab — självständigt forskningsprojekt
- Finjustera en modell med LoRA
- Evals i praktiken
- Bygg ett NLP-system end-to-end
- AI i produktion
- Bygg ett RAG-flöde med spårbara källor
- Generativa modeller i djupet
- Klassisk ML på riktigt
- Finjustera och driva egna modeller
- AI-säkerhet i praktiken
- Ansvarsfull AI i praktiken
- Bygg en AI-tjänst som håller i drift
- AI-tjänst i drift
- Bygg en agent som går att lita på
- Bygg ett minnessystem för en agent
- Djup reinforcement learning
- Reproducera ett paper
- Statistik för experiment
- Tolka en språkmodell