AI-evalueringHafsteinn Runarsson · AI Konsulent28 Aug 2026 · 9 min
F1-score forklart: formel, eksempel og AI-evaluering
F1-score samler presisjon og recall i ett tall. Den er særlig nyttig når en modell skal finne en viktig klasse, klassene er skjevt fordelt, og både falske positive og falske negative betyr noe. En score nær 1 betyr at både presisjon og recall er høye. En score nær 0 betyr at minst én av dem er lav.
F1-score bør likevel ikke stå alene. Den overser sanne negative, avhenger av hvilken klasse du kaller positiv, og kan skjule at to modeller gjør svært ulike typer feil.
Kort forklart: hva er F1-score?
F1-score er det harmoniske gjennomsnittet av presisjon og recall. Det harmoniske gjennomsnittet gjør at en lav verdi trekker totalscoren tydelig ned. En modell får derfor ikke en høy F1-score ved å være sterk på bare presisjon eller bare recall.
Formelen er:
F1 = 2 × (presisjon × recall) / (presisjon + recall)
F1-score går fra 0 til 1:
1betyr perfekt presisjon og perfekt recall.0betyr at presisjon eller recall er null.- Verdier mellom 0 og 1 må tolkes i lys av oppgaven, datagrunnlaget og kostnaden ved ulike feil.
Du kan også se scoren oppgitt som prosent. En F1-score på 0,80 og 80 % uttrykker da det samme.
Før du regner: TP, FP og FN
F1-score bygger på tre deler av en forvekslingsmatrise. Du må først bestemme hvilken klasse som er positiv.
- Sann positiv (TP): Modellen merker et positivt tilfelle som positivt.
- Falsk positiv (FP): Modellen merker et negativt tilfelle som positivt.
- Falsk negativ (FN): Modellen overser et positivt tilfelle.
- Sann negativ (TN): Modellen merker et negativt tilfelle som negativt.
Presisjon svarer på: Hvor mange av tilfellene modellen kalte positive, var faktisk positive?
presisjon = TP / (TP + FP)
Recall svarer på: Hvor mange av alle faktiske positive tilfeller fant modellen?
recall = TP / (TP + FN)
Sanne negative er med når du regner accuracy, men ikke i selve F1-formelen. Det er en styrke i noen oppgaver og en begrensning i andre.
Slik regner du ut F1-score
Du kan beregne F1-score i tre trinn:
- Regn ut presisjon fra TP og FP.
- Regn ut recall fra TP og FN.
- Sett begge verdiene inn i F1-formelen.
Tenk deg en modell som skal finne avvik. I et konstruert testsett gir modellen dette resultatet:
- 40 sanne positive
- 10 falske positive
- 20 falske negative
- 930 sanne negative
Da blir presisjonen 40 / (40 + 10) = 0,80.
Recall blir 40 / (40 + 20) = 0,67.
F1-score blir 2 × (0,80 × 0,67) / (0,80 + 0,67) = 0,73, avrundet til to desimaler.
Accuracy i det samme eksemplet er (40 + 930) / 1000 = 0,97. Modellen har altså 97 prosent accuracy, men en F1-score på 0,73. Forskjellen oppstår fordi de mange sanne negative løfter accuracy, mens F1-score retter oppmerksomheten mot hvor godt modellen finner den positive klassen.
F1-score, accuracy, presisjon eller recall?
Riktig mål avhenger av hvilken feil som koster mest. Ingen av målene er automatisk best.
- Bruk accuracy når klassene er rimelig balanserte og feiltypene har omtrent samme konsekvens. Accuracy er andelen riktige prediksjoner totalt.
- Bruk presisjon når falske positive er særlig uønsket. Høy presisjon betyr at positive varsler oftere er riktige.
- Bruk recall når falske negative er særlig uønsket. Høy recall betyr at modellen finner en større andel av de faktiske positive tilfellene.
- Bruk F1-score når både presisjon og recall betyr noe, og du trenger ett tall som balanserer dem.
F1-score er ofte mer informativ enn accuracy ved klasseubalanse. Den er ikke nødvendigvis mer informativ enn å vise presisjon og recall hver for seg. Rapporter gjerne alle tre, sammen med antall TP, FP og FN.
Når F1-score fungerer godt
F1-score fungerer best for klassifikasjonsoppgaver der den positive klassen er viktig og begge feiltypene må håndteres.
Typiske situasjoner er:
- En dokumentmodell som skal finne bestemte felt eller dokumenttyper.
- Et søke- eller gjenfinningssystem som skal finne relevante treff uten å returnere for mye støy.
- En varslingsmodell der teamet både vil finne reelle hendelser og begrense unødvendige varsler.
- En multiklassemodell der du vil sammenligne ytelsen mellom klasser.
Scoren er også nyttig når du sammenligner modellversjoner på det samme, låste testsettet. Da må definisjonen av positiv klasse, beslutningsterskelen og metoden for gjennomsnittsberegning være uendret.
Når F1-score skjuler for mye
F1-score er et sammendrag, ikke en full diagnose. Den kan gi et for enkelt bilde i minst fire situasjoner.
- Feilene har ulik kostnad. Standard F1 vekter presisjon og recall likt. Hvis én feiltype er klart dyrere, bør du prioritere presisjon eller recall, eller bruke en F-beta-score med en bevisst vekting.
- Sanne negative er viktige. F1 bruker ikke TN i formelen. To modeller kan derfor få samme F1-score selv om de håndterer den negative klassen ulikt.
- Du trenger gode sannsynligheter. F1 vurderer klassene etter at sannsynlighetene er gjort om til ja eller nei. Den sier ikke om en sannsynlighet på 0,8 er godt kalibrert.
- Datasettet endrer seg. F1-score og presisjon påvirkes av klassefordelingen. Sammenligning mellom testsett med ulik andel positive kan derfor være misvisende.
Se alltid på forvekslingsmatrisen. For kritiske beslutninger bør du også vurdere presisjon-recall-kurven, ytelse per relevant undergruppe og den faktiske kostnaden ved FP og FN.
Makro, mikro eller vektet F1?
I binær klassifikasjon måles F1 vanligvis for den positive klassen. I multiklasseoppgaver beregner du først en F1-score for hver klasse og velger deretter hvordan de skal samles.
- Makro-F1 er gjennomsnittet av F1-score for hver klasse. Hver klasse teller like mye, også sjeldne klasser.
- Mikro-F1 summerer TP, FP og FN på tvers av klassene før scoren beregnes. Store klasser får dermed mer innflytelse.
- Vektet F1 beregner F1 per klasse og vekter resultatet etter hvor mange eksempler hver klasse har.
- F1 per klasse viser hvilke klasser modellen faktisk strever med. Denne visningen bør følge et samlet gjennomsnitt.
Valget er en del av måledefinisjonen, ikke en teknisk detalj. Dokumentasjonen for `f1_score` i scikit-learn beskriver hvordan average="macro", average="micro", average="weighted" og average=None behandler binære, multiklasse- og multilabeldata.
Beslutningsterskelen kan endre scoren
F1-score tilhører ikke bare modellen. Den tilhører kombinasjonen av modell, data og beslutningsterskel.
En binær modell produserer ofte en sannsynlighet eller rå score. En terskel gjør denne verdien om til positiv eller negativ. Senker du terskelen, finner modellen gjerne flere positive tilfeller, men kan også lage flere falske positive. Hever du den, skjer ofte det motsatte.
Velg terskelen ut fra konsekvensene i bruken. Hvis du optimerer terskelen for F1-score, må du gjøre det på valideringsdata og beholde testsettet til en ærlig sluttevaluering. Scikit-learn viser både metoden og fallgruvene i sin veiledning for justering av beslutningsterskel.
F1-score i evaluering av LLM-er og RAG
F1-score kan brukes når en språkmodelloppgave kan uttrykkes som tydelige treff og feil. Den er mindre egnet som én samlet karakter på et fritt tekstsvar.
For en klassifikator bygget med en LLM kan TP, FP og FN defineres på vanlig måte. I et gjenfinningssystem for RAG kan presisjon beskrive andelen hentede dokumenter som er relevante, mens recall beskriver andelen relevante dokumenter systemet faktisk fant. F1 balanserer de to.
Ved ekstraksjon kan du beregne treff på felt, etiketter eller tekstbiter. Definisjonen må være presis: Teller delvise treff? Normaliseres store og små bokstaver? Skal hvert felt telle likt? Uten en fast regel blir scoren vanskelig å gjenta.
Et generert svar trenger flere mål. Faktisk korrekthet, støtte i kildene, relevans, sikkerhet og språk kan feile uavhengig av hverandre. Bruk derfor F1-score for den delen av evalueringsoppgaven som faktisk er klassifikasjon eller gjenfinning, og egne evaluatorer for resten.
En praktisk evalueringsrutine
En pålitelig F1-score starter med en tydelig måledefinisjon.
- Definer positiv klasse og hva TP, FP og FN betyr i den virkelige arbeidsflyten.
- Lag separate datasett for trening, validering og endelig test.
- Velg
binary,macro,micro,weightedeller score per klasse før du sammenligner modeller. - Rapporter F1 sammen med presisjon, recall, forvekslingsmatrise og antall eksempler.
- Velg beslutningsterskel på valideringsdata ut fra kostnaden ved feil.
- Undersøk resultatet per klasse og for relevante undergrupper.
- Lås testsett og målere slik at neste modellversjon kan sammenlignes på samme grunnlag.
- Overvåk både datakvalitet og metrikker etter produksjonssetting. En stabil totalscore kan skjule nye feilmønstre.
I Python kan en binær score beregnes med from sklearn.metrics import f1_score og f1_score(y_true, y_pred, average="binary"). For multiklasseoppgaver må average velges eksplisitt ut fra hva du vil at totalscoren skal representere.
Hva er en god F1-score?
En god F1-score er en score som møter kravet for den konkrete oppgaven på et representativt testsett. Det finnes ingen universell grense. Sammenlign mot en enkel baseline, tidligere modellversjoner og akseptkriterier knyttet til kostnaden ved falske positive og falske negative.
Er F1-score alltid bedre enn accuracy?
Nei. F1-score er ofte nyttig ved klasseubalanse eller når den positive klassen står i sentrum. Accuracy kan være lettere å tolke når klassene er balanserte og alle feil teller omtrent likt. Vis begge hvis de svarer på ulike spørsmål.
Kan F1-score brukes til regresjon?
Ikke direkte. F1-score krever diskrete klasser og kan derfor ikke evaluere en kontinuerlig verdi som pris, tid eller temperatur uten at du først gjør problemet om til klasser. Ved regresjon bør du velge et regresjonsmål som passer feilkostnaden.
Hva skjer hvis presisjon eller recall er null?
F1-score blir null når én av dem er null. Hvis modellen ikke produserer noen positive prediksjoner, kan selve beregningen også få en divisjon med null. Biblioteket du bruker må da ha en tydelig regel for resultatet; scikit-learn lar dette styres med parameteren zero_division.
Bør du rapportere bare F1-score?
Nei. Rapporter minst presisjon, recall, F1-score, forvekslingsmatrise og antall eksempler. For multiklasseoppgaver bør du også vise resultatet per klasse. Da kan leseren se hvilke feil et samlet tall skjuler.
Trenger dere et evalueringsoppsett som kan brukes fra test til produksjon? Start en samtale om datagrunnlag, måledefinisjoner og løpende evaluering.