04 · Ocena · 3 min czytania · Interaktywne · aktualizacja
Czym jest recall i czym różni się od precyzji?
W skrócie
Recall (czułość) to odsetek prawdziwych przykładów danej klasy, które model rozpoznał. Fałszywe alarmy mierzy precyzja. Średnia recalli to balanced accuracy.
Co to jest
Recall klasy k (czułość, sensitivity, true positive rate) to liczba przykładów klasy k poprawnie rozpoznanych przez model podzielona przez liczbę wszystkich prawdziwych przykładów tej klasy. Odpowiada na pytanie „ile z tego, co było, znaleźliśmy?”.
Precyzja odpowiada na pytanie odwrotne: „ile z tego, co wskazaliśmy, było prawdą?”. Obie metryki czyta się z macierzy pomyłek i stosuje do każdego klasyfikatora — od regresji logistycznej po duże modele językowe oceniane jako wyszukiwarki.
Mechanizm — dlaczego tak działa
Macierz pomyłek dla klasy k ma cztery pola: prawdziwie dodatnie TP (było k, model mówi k), fałszywie ujemne FN (było k, model mówi co innego), fałszywie dodatnie FP (nie było k, model mówi k) i prawdziwie ujemne TN. Recall = TP / (TP + FN): mianownik to wszystkie prawdziwe przypadki k, więc recall nie zależy od tego, ile razy model powiedział „k” niepotrzebnie. Precyzja = TP / (TP + FP): mianownik to wszystkie wskazania modelu.
Obie metryki ciągną w przeciwne strony przez próg decyzji. Obniżając próg dla klasy k, model częściej mówi „k”: recall rośnie, bo łapie więcej prawdziwych przypadków, a precyzja zwykle spada, bo łapie też więcej fałszywych. W granicy „zawsze k” recall wynosi 1, a precyzja równa się częstości klasy. Krzywa precyzja–recall pokazuje wszystkie kompromisy naraz, a F1 = 2·P·R / (P + R) to ich średnia harmoniczna, karząca bardziej słabszą z dwóch wartości.
Recall jest miarą „na klasę”, dlatego dobrze znosi niezbalansowanie: dla klasy stanowiącej 2% danych accuracy 98% może oznaczać recall 0. Z tego powodu balanced accuracy to po prostu średnia recalli po klasach — jedna liczba, w której rzadka klasa waży tyle, co częsta.
Zastrzeżenie: recall liczony na kilkunastu przykładach rzadkiej klasy ma duży błąd — jedna pomyłka na 20 przypadków to 5 punktów procentowych. Przy porównywaniu modeli na małej klasie potrzebne są przedziały ufności albo walidacja krzyżowa.
Na przykładzie
Breast Cancer Wisconsin: regresja logistyczna na 30 standaryzowanych cechach, trening na 70% danych, test na 171 guzach, w tym 64 złośliwych (random_state=0). Klasą „pozytywną” są guzy złośliwe. Przy domyślnym progu 0,5 model wykrył 60 z 64 złośliwych (FN = 4) i wszczął 4 fałszywe alarmy: recall 0,94, precyzja 0,94.
Obniżenie progu do 0,3 dało 61 wykrytych (recall 0,95) przy 10 fałszywych alarmach (precyzja 0,86), a próg 0,1 — 63 z 64 (recall 0,98) przy 14 fałszywych alarmach (precyzja 0,82). Model się nie zmienił, zmieniła się tylko reguła decyzji. Skrajność: „wszystko złośliwe” daje recall 1,00 przy precyzji 0,37, czyli równej udziałowi guzów złośliwych w teście.
Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)
W praktyce
- scikit-learn:
recall_score(y_true, y_pred, average=None)zwraca recall każdej klasy;classification_reportpodaje precyzję, recall i F1 razem;confusion_matrixpokazuje surowe liczby. - Wybór między recallem a precyzją to decyzja o kosztach: w badaniach przesiewowych i wykrywaniu oszustw liczy się recall, w rekomendacjach i filtrach spamu — precyzja.
- Recall zależy od progu; porównuj modele przy ustalonym progu albo metrykami niezależnymi od progu (
roc_auc_score,average_precision_score). - W wyszukiwaniu i systemach RAG recall@k to odsetek trafnych dokumentów wśród k zwróconych względem wszystkich trafnych.
- Typowy błąd: maksymalizowanie recallu bez patrzenia na precyzję — model „zawsze tak” ma recall 100%.
Najczęstsze pytania
- Czym różni się recall od precyzji?
- Recall mówi, ile prawdziwych przykładów klasy model znalazł (TP / wszystkie prawdziwe). Precyzja mówi, ile wskazań modelu było trafnych (TP / wszystkie wskazane). Recall ignoruje fałszywe alarmy, precyzja ignoruje przeoczenia, a poprawa jednej zwykle psuje drugą.
- Kiedy recall jest ważniejszy od precyzji?
- Gdy przeoczenie kosztuje więcej niż fałszywy alarm: badania przesiewowe, wykrywanie wad produkcyjnych, oszustw, zagrożeń. Wtedy obniża się próg decyzji i akceptuje więcej fałszywych alarmów, które sprawdzi człowiek albo drugi, dokładniejszy model.
- Co to jest recall w klasyfikacji wieloklasowej?
- Liczy się go osobno dla każdej klasy (jedna klasa przeciw reszcie). Uśrednienie po klasach z równą wagą (macro) daje balanced accuracy; uśrednienie ważone licznością klas (weighted) daje dokładnie zwykłą accuracy.
Źródła
- Géron, A. (2022). Hands-On Machine Learning, 3rd ed., O'Reilly, rozdz. 3 "Classification" (confusion matrix, precision and recall, the precision/recall trade-off).
- Murphy, K. P. (2022). Probabilistic Machine Learning: An Introduction, MIT Press, rozdz. 5.1 (ocena klasyfikatorów, krzywe ROC i PR). https://probml.github.io/pml-book/book1.html
- Powers, D. M. W. (2011). "Evaluation: from precision, recall and F-measure to ROC, informedness, markedness and correlation". Journal of Machine Learning Technologies 2(1), 37–63.
- scikit-learn: "Precision, recall and F-measures". https://scikit-learn.org/stable/modules/model_evaluation.html#precision-recall-and-f-measures