04 · Ocena · 4 min czytania · aktualizacja
Precyzja czy recall — co jest ważniejsze i jak wybrać między nimi?
W skrócie
O wyborze między precyzją a recall decyduje koszt błędów: gdy droższe jest przeoczenie, liczy się recall, gdy fałszywy alarm — precyzja. Próg wynika z kosztów.
Co to jest
Ważniejszy jest recall, gdy przeoczenie przypadku pozytywnego kosztuje więcej niż fałszywy alarm (nowotwór, oszustwo, awaria), a precyzja, gdy droższy jest fałszywy alarm (zablokowane konto klienta, niesłuszne oskarżenie, ważny mail w spamie). Nie wybiera się metryki, tylko próg decyzyjny: przy skalibrowanych prawdopodobieństwach optymalny próg to koszt fałszywego alarmu podzielony przez sumę obu kosztów.
Pytanie „precyzja czy recall?” jest więc pytaniem biznesowym albo etycznym, a nie technicznym. Model daje ranking przypadków od najbardziej do najmniej podejrzanych. Próg mówi, gdzie w tym rankingu przestajemy reagować — i tu właśnie wymieniamy jeden rodzaj błędów na drugi.
Trzecia możliwość to sztywny wymóg: „recall co najmniej 95%” w badaniach przesiewowych albo „precyzja co najmniej 90%”, gdy każdy alarm trafia do drogiej ręcznej weryfikacji. Wtedy optymalizujemy drugą metrykę przy spełnionym wymogu.
Mechanizm — dlaczego tak działa
Rachunek kosztów. Niech pomyłka „przeoczony pozytyw” kosztuje C_FN, a „fałszywy alarm” C_FP. Dla przypadku z prawdopodobieństwem p oczekiwany koszt powiedzenia „nie” to p·C_FN, a powiedzenia „tak” — (1 − p)·C_FP. Opłaca się mówić „tak”, gdy p > C_FP / (C_FP + C_FN). Przy równych kosztach próg wynosi 0,5, przy przeoczeniu 5 razy droższym — 1/6 ≈ 0,17, przy 20 razy droższym — 1/21 ≈ 0,05. Ten wzór (Elkan, 2001) działa tylko dla dobrze skalibrowanych prawdopodobieństw.
Dlaczego nie F1? Miara F1 daje precyzji i recall jednakową wagę, czyli zakłada konkretny, rzadko uzasadniony stosunek kosztów. Jest wygodna do porównań, gdy kosztów nie znamy, ale nie powinna zastępować rozmowy o kosztach. Jeśli recall jest β razy ważniejszy, F-beta z odpowiednim β jest lepszym wyborem.
Precyzja zależy od częstości klasy. Recall opisuje model na samych pozytywach, więc nie zmienia się z częstością choroby w populacji. Precyzja miesza oba światy: gdy pozytywy są rzadkie, nawet mały odsetek fałszywych alarmów wśród ogromnej liczby negatywów przewyższa liczbę trafień. Model przeniesiony ze szpitala (dużo chorych) do badań przesiewowych (mało chorych) zachowa recall, ale straci precyzję.
Próg dobiera się na walidacji. Każde dobieranie progu to dopasowanie do danych. Zrobione na zbiorze testowym daje zawyżone wyniki; trzeba je robić na danych walidacyjnych albo przewidywaniach z walidacji krzyżowej, a test zostawić do jednego, końcowego pomiaru.
Na przykładzie
Breast Cancer Wisconsin, klasa pozytywna = guz złośliwy. Regresja logistyczna ze standaryzacją, trening na 426 guzach, test na 143 (53 złośliwe), podział warstwowy random_state=0. Próg minimalizujący koszt wybrałem na przewidywaniach z 5-krotnej walidacji krzyżowej na zbiorze treningowym, a potem sprawdziłem go raz na teście.
| Przeoczenie kosztuje tyle co… | Próg teoretyczny | Próg z walidacji | Precyzja (test) | Recall (test) | Fałszywe alarmy | Przeoczenia |
|---|---|---|---|---|---|---|
| 1 fałszywy alarm | 0,50 | 0,55 | 1,000 | 0,943 | 0 | 3 |
| 5 fałszywych alarmów | 0,17 | 0,39 | 0,944 | 0,962 | 3 | 2 |
| 20 fałszywych alarmów | 0,05 | 0,05 | 0,779 | 1,000 | 15 | 0 |
Przy kosztach 1:1 model nie zgłasza ani jednego fałszywego alarmu, ale przeocza 3 nowotwory. Gdy przeoczenie jest 20 razy droższe, wykrywa wszystkie 53 przypadki za cenę 15 łagodnych guzów skierowanych na dalsze badania. Przy stosunku 5:1 próg z walidacji (0,39) odbiega od teoretycznego (0,17) — przy 426 przypadkach funkcja kosztu jest płaska i kilka przykładów decyduje o wyborze.
Wymóg zamiast kosztów: próg zapewniający recall co najmniej 95% na walidacji (0,55) dał na teście recall 0,943 — wymóg nie został spełniony, bo 53 przypadki testowe to za mało na precyzyjny pomiar. Bezpieczniej było żądać 98% na walidacji: próg 0,09, na teście recall 1,000 i precyzja 0,815.
Częstość klasy: przy progu 0,5 model ma na teście recall 0,962. Gdyby mylił się na 1 z 90 łagodnych guzów (1,1%), precyzja wynosiłaby ok. 0,98 przy 37% złośliwych, 0,91 przy 10%, ale tylko 0,47 przy 1%.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
Reguła wyboru:
- Przeoczenie droższe (diagnostyka, oszustwa, bezpieczeństwo) → priorytet recall, niski próg; alarmy idą do tańszej weryfikacji drugiego stopnia.
- Fałszywy alarm droższy (blokady, kary, automatyczne decyzje bez człowieka) → priorytet precyzja, wysoki próg.
- Znasz koszty → próg
t = C_FP / (C_FP + C_FN)na skalibrowanych prawdopodobieństwach:y_pred = model.predict_proba(X)[:, 1] >= t. - Nie ufasz kalibracji →
TunedThresholdClassifierCV(model, scoring=make_scorer(koszt, greater_is_better=False))(scikit-learn 1.5+) dobiera próg walidacją krzyżową. - Masz wymóg →
precision_recall_curve(y_val, p_val)i wybierz najwyższy próg, przy którym recall ≥ wymóg z zapasem na niepewność pomiaru. - Raportuj obie metryki razem z progiem i częstością klasy w danych testowych.
Najczęstsze pytania
- Czy da się mieć jednocześnie wysoką precyzję i wysoki recall?
- Tak, ale tylko z lepszym modelem albo lepszymi cechami, nie przez przesuwanie progu. Próg wybiera punkt na krzywej precyzja–recall, a lepszy model przesuwa całą krzywą w górę i w prawo.
- Co zrobić, gdy nie znam kosztów błędów?
- Zapytaj o nie właściciela problemu w konkretnej formie: „ile fałszywych alarmów zaakceptujesz, żeby nie przeoczyć jednego przypadku?”. Odpowiedź od razu daje stosunek kosztów. Do tego czasu pokazuj krzywą precyzja–recall zamiast jednej liczby.
- Dlaczego domyślny próg 0,5 bywa zły?
- Bo odpowiada równym kosztom błędów i dobrze skalibrowanym prawdopodobieństwom. Przy rzadkiej klasie, ważeniu klas, resamplingu lub modelach nieskalibrowanych 0,5 nie ma żadnego szczególnego znaczenia.
Źródła
- Elkan C. „The Foundations of Cost-Sensitive Learning”, Proceedings of IJCAI 2001, s. 973–978.
- Géron A. „Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow”, 3rd ed., O’Reilly 2022, rozdz. 3 (Precision/Recall Trade-off).
- Saito T., Rehmsmeier M. „The Precision-Recall Plot Is More Informative than the ROC Plot When Evaluating Binary Classifiers on Imbalanced Datasets”, PLOS ONE 10(3), 2015, e0118432.
- Dokumentacja scikit-learn, „Tuning the decision threshold for class prediction”: https://scikit-learn.org/stable/modules/classification_threshold.html