Begreper & referanser
Alle nøkkelbegrepene, formlene og referansene fra Evaluering og modellvalg, 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.
At modellen lærer detaljer og støy i treningsdata så godt at ytelsen på nye data blir dårligere.
En prosedyre som roterer hvilken fold som validerer modellen, slik at flere observasjoner bidrar til ytelsesestimatet.
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.
Gjennomsnittlig kryssvalideringsscore
Ved -fold kryssvalidering oppsummeres valideringsresultatene fra de foldene.
Kodesnutter
Kodesnutter fra kapittelet, vist literal.
Metrikker fra fire tellinger
import numpy as np rng = np.random.default_rng(4172)y_true = rng.integers(0, 2, size=40)score = 0.25 + 0.55 * y_true + rng.normal(0, 0.22, size=40)y_pred = (score >= 0.50).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) if tp + fn else 0.0specificity = tn / (tn + fp) if tn + fp else 0.0 print({"TP": tp, "FN": fn, "FP": fp, "TN": tn})print(f"precision={precision:.3f}, recall={recall:.3f}, specificity={specificity:.3f}")Alle klassifikasjonsmetrikkene bygges fra de samme fire tellingene. Betingelsene i nevnerne gjør også kanttilfeller synlige.
Lekkasjefri kryssvalidering med pipeline
import numpy as npfrom sklearn.linear_model import LogisticRegressionfrom sklearn.model_selection import StratifiedKFold, cross_val_scorefrom sklearn.pipeline import make_pipelinefrom sklearn.preprocessing import StandardScaler rng = np.random.default_rng(4172)X = rng.normal(size=(180, 4))y = (1.1 * X[:, 0] - 0.7 * X[:, 1] + rng.normal(0, 0.8, 180) > 0).astype(int) modell = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))folder = StratifiedKFold(n_splits=5, shuffle=True, random_state=4172)score = cross_val_score(modell, X, y, cv=folder, scoring="roc_auc") print("AUC per fold:", np.round(score, 3))print(f"gjennomsnitt={score.mean():.3f}, spredning={score.std(ddof=1):.3f}")StandardScaler tilpasses bare treningsdelen i hver fold fordi den ligger inne i pipelinen. Fast seed gjør både data og foldfordeling reproduserbar.
Læringsmål
Hva du skal kunne etter å ha lest kapittelet.
- 01Bygge en confusion matrix og beregne accuracy, precision, recall, specificity og F1
- 02Forklare hvordan beslutningsterskelen flytter TPR og FPR langs en ROC-kurve
- 03Tolke AUC som rangeringsevne og beskrive hva AUC ikke måler
- 04Skille trening, validering og test og oppdage lekkasje i en evalueringsflyt
- 05Gjennomføre lekkasjefri kryssvalidering og tolke gjennomsnitt og variasjon
- 06Diagnostisere under- og overtilpasning fra trenings- og valideringsresultater