Hoppa till innehållet
AI-grafen
D· AI-utvecklareklassisk-ml· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20

Korsvalidering

Kunna använda k-fold korsvalidering och förstå när den behövs.

Förkunskaper

Intuition

Med lite data blir ett enda valideringssplit opålitligt: 200 exempel delat 80/20 ger 40 valideringsexempel, och resultatet svänger flera procentenheter beroende på vilka 40 som hamnade där.

k-fold korsvalidering: dela datan i k lika delar. Träna k gånger, varje gång med en del som validering och resten som träning. Medelvärdet av de k resultaten är mycket stabilare — och spridningen säger hur osäker siffran är.

k = 5 eller 10 är standard. Kostnaden är att du tränar k gånger.

Kod

from sklearn.model_selection import cross_val_score, StratifiedKFold, GroupKFold
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

# Pipeline i cross_val_score → skalningen anpassas inuti varje fold. Utan pipeline läcker
# valideringsdelens medelvärde in i träningen.
modell = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
s = cross_val_score(modell, X, y, cv=cv, scoring="f1_macro")
print(f"{s.mean():.3f} ± {s.std():.3f}")     # 0.812 ± 0.024

# Flera rader per person? Dela per person, annars läcker individen mellan folds:
# cross_val_score(modell, X, y, cv=GroupKFold(5), groups=person_id)

Nästlad korsvalidering behövs om du både väljer hyperparametrar och vill ha en ärlig skattning: en yttre loop för skattningen, en inre för valet. Annars är resultatet optimistiskt eftersom valet gjordes på samma data som mäter.

Behärskning innebär

  • Använder k-fold korsvalidering
  • Förklarar när den behövs och vad den kostar
  • Undviker läckage i korsvalideringen

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser