Metrikker
Stryg for at vise menuen
Indtil nu har vi brugt nøjagtighed som den primære måling til at evaluere modellens præstation. Dog har nøjagtighed nogle begrænsninger. Lad os nu diskutere dens ulemper og introducere flere yderligere målinger – baseret på TP, TN, FP og FN – som hjælper med at håndtere disse udfordringer.
Nøjagtighed
Nøjagtighed repræsenterer andelen af korrekte forudsigelser:
accuracy=correct+incorrectcorrect=TP+TN+FP+FNTP+TNDog nøjagtighed har sine ulemper. Forestil dig for eksempel, at du forsøger at forudsige, om en patient har en sjælden sygdom. Datasættet indeholder 99,9% raske patienter og kun 0,1% med sygdommen. I dette tilfælde vil en model, der altid forudsiger, at patienten er rask, give en nøjagtighed på 0,999 – selvom en sådan model er fuldstændig ubrugelig.
Datasæt som dette kaldes ubalancerede, og i sådanne tilfælde er balanceret nøjagtighed en bedre målemetode.
Balanceret nøjagtighed
Balanceret nøjagtighed beregner andelen af korrekte positive forudsigelser og andelen af korrekte negative forudsigelser hver for sig og gennemsnitliggør dem. Denne tilgang giver lige stor betydning til hver klasse, uanset hvor ubalanceret datasættet er.
balanced_accuracyaccuracy=21⋅PTP+21⋅NTN=P+NTP+TNHvor
- P=TP+FN – samlet antal positive forekomster (klasse 1);
- N=TN+FP – samlet antal negative forekomster (klasse 0).
I eksemplet med den sjældne sygdom vil den balancerede nøjagtighed for en model, der altid forudsiger "rask", være 0,5 – hvilket effektivt fremhæver problemet. Så dette problem bliver adresseret.
Balanceret nøjagtighed skelner dog stadig ikke mellem type 1 og type 2 fejl – ligesom almindelig nøjagtighed. Det er her, præcision og recall kommer ind.
Præcision
Målingen præcision angiver, hvor mange af de værdier, som modellen har forudsagt som positive, der faktisk var positive. Det er andelen af sande positive forudsigelser ud af alle positive forudsigelser foretaget af modellen:
precision=TP+FPTPVed at bruge præcision som måling kan man forstå, hvor ofte en type 1-fejl opstår. Høj præcision betyder, at type 1-fejl er sjældne, mens lav præcision indikerer, at type 1-fejl forekommer hyppigt.
Recall
Målingen recall viser andelen af faktiske positive tilfælde, som modellen korrekt har forudsagt:
recall=TP+FNTPRecall-metricen hjælper med at forstå, hvor ofte en type 2-fejl opstår. Høj recall betyder, at type 2-fejl er sjældne, mens lav recall betyder, at de forekommer hyppigt.
Både præcision og recall har dog begrænsninger. For eksempel vil en model, der kun forudsiger den positive klasse (1), opnå perfekt recall, men dens præcision vil være dårlig. Omvendt vil en model, der korrekt forudsiger blot én positiv forekomst og mærker alt andet som negativt, have perfekt præcision, men elendig recall.
Dette viser, at det er let at bygge en model med perfekt præcision eller perfekt recall, men langt sværere at bygge en, der klarer sig godt på begge områder. Derfor er det vigtigt at tage begge metrikker i betragtning – og heldigvis findes der en metrik, der kombinerer dem.
F1-score
F1-score er det harmoniske gennemsnit af præcision og recall. Det harmoniske gennemsnit foretrækkes frem for det almindelige (aritmetiske) gennemsnit, fordi det straffer situationer, hvor én af værdierne (enten præcision eller recall) er lav, hvilket gør det til et mere balanceret mål for modellens præstation.
F1=precision1+recall12=precision+recall2⋅precision⋅recallF1-score kombinerer både præcision og recall i én enkelt metrik. Den vil kun være høj, hvis både præcision og recall er relativt høje, hvilket gør den til et nyttigt mål, når der skal balanceres mellem begge typer fejl.
Valget af den rette metrik afhænger af den specifikke opgave. Nøjagtighed (eller balanceret nøjagtighed for ubalancerede datasæt) er intuitiv og giver et generelt indtryk af modellens samlede præstation. Hvis der er behov for mere detaljeret indsigt i de typer fejl, modellen laver, hjælper præcision med at identificere type 1-fejl, mens recall fremhæver type 2-fejl. F1-score viser, hvor godt balanceret modellen er i forhold til både type 1- og type 2-fejl.
En anden ofte anvendt metrik er ROC/AUC, som du kan læse mere om i denne artikel.
Metoder i Python
Scikit-learn tilbyder implementeringer af alle disse metoder i modulet sklearn.metrics:
from sklearn.metrics import accuracy_score, balanced_accuracy_score, precision_score, recall_score, f1_score
accuracy = accuracy_score(y_true, y_pred)
balanced_accuracy = balanced_accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
Hvis du ønsker at få metoder som præcision, recall og F1-score på én gang, tilbyder sklearn funktionen classification_report():
12345678910111213import pandas as pd import seaborn as sns from sklearn.metrics import classification_report from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split df = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/b71ff7ac-3932-41d2-a4d8-060e24b00129/titanic.csv') X, y = df.drop('Survived', axis=1), df['Survived'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) random_forest = RandomForestClassifier().fit(X_train, y_train) y_pred = random_forest.predict(X_test) # Display a classification report print(classification_report(y_test, y_pred))
Support henviser til antallet af faktiske forekomster af hver klasse i testdatasættet. Macro avg beregner gennemsnittet af hver metode (præcision, recall, F1) på tværs af alle klasser ligeligt, uden at tage højde for ubalance mellem klasserne. Weighted avg beregner også gennemsnittet af metoderne på tværs af alle klasser, men vægter klasser med flere forekomster højere (baseret på deres support).
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat