Korsvalidering löser ett verkligt problem: en enda uppdelning i tränings- och testmängd ger en skattning som varierar kraftigt beroende på vilka rader som råkade hamna var. Med tio delar får man tio mätningar och kan se både nivån och spridningen.
Spridningen är den underutnyttjade halvan. Är resultaten 0,71 / 0,73 / 0,72 är modellen stabil. Är de 0,58 / 0,81 / 0,69 säger medelvärdet 0,69 ingenting användbart, och det är signalen att data är för liten eller för heterogen.
Varianter och när de behövs
| Variant | När |
|---|---|
| K-fold | Utgångsläget. k = 5 eller 10 räcker nästan alltid. |
| Stratifierad K-fold | Klassificering, särskilt vid obalans: varje del ska ha samma klassfördelning |
| Upprepad K-fold | Liten data, där en enda indelning ger för brusig skattning |
| Leave-one-out | Mycket liten data. Dyrt och har hög varians, används sällan |
| Nästlad korsvalidering | När modellval och utvärdering måste hållas isär |
Nästlad korsvalidering förtjänar en egen kommentar. Om ni provar trettio hyperparameterkombinationer och redovisar den bästa korsvalideringspoängen är den siffran för hög: ni har valt på testresultatet. En inre loop väljer parametrar, en yttre mäter. Det är dyrare och det är skillnaden mellan en ärlig och en optimistisk siffra.
Tre situationer där vanlig K-fold är fel
Tidsordning. Slumpmässig uppdelning låter modellen träna på framtiden och testa på det förflutna. Använd tidsordnad uppdelning i stället. Se backtest, där glidande fönster och de vanligaste fällorna behandlas.
Grupperade observationer. Flera rader per kund, per butik eller per patient. Hamnar samma enhet i både träning och test mäter ni minnesförmåga, inte generalisering. Se uppdelning efter grupp.
Förbearbetning gjord för tidigt. Normalisering, imputering och variabelurval måste ligga inuti varje veck, inte utanför. Görs de på hela datan innan uppdelningen läcker testmängdens fördelning in i träningen. Effekten är liten och systematiskt i modellens favör. Se dataläckage.
Den tredje är den vanligaste jag stöter på vid granskningar, eftersom den ser harmlös ut i koden. En pipeline som utför all förbearbetning per veck löser det och kostar ingenting.
Vad korsvalidering inte kan svara på
Den skattar hur modellen presterar på nya observationer från samma fördelning. Frågan om den fungerar på nästa år, nästa marknad eller nästa kundsegment är en annan, och den kräver att uppdelningen görs efter tid respektive grupp.
De flesta besvikelser i produktion beror inte på att korsvalideringen var fel utförd, utan på att den besvarade en enklare fråga än den man egentligen hade.