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.
Begreper
Sentrale begreper fra kapittelet med korte definisjoner.
En tabell som deler prediksjonene i true positive, false positive, true negative og false negative.
Andelen av alle faktiske negative tilfeller som modellen avviser korrekt.
En terskelkurve som viser true positive rate mot false positive rate.
Arealet under ROC-kurven og et terskeluavhengig mål på modellens rangeringsevne.
Andelen av alle eksempler som klassifiseres riktig, . Lett å tolke, men misvisende når klassene er ubalanserte eller feiltypene har ulik kostnad.
Det harmoniske gjennomsnittet av precision og recall. Blir lav så snart én av dem er lav, og tar ikke hensyn til sanne negative.
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.
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 er andelen observasjoner som klassifiseres riktig.
Precision
Precision svarer på hvor mange av de positive prediksjonene som faktisk er positive.
Recall
Recall svarer på hvor mange av de faktiske positive tilfellene modellen finner.
Specificity
Specificity er andelen faktiske negative tilfeller modellen avviser korrekt.
F1-score
F1 er det harmoniske gjennomsnittet av precision og recall og blir lav hvis én av dem er lav.
False positive rate
FPR er andelen faktiske negative tilfeller som feilaktig blir klassifisert positive.
Trapesbidrag til AUC
Arealet under en ROC-kurve kan estimeres ved å summere trapeser mellom naboterskler.
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.
Kodesnutter
Kodesnutter fra kapittelet, vist literal.
Metrikker fra fire tellinger
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.
ROC-kurve og AUC med scikit-learn
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.
- 01Fyll ut en forvirringsmatrise fra en tekstbeskrivelse og regn ut accuracy, precision, recall, specificity og F1
- 02Velg metrikk ut fra hva falske negative og falske positive koster
- 03Forklar hvorfor en lavere terskel flytter modellen opp og mot høyre langs ROC-kurven
- 04Regn ut ROC-punkter (FPR, TPR) fra forvirringsmatriser ved to terskler
- 05Regn ut AUC ved å telle positiv–negativ-par, og forklar hvorfor AUC ikke er accuracy
- 06Tolk en PR-kurve og forklar når den er mer informativ enn ROC