Velg metrikker som passer problemet, bruk validering riktig og skill mellom modeller som under- og overtilpasser.
Læringsmål
01Bygge en confusion matrix og beregne accuracy, precision, recall, specificity og F1
02Forklare hvordan beslutningsterskelen flytter TPR og FPR langs en ROC-kurve
03Tolke AUC som rangeringsevne og beskrive hva AUC ikke måler
04Skille trening, validering og test og oppdage lekkasje i en evalueringsflyt
05Gjennomføre lekkasjefri kryssvalidering og tolke gjennomsnitt og variasjon
06Diagnostisere under- og overtilpasning fra trenings- og valideringsresultater
Start med feilen som betyr noe
En bank tester en modell som varsler mulig mislighold. Av 200 lånesøknader varsler modellen riktig på 40 som faktisk misligholder, men overser 20. Den varsler også feil på 10 som ville betalt, og avviser riktig risiko for 130. Å si at modellen har «170 riktige» er matematisk korrekt, men utilstrekkelig. De to feiltypene får ulike konsekvenser for kunden og banken.
En confusion matrix organiserer resultatene etter faktisk og predikert klasse. True positive og true negative er riktige avgjørelser. False positive er negativt tilfelle som feilaktig varsles positivt. False negative er positivt tilfelle som overses. Hvilken klasse som kalles positiv må alltid stå eksplisitt; ellers kan både språk og beregninger snus.
FIGUR · confusionmatrix
FIGTestresultat for 200 søknader
Fra figuren får vi accuracy med ƒaccuracy: 170 av 200, altså 0,85. Tallet oppsummerer alle riktige svar, men behandler klassene og feiltypene likt. Dersom bare én prosent misligholder, kan en modell som alltid svarer «betaler» få 99 prosent accuracy uten å finne ett eneste risikotilfelle. Derfor velger vi metrikk etter beslutningen, ikke etter hvilket tall som ser høyest ut.
Alle klassifikasjonsmetrikkene bygges fra de samme fire tellingene. Betingelsene i nevnerne gjør også kanttilfeller synlige.
Precision, recall og specificity svarer på ulike spørsmål
precision starter blant de positive prediksjonene og spør hvor mange som var riktige. ƒprecision gir 40 delt på 50, altså 0,80. Høy precision er viktig når et positivt varsel utløser en kostbar eller belastende handling. Dersom varslet bare fører til en manuell kontroll, kan lavere precision være akseptabelt. Dersom det automatisk avslår en søknad, blir falske positive langt mer alvorlige.
recall starter i stedet blant alle faktiske positive og spør hvor mange modellen fant. ƒrecall gir 40 delt på 60, omtrent 0,67. Recall er sentral når det er farlig å overse et positivt tilfelle, for eksempel ved screening eller feilvarsling. En modell kan få recall 1 ved å klassifisere alt som positivt, men da kollapser ofte precision. Metrikker må leses sammen med oppgavens kostnader.
specificity måler hvor stor andel av faktiske negative som avvises korrekt. ƒspecificity gir 130 delt på 140, omtrent 0,93. False positive rate fra ƒfalse positive rate er komplementet, omtrent 0,07. Recall kalles også true positive rate. Sammen beskriver TPR og FPR hvordan en terskel skiller de to klassene.
F1 kombinerer precision og recall gjennom ƒf1-score. Det harmoniske gjennomsnittet blir lavt dersom én av dem er lav, og kan derfor være nyttig når begge skal være rimelige. Men F1 ignorerer true negative og uttrykker ingen eksplisitt kostnad. Det er ikke automatisk riktig for ubalanserte data; det er bare ett mulig sammendrag.
Terskler lager en hel familie av resultater
En sannsynlighetsmodell har ikke én confusion matrix før terskelen er valgt. Senker vi terskelen, blir flere prediksjoner positive. Recall øker ofte fordi færre positive overses, mens false positive rate også øker. Hever vi terskelen, skjer vanligvis det motsatte. Det er et bytteforhold, ikke en feil ved modellen.
En roc-kurve beregnes ved å variere terskelen og plotte true positive rate mot false positive rate. Hvert punkt er én mulig beslutningsregel. Punktet øverst til venstre har høy recall og lav FPR. Diagonalen tilsvarer tilfeldig rangering over mange observasjoner. Kurven gjør det mulig å sammenligne rangering uten å låse én terskel, men den velger ikke kostnadene for oss.
FIGROC-kurve over flere terskler
auc er arealet under ROC-kurven. Det kan tolkes som sannsynligheten for at et tilfeldig positivt eksempel får høyere score enn et tilfeldig negativt. AUC 0,5 betyr omtrent tilfeldig rangering; 1 betyr perfekt rangering. ƒtrapesbidrag til auc viser hvordan arealet kan tilnærmes som summen av trapeser mellom nabopunkter.
AUC sier ikke at sannsynlighetene er kalibrerte, og skjuler hvilken terskel som faktisk brukes. To modeller kan ha lik AUC, men oppføre seg forskjellig i området med svært lav FPR som banken bryr seg om. Ved kraftig klasseubalanse kan en precision–recall-kurve dessuten være lettere å koble til sjeldne positive tilfeller. Eksamensmessig bør du kunne forklare både hva ROC/AUC måler og hva det ikke avgjør.
Tre datasettroller, ikke tre tilfeldige navn
Treningsdata tilpasser modellparametrene. Valideringsdata velger hyperparametre, features, terskel og modellvariant. Testdata brukes én gang til slutt for et mest mulig ærlig estimat. Hvis testresultatet påvirker modellvalget, har testsettet i praksis blitt et valideringssett, og vi trenger nye data for en ubundet sluttkontroll.
Modellvalg på valideringssettet er selv en form for læring. Prøver vi hundre varianter og velger den beste, kan vi ha funnet en variant som passer tilfeldig støy i akkurat denne valideringen. Derfor må hele arbeidsflyten vurderes, ikke bare den endelige treningsalgoritmen. Preprocessing skal også tilpasses uten innsyn i validerings- og testobservasjonene.
En modell med høy feil både på trening og validering har ofte for lav kapasitet eller svake features. En modell med svært lav treningsfeil, men tydelig høyere valideringsfeil, viser overtilpasning. Den har lært treningsspesifikke detaljer som ikke generaliserer. Mer kompleksitet hjelper i det første tilfellet, men kan forverre det andre.
FIGTrenings- og valideringsfeil mot modellkapasitet
Figuren er en typisk lærekurve mot kapasitet, ikke en universell naturlov. Valideringsfeil kan være ujevn, og minimumet avhenger av datasplitt og hyperparametre. Poenget er å diagnostisere gapet mellom trening og validering. Regularisering, mer representative data eller lavere kapasitet kan redusere overtilpasning. Bedre features eller høyere kapasitet kan redusere undertilpasning.
Kryssvalidering gir flere kontrollerte forsøk
Når datasettet er begrenset, kan én tilfeldig valideringssplitt gi et ustabilt svar. kryssvalidering deler data i k folder. Modellen trenes k ganger; hver fold fungerer som validering én gang, mens resten brukes til trening. ƒgjennomsnittlig kryssvalideringsscore oppsummerer scorene med et gjennomsnitt. Spredningen mellom foldene er også informativ fordi den viser hvor følsomt resultatet er for hvilke observasjoner som havner sammen.
Klassifikasjon bruker ofte stratifiserte folder slik at klasseandelene ligner i hver fold. Tidsserier krever rekkefølgebevarende splitting; tilfeldig blanding kan la framtiden lekke inn i fortiden. Grupperte data, som flere målinger fra samme person, bør splittes etter gruppe. En teknisk gyldig tilfeldig fold er ikke nødvendigvis en realistisk simulering av bruk.
Preprocessing må tilpasses treningsdelen i hver fold. Dersom standardisering beregnes på hele datasettet før kryssvalidering, har valideringsfolden påvirket middelverdi og standardavvik. Effekten kan være liten, men evalueringen er ikke lenger ren. En pipeline binder transformasjon og modell sammen og gjør riktig rekkefølge lettere å håndheve.
StandardScaler tilpasses bare treningsdelen i hver fold fordi den ligger inne i pipelinen. Fast seed gjør både data og foldfordeling reproduserbar.
Kryssvalidering erstatter ikke et slutt-testsett når samme CV-resultat brukes gjentatte ganger til modellvalg. Den gir et bedre grunnlag for valg inne i utviklingsfasen. Etter at oppskriften er låst, trener vi gjerne på trening pluss validering og evaluerer én gang på testsettet.
Bootstrap, usikkerhet og sammenligning
Ett metrikk-tall skjuler at testsettet er et utvalg. Med bootstrap trekker vi nye testutvalg med tilbakelegging fra de observerte testeksemplene, beregner metrikken på hvert utvalg og studerer fordelingen. Dette kan gi et intervall som viser hvor presist resultatet er estimert. Små datasett eller sjeldne klasser kan gi stor usikkerhet selv om punktestimatet ser pent ut.
Bootstrap må respektere datastrukturen. Avhengige tidsmålinger eller flere rader fra samme person kan ikke uten videre trekkes som uavhengige enkeltrader. Da bør blokk eller gruppe være trekk-enheten. Usikkerhetsintervallet retter heller ikke systematisk skjevhet: et stort, feilrepresentativt testsett kan gi et smalt intervall rundt feil mål.
Når to modeller sammenlignes, bruk helst samme folder eller samme bootstrap-utvalg. Da vurderes forskjellen på felles observasjoner, og tilfeldig variasjon kanselleres delvis. En forskjell på 0,01 i AUC er ikke automatisk meningsfull dersom usikkerheten er større eller driftskostnaden ligger et annet sted på ROC-kurven.
Oppskrift for eksamensoppgaver
Start med å tegne matrisen og plasser TP, FN, FP og TN ut fra hvilken klasse som er positiv. Skriv så nevneren med ord: precision deler på alle predikerte positive, recall på alle faktiske positive, og specificity på alle faktiske negative. Det forebygger at formlene blandes. Kontroller at resultatet ligger mellom 0 og 1.
Når terskelen endres, forklar retningen før du regner: lavere terskel gir flere positive prediksjoner. For ROC må du vite at x-aksen er FPR og y-aksen TPR. For AUC må du skille rangering fra kalibrering og valgt driftsterskel.
Ved modellvalg skal du alltid spørre hvilken rolle hvert datasett spiller. Transformasjoner, featurevalg og hyperparametre må læres uten innsyn i dataene som skal simulere framtiden. Rapporter både gjennomsnitt og variasjon når flere folder finnes. Den beste modellen er ikke den med flest lag eller høyest treningsscore, men den som gir pålitelig ytelse på riktig metrikk under en realistisk evaluering.
Mine notater
Skriv egne notater for dette kapittelet. De lagres automatisk og dukker opp i «Mine notater»-oversikten paa fag-siden.