Dlaczego metryki oceny są kluczowe?
Wybór odpowiedniej metryki oceny modelu to jedna z najważniejszych decyzji w projekcie uczenia maszynowego. Zła metryka prowadzi do złego modelu — model optymalizowany pod niewłaściwą miarę może być bezużyteczny w praktyce, mimo „dobrych" wyników liczbowych.
Przykład: model wykrywania oszustw kartowych. Oszustwa stanowią 0.1% transakcji. Model, który zawsze mówi „nie-oszustwo", ma accuracy 99.9% — ale jest bezużyteczny, bo nie wykrywa żadnego oszustwa. Potrzebna jest metryka wrażliwa na klasę mniejszościową.
Macierz konfuzji (Confusion Matrix)
Macierz konfuzji to podstawowe narzędzie oceny klasyfikatora binarnego. Dla klas Pozytywna (P) i Negatywna (N):
| Predykcja: P | Predykcja: N | |
|---|---|---|
| Rzeczywistość: P | TP (True Positive) | FN (False Negative) |
| Rzeczywistość: N | FP (False Positive) | TN (True Negative) |
- TP — poprawnie wykryta klasa pozytywna (trafienie)
- TN — poprawnie wykryta klasa negatywna
- FP — fałszywy alarm (model mówi P, jest N) — błąd I typu
- FN — pominięcie (model mówi N, jest P) — błąd II typu
Z tych czterech wartości wyprowadzamy wszystkie kluczowe metryki.
Metryki klasyfikacji
Accuracy (Dokładność)
Accuracy = (TP + TN) / (TP + TN + FP + FN)
Procent poprawnych predykcji wśród wszystkich. Intuicyjna, ale myląca przy niezbalansowanych klasach — jak w przykładzie z oszustwami (99.9% accuracy modelu trywialnego).
Kiedy stosować: klasy zbalansowane (≈50/50), oba typy błędów równie kosztowne.
Precision (Precyzja)
Precision = TP / (TP + FP)
„Spośród wszystkich, które model oznaczy jako pozytywne, jaki procent faktycznie jest pozytywny?" Wysoka precyzja = mało fałszywych alarmów.
Kiedy priorytetem: Koszt fałszywego alarmu jest wysoki. Przykład: filtr spamu (FP = ważny email w spamie — poważna konsekwencja).
Recall (Czułość, Sensitivity, TPR)
Recall = TP / (TP + FN)
„Spośród wszystkich faktycznie pozytywnych, jaki procent model wykrywa?" Wysoki recall = mało pominięć.
Kiedy priorytetem: Koszt pominięcia jest wysoki. Przykład: diagnostyka raka (FN = niewykryty rak — zagrożenie życia).
Precyzja vs. Recall — trade-off
Precyzja i recall są w konflikcie: zwiększenie jednej zazwyczaj zmniejsza drugą. Model agresywny (niski próg, więcej predykcji P) ma wysoki recall, ale niską precyzję (wiele FP). Model konserwatywny (wysoki próg) ma wysoką precyzję, ale niski recall (wiele FN).
F1-Score
F1 = 2 · (Precision · Recall) / (Precision + Recall)
Średnia harmoniczna precyzji i recall. F1 jest wysoki tylko wtedy, gdy obie metryki są wysokie. F1 = 0 gdy precision = 0 lub recall = 0.
Kiedy stosować: Potrzebny balans między precyzją a recall; klasy niezbalansowane (F1 jest lepszy niż accuracy).
F-beta Score
Fβ = (1 + β²) · (Precision · Recall) / (β² · Precision + Recall)
Uogólnienie F1 z parametrem β kontrolującym ważność recall vs. precyzji:
- β = 1 → F1 (równowaga)
- β = 2 → F2 (recall 2x ważniejszy — preferowane w diagnostyce medycznej)
- β = 0.5 → F0.5 (precyzja 2x ważniejsza — preferowane w filtrach spamu)
Krzywa ROC i AUC
ROC (Receiver Operating Characteristic)
Krzywa ROC przedstawia zależność TPR (True Positive Rate = Recall) od FPR (False Positive Rate = FP/(FP+TN)) dla różnych progów decyzyjnych.
- Punkt (0, 0) — próg = 1, model nic nie klasyfikuje jako P
- Punkt (1, 1) — próg = 0, model wszystko klasyfikuje jako P
- Linia przekątna — losowy klasyfikator
- Idealny klasyfikator — punkt (0, 1) i krzywa biegnąca wzdłuż lewego i górnego brzegu
AUC (Area Under Curve)
AUC to pole pod krzywą ROC. Interpretacja: prawdopodobieństwo, że model przypisze wyższy score losowo wybranej próbce pozytywnej niż losowo wybranej negatywnej.
- AUC = 1.0 — idealny klasyfikator
- AUC = 0.5 — losowy klasyfikator
- AUC < 0.5 — gorszy niż losowy (odwróć predykcje!)
AUC jest niezależne od progu decyzyjnego — mierzy zdolność modelu do rankingu (odróżniania) klas, nie konkretną trafność przy danym progu.
Precision-Recall Curve
Przy silnie niezbalansowanych klasach krzywa ROC może być zbyt optymistyczna (duży TN zawyża wynik). Krzywa Precision-Recall jest wrażliwsza na klasę mniejszościową:
- Oś X: Recall
- Oś Y: Precision
- AUC-PR (Average Precision) — lepszy miernik przy niezbalansowanych danych
Metryki wieloklasowe
Dla K > 2 klas, metryki binarne uogólnia się na dwa sposoby:
Macro averaging
Oblicz metrykę dla każdej klasy osobno (traktując ją jako binarną: klasa vs. reszta), uśrednij: F1_macro = (F1_klasa1 + F1_klasa2 + ... + F1_klasaK) / K
Każda klasa ma równą wagę — niezależnie od liczności. Preferowane, gdy ważne są klasy mniejszościowe.
Weighted averaging
Jak macro, ale wagi proporcjonalne do liczności klas: F1_weighted = Σ (nᵢ/N) · F1_klasaᵢ
Uwzględnia niezbalansowanie — klasy liczne mają większy wpływ.
Micro averaging
Sumuj TP, FP, FN globalnie, oblicz metrykę z sum: Precision_micro = ΣTPᵢ / (ΣTPᵢ + ΣFPᵢ)
Micro F1 = accuracy (przy pokrywających się klasach). Preferowane, gdy ważna jest ogólna trafność.
Metryki regresji
MSE (Mean Squared Error)
MSE = (1/N) Σ (yᵢ - ŷᵢ)²
Średnia kwadratów błędów. Karze duże błędy mocniej niż małe (kwadrat). Wrażliwa na outliersy. Jednostka: kwadrat jednostki docelowej.
RMSE (Root Mean Squared Error)
RMSE = √MSE
Pierwiastek z MSE — w tej samej jednostce co zmienna docelowa. Łatwiej interpretowalna: RMSE = 5.2 tys. zł oznacza „średnio model myli się o ~5.2 tys. zł".
MAE (Mean Absolute Error)
MAE = (1/N) Σ |yᵢ - ŷᵢ|
Średnia wartość bezwzględna błędów. Mniej wrażliwa na outliersy niż MSE. Interpretacja bezpośrednia.
R² (Współczynnik determinacji)
R² = 1 - SS_res / SS_tot = 1 - Σ(yᵢ-ŷᵢ)² / Σ(yᵢ-ȳ)²
Procent wariancji wyjaśnionej przez model. R² = 1 → idealne dopasowanie. R² = 0 → model nie lepszy niż średnia. R² < 0 → model gorszy niż średnia. Przydatny do porównań, ale nie mówi o wielkości błędów bezwzględnych.
MAPE (Mean Absolute Percentage Error)
MAPE = (100/N) Σ |yᵢ - ŷᵢ| / |yᵢ|
Średni błąd procentowy. Intuicyjny („model myli się średnio o 3.5%"), ale problematyczny, gdy yᵢ ≈ 0 (dzielenie przez ~0).
Walidacja krzyżowa
K-Fold Cross-Validation
Dane dzielone na K równych części (foldów). Model trenowany na K-1 foldów, testowany na 1. Procedura powtarzana K razy (każdy fold raz jako test). Wynik: średnia ± odchylenie standardowe metryki.
Standardowe k=5 lub k=10. Stratified k-fold zachowuje proporcje klas w każdym foldzie — kluczowe przy niezbalansowanych danych.
Leave-One-Out (LOO)
K = N (każda próbka to osobny fold testowy). Maksymalnie wykorzystuje dane treningowe, ale kosztowna obliczeniowo i daje estymator o wysokiej wariancji.
Time Series Split
Dla danych czasowych: zawsze trenuj na przeszłości, testuj na przyszłości. Standardowe k-fold narusza chronologię i prowadzi do data leakage.
Wybór metryki — podsumowanie praktyczne
| Scenariusz | Metryka |
|---|---|
| Klasy zbalansowane, oba błędy równie kosztowne | Accuracy |
| Klasy niezbalansowane | F1, AUC-PR |
| Koszt FP wysoki (np. spam filter) | Precision, F0.5 |
| Koszt FN wysoki (np. diagnostyka raka) | Recall, F2 |
| Porównanie modeli niezależnie od progu | AUC-ROC |
| Regresja — interpretowalne błędy | RMSE, MAE |
| Regresja — porównanie modeli | R², adjusted R² |
Podsumowanie
Metryki oceny modeli ML to nie formalność — to kompas projektu. Accuracy kłamie przy niezbalansowanych danych, MSE karze outliersy, AUC ignoruje próg. Wybieraj metrykę świadomie, dopasowując ją do kosztów biznesowych obu typów błędów. Jedna liczba rzadko wystarcza — raportuj macierz konfuzji, krzywe ROC/PR i kilka metryk jednocześnie.