Источник
Precision и recall на пальцах
Исходный пост, на котором основана эта глава.
Precision и recall показывают разные стороны качества классификатора. Precision отвечает за качество позитивных срабатываний, recall - за полноту обнаружения. В реальных системах почти всегда приходится выбирать компромисс между этими метриками.
Формулы на простом языке
Precision (точность)
Из всего, что модель пометила как positive, сколько действительно positive.
Precision = TP / (TP + FP)
Recall (полнота)
Из всех реально positive, сколько модель смогла найти.
Recall = TP / (TP + FN)
Визуализация: Вася, овцы и волк
Вася держит баланс между ложными тревогами и пропущенными волками.
TP
17
Вася крикнул и волк реально был
FP
10
Ложная тревога: «волк», но это не волк
FN
13
Волк был, но Вася промолчал
TN
60
Тишина и волка действительно нет
Метрики при текущем пороге
Где что важнее
Code review ассистент
Precision: Высокая | Recall: Средняя
Ложные тревоги быстро приводят к усталости и игнорированию рекомендаций.
Медицинский скрининг
Precision: Средняя | Recall: Очень высокая
Критично не пропустить реальные случаи заболевания (FN дороже FP).
Антифрод в платежах
Precision: Высокая | Recall: Высокая
Нужно балансировать: не блокировать лишние транзакции и не пропускать мошенничество.
Практические рекомендации
Всегда фиксируй цену FP и FN для конкретного продукта до выбора порога.
Показывай precision/recall вместе с confusion matrix, а не в отрыве друг от друга.
Проверяй метрики отдельно по сегментам (клиенты, типы данных, языки), чтобы не скрывать деградацию.
Для review-ассистентов чаще выгодно держать precision выше, чтобы сохранить доверие пользователей.
Типичные ошибки
Смотреть только на accuracy при сильном дисбалансе классов.
Сравнивать модели по precision без контроля recall (и наоборот).
Фиксировать порог один раз и не пересматривать его после изменения данных.
Игнорировать пользовательскую реакцию на ложные срабатывания в продакшене.
