D· AI-utvecklareklassisk-ml· ca 45 min· grundläggande — ändras sällan· verifierad 2026-09-20
Precision, recall, F1 och ROC
Kunna välja rätt mått, läsa förväxlingsmatris och ROC-kurva.
Förkunskaper
Intuition
Träffsäkerhet ljuger vid obalanserade klasser: 1 % sjuka → «alla friska» ger 99 %.
Förväxlingsmatris: TP (rätt positiv), FP (falskt alarm), FN (missad), TN.
- Precision = TP / (TP + FP): av dem vi larmade om, hur många var rätt?
- Recall = TP / (TP + FN): av alla sjuka, hur många hittade vi?
- F1 = harmoniskt medel av de två.
Cancerscreening: missa ingen → hög recall. Spamfilter: kasta inte viktig post → hög precision. Måttet ska följa kostnaden för felet.
Kod
from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score, roc_auc_score
y_true = [1, 1, 1, 1, 0, 0, 0, 0, 0, 0]
y_pred = [1, 1, 1, 0, 1, 0, 0, 0, 0, 0]
print(confusion_matrix(y_true, y_pred)) # [[5 1] [1 3]] → TN=5 FP=1 FN=1 TP=3
print(precision_score(y_true, y_pred)) # 0.75
print(recall_score(y_true, y_pred)) # 0.75
print(f1_score(y_true, y_pred)) # 0.75
p = [0.9, 0.8, 0.7, 0.4, 0.6, 0.3, 0.2, 0.1, 0.05, 0.35] # sannolikheter
print(roc_auc_score(y_true, p)) # 0.83 — oberoende av tröskel
ROC-kurvan ritar recall mot falsk-positiv-andel för alla trösklar. AUC = 0,5 är slump, 1,0 perfekt. Vid stark obalans: titta hellre på precision–recall-kurvan.
Behärskning innebär
- Räknar precision, recall och F1 ur en förväxlingsmatris
- Väljer mått efter kostnaden för olika fel
- Läser en ROC-kurva och AUC
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- scikit-learn User Guide (BSD-3) — BSD-3-Clause
- Wikipedia — Precision and recall (CC BY-SA 4.0) — CC BY-SA 4.0