Krydsvalidering
Også kendt som: k-fold-krydsvalidering, cross-validation
At vurdere en model retfærdigt ved at dele eksemplerne op i dele og lade hver del på skift være den, der holdes tilbage til test.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En måde at bedømme en model på, hvor data deles i k lige store dele; modellen trænes k gange, hver gang på alle dele undtagen én, og vurderes på den udeladte del, hvorefter de k resultater lægges sammen til et gennemsnit.
Forklaret enkelt
Som en lærer, der deler en spørgsmålsbank i fem bunker og holder fem prøveeksamener, hver gang med en bunke, klassen ikke har øvet sig på, og så tager gennemsnittet af karaktererne.
I praksis
Et hospital har kun 800 tidligere forløb til at bygge en model, der markerer patienter i risiko for genindlæggelse inden for en måned, så i stedet for at ofre en femtedel på én kontrol kører det fem runder og rapporterer gennemsnit og spredning.
Hvorfor det betyder noget
Med få eksempler kan én heldig eller uheldig opdeling få en model til at se langt bedre eller dårligere ud, end den er; når opdelingen går på skift, bliver resultatet mere stabilt og ærligt.
Teknisk uddybning
Ved k-fold-krydsvalidering deles træningssættet, som scikit-learn beskriver det, i k mindre sæt; for hvert fold trænes en model på de øvrige k minus 1 fold og valideres på det resterende, og den rapporterede score er gennemsnittet over fold, ofte med standardafvigelse. Idéen går tilbage til Stone (1974), Cross-validatory choice and assessment of statistical predictions. Kohavi (1995) sammenlignede krydsvalidering og bootstrap i over en halv million kørsler og konkluderede, at ti-fold stratificeret krydsvalidering var den bedste metode til modelvalg på datasæt fra virkeligheden som hans, selv når regnekraften tillader flere fold; scikit-learn bemærker ligeledes, at 5 eller 10 fold generelt foretrækkes frem for leave-one-out, der bruger n fold med ét eksempel hver og giver et estimat med høj varians til en stor beregningsmæssig pris.
Varianter håndterer struktur i data. Stratificeret k-fold holder hvert folds klassefordeling tæt på hele sættets, hvilket betyder noget ved skæve klassefordelinger. Group k-fold holder alle eksempler fra én gruppe (en patient, en kunde, et dokument) i samme fold, så modellen aldrig testes på en gruppe, den er trænet på. Til tidsserier bruger TimeSeriesSplit voksende vinduer, hvor hvert testfold ligger efter sine træningsdata, fordi en blanding ville lade modellen se ind i fremtiden. Repeated k-fold gentager hele proceduren med forskellige tilfældige opdelinger for at mindske estimatets varians.
Krydsvalidering er først og fremmest et værktøj til modelvalg og tuning af hyperparametre (scikit-learns GridSearchCV og RandomizedSearchCV kører det internt). Bruges den samme krydsvaliderede score både til at vælge den bedste konfiguration og til at rapportere ydelsen, er estimatet for optimistisk; nested krydsvalidering tilføjer en ydre løkke til ærlig estimation, eller der holdes et separat, urørt testsæt til det endelige tal.
Lækage er den hyppigste fejl. scikit-learn understreger, at forbehandling som standardisering eller feature-udvælgelse kun må læres fra træningsfoldene og derefter anvendes på det udeladte fold, hvilket en Pipeline gør automatisk; udvælges features på hele datasættet før krydsvalideringen, kan man få imponerende resultater på ren støj. For store deep learning-modeller er fuld k-fold-træning som regel for dyr, så her er ét fast valideringssæt normen.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
- Træningsdata
- →Krydsvalidering
Relationer
- Forudsætter
- Træningsdata
- Alternativ til
- Valideringssæt
- Bruges sammen med
- Hyperparameter
Kilder og videre læsning
Officiel dokumentation
Opslagsværker
- Kohavi (1995), A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection · IJCAI
- Stone (1974), Cross-Validatory Choice and Assessment of Statistical Predictions · Journal of the Royal Statistical Society, Series B
- Datasets: Dividing the original dataset (Machine Learning Crash Course) · Google for Developers
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…