CMD + K

Kapittel 6Begreper & formler · Metrikker, terskler og ROC
Referanseside · Kapittel 6

Begreper & referanser

Alle nøkkelbegrepene, formlene og referansene fra Metrikker, terskler og ROC, samlet på én side. Bruk denne som oppslag når du leser, øver flashcards eller tar quiz.

Øv med flashcards20 kort fra dette kapittelet

Begreper

Sentrale begreper fra kapittelet med korte definisjoner.

01Confusion matrix

En tabell som deler prediksjonene i true positive, false positive, true negative og false negative.

02Precision

Andelen av modellens positive prediksjoner som er korrekte.

03Recall

Andelen av alle faktiske positive tilfeller som modellen finner.

04Specificity

Andelen av alle faktiske negative tilfeller som modellen avviser korrekt.

05ROC-kurve

En terskelkurve som viser true positive rate mot false positive rate.

06AUC

Arealet under ROC-kurven og et terskeluavhengig mål på modellens rangeringsevne.

07Accuracy

Andelen av alle eksempler som klassifiseres riktig, . Lett å tolke, men misvisende når klassene er ubalanserte eller feiltypene har ulik kostnad.

08F1-score

Det harmoniske gjennomsnittet av precision og recall. Blir lav så snart én av dem er lav, og tar ikke hensyn til sanne negative.

09Beslutningsterskel

Verdien som gjør en kontinuerlig score om til en klasse: score gir positiv prediksjon. Hver terskel gir sin egen forvirringsmatrise og sitt eget punkt på ROC-kurven.

10PR-kurve

Precision plottet mot recall for alle terskler. Grunnlinjen er andelen positive, og kurven er ofte mer informativ enn ROC når den positive klassen er sjelden.

Formler

Hver formel: hva den heter, hvordan den ser ut, og hva symbolene betyr.

accuracy

Accuracy

Accuracy er andelen observasjoner som klassifiseres riktig.

TPsanne positive
TNsanne negative
FPfalske positive
FNfalske negative
precision

Precision

Precision svarer på hvor mange av de positive prediksjonene som faktisk er positive.

TPsanne positive
FPfalske positive
recall

Recall

Recall svarer på hvor mange av de faktiske positive tilfellene modellen finner.

TPsanne positive
FNfalske negative
specificity

Specificity

Specificity er andelen faktiske negative tilfeller modellen avviser korrekt.

TNsanne negative
FPfalske positive
f1-score

F1-score

F1 er det harmoniske gjennomsnittet av precision og recall og blir lav hvis én av dem er lav.

precisionpresisjon
recallgjenfinning
false-positive-rate

False positive rate

FPR er andelen faktiske negative tilfeller som feilaktig blir klassifisert positive.

FPfalske positive
TNsanne negative
auc-trapes

Trapesbidrag til AUC

Arealet under en ROC-kurve kan estimeres ved å summere trapeser mellom naboterskler.

TPR_itrue positive rate ved terskel i
FPR_ifalse positive rate ved terskel i
auc-rangering

AUC som parrangering

Andelen positiv–negativ-par der den positive får høyest score; uavgjorte par teller en halv. Gir samme tall som arealet under ROC-kurven.

n_+antall positive eksempler
n_-antall negative eksempler
s_imodellens score for eksempel i
1[·]indikator: 1 hvis utsagnet er sant, ellers 0

Kodesnutter

Kodesnutter fra kapittelet, vist literal.

Kode

Metrikker fra fire tellinger

Python
import numpy as np rng = np.random.default_rng(2024)y_true = rng.integers(0, 2, size=40)score = 0.30 + 0.40 * y_true + rng.normal(0, 0.20, size=40)terskel = 0.50  # @param 0.05..0.95 0.05y_pred = (score >= terskel).astype(int) tp = np.sum((y_true == 1) & (y_pred == 1))fn = np.sum((y_true == 1) & (y_pred == 0))fp = np.sum((y_true == 0) & (y_pred == 1))tn = np.sum((y_true == 0) & (y_pred == 0)) precision = tp / (tp + fp) if tp + fp else 0.0recall = tp / (tp + fn)specificity = tn / (tn + fp)f1 = 2 * precision * recall / (precision + recall) if precision + recall else 0.0 print(f"TP={tp}  FN={fn}  FP={fp}  TN={tn}")print(f"precision={precision:.3f}  recall={recall:.3f}")print(f"specificity={specificity:.3f}  F1={f1:.3f}")

Prøv: Dra terskel og se «TP», «FN», «FP» og «TN» flytte seg, og «precision» og «recall» gå hver sin vei.

Kode

ROC-kurve og AUC med scikit-learn

Python
import numpy as npimport matplotlib.pyplot as pltfrom sklearn.metrics import roc_auc_score, roc_curve rng = np.random.default_rng(5)avstand = 1.5  # @param 0..3 0.1y = np.r_[np.zeros(60, dtype=int), np.ones(40, dtype=int)]score = rng.normal(0, 1, y.size) + avstand * y   # de positive ligger «avstand» høyere fpr, tpr, terskler = roc_curve(y, score)pos, neg = score[y == 1], score[y == 0]print(f"roc_auc_score           = {roc_auc_score(y, score):.3f}")print(f"andel par der pos > neg = {np.mean(pos[:, None] > neg[None, :]):.3f}") plt.figure()plt.plot(fpr, tpr, label=f"ROC, avstand {avstand}")plt.plot([0, 1], [0, 1], label="tilfeldig rangering")plt.xlabel("FPR (andel falske alarmer)")plt.ylabel("TPR (recall)")plt.legend()plt.tight_layout()plt.show()

Prøv: Dra avstand fra 0 til 3 og se ROC-kurven løfte seg fra diagonalen mens «roc_auc_score» går fra 0,5 mot 1.

Læringsmål

Hva du skal kunne etter å ha lest kapittelet.

  1. 01Fyll ut en forvirringsmatrise fra en tekstbeskrivelse og regn ut accuracy, precision, recall, specificity og F1
  2. 02Velg metrikk ut fra hva falske negative og falske positive koster
  3. 03Forklar hvorfor en lavere terskel flytter modellen opp og mot høyre langs ROC-kurven
  4. 04Regn ut ROC-punkter (FPR, TPR) fra forvirringsmatriser ved to terskler
  5. 05Regn ut AUC ved å telle positiv–negativ-par, og forklar hvorfor AUC ikke er accuracy
  6. 06Tolk en PR-kurve og forklar når den er mer informativ enn ROC