D· AI-utvecklaredatahantering· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20
Dataläckage
Kunna upptäcka läckage mellan träning och test och förklara varför det ger falskt bra resultat.
Förkunskaper
Intuition
Dataläckage = information som inte finns vid beslutstillfället smyger in i träningen. Resultatet blir strålande i utvärderingen och dåligt i verkligheten.
Fem vanliga former:
| Typ | Exempel |
|---|---|
| Mållläckage | en feature som räknats fram ur svaret («antal_paminnelser» när man förutsäger utebliven betalning) |
| Tidsläckage | tränar på framtiden, testar på dåtiden |
| Grupplläckage | samma patient/kund i både träning och test |
| Förbehandlingsläckage | skalning eller urval beräknat på all data före splitten |
| Dubbletter | samma rad finns i båda mängderna |
Varningssignalen: resultatet är förvånansvärt bra. 0,99 AUC på ett svårt problem är nästan alltid läckage, inte genialitet.
Kod
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import SelectKBest
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score, GroupKFold
# FEL: urval och skalning på all data → läckage
# X_sel = SelectKBest(k=20).fit_transform(X, y)
# cross_val_score(LogisticRegression(), X_sel, y, cv=5) # optimistiskt
# RÄTT: allt inuti pipelinen, anpassas per fold
pipe = make_pipeline(StandardScaler(), SelectKBest(k=20), LogisticRegression(max_iter=1000))
print(cross_val_score(pipe, X, y, cv=GroupKFold(5), groups=patient_id).mean())
Checklista innan du tror på ett bra resultat:
- Kan varje feature verkligen observeras före det du förutsäger?
- Finns dubbletter mellan träning och test? (
set(hash(rad))) - Är splitten gjord per grupp och per tid där det behövs?
- Är all förbehandling inuti pipelinen?
- Vilken enda feature ger nästan hela resultatet? Ta bort den och se — ofta är den läckaget.
Behärskning innebär
- Ger tre exempel på dataläckage
- Upptäcker läckage när resultatet är misstänkt bra
- Bygger pipelines som inte läcker
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 — Leakage and the Reproducibility Crisis in ML-based Science — arXiv (öppen åtkomst; licens per artikel)