Recall (полнота) — это метрика, которая показывает, какую долю всех реально положительных объектов наша модель смогла правильно найти и идентифицировать.
Проще говоря:
Recall отвечает на вопрос: “Из всех существующих больных/мошенников/спам-писем, сколько процентов мы нашли?”
Формула
Recall = True Positives (TP) / (True Positives (TP) + False Negatives (FN))
Или, если еще проще:
Recall = (Число верно найденных “положительных”) / (Всего реально “положительных” в данных)
Смысл на интуитивном уровне
Recall — это метрика “охвата” или “чувствительности”. Высокий Recall означает, что модель пропускает очень мало реальных положительных случаев.
Вопрос, на который отвечает Recall: “Мы не пропускаем ли слишком много того, что ищем?”
Классический пример: Поиск преступников по базе
Представьте, что полиция ищет 10 преступников в городе с помощью системы распознавания лиц.
- True Positive (TP): Система верно опознала преступника. (Правильное обнаружение)
- False Negative (FN): Система не узнала преступника, который был перед камерой. (Пропуск цели)
Рассчитаем Recall:
- Recall = TP / (TP + FN)
Сценарий:
- Всего реальных преступников: 10 человек.
- Система распознавания лиц:
- Верно опознала 8 преступников (TP = 8).
- Пропустила 2 преступников (FN = 2). Они прошли мимо камер, но система их не узнала.
Recall = 8 / (8 + 2) = 8 / 10 = 0.8 (или 80%)
Вывод: Наша система нашла 80% от всех реально разыскиваемых преступников. Это и есть Recall.
Recall vs. Precision: Компромисс (Trade-off)
Чтобы понять Recall до конца, его всегда нужно сравнивать с Precision.
| Метрика | Вопрос | На что делает упор? |
|---|---|---|
| Recall (Полнота) | Какую долю реальных “да” мы нашли? | Полнота охвата. Минимизация False Negatives (FN). |
| Precision (Точность) | Насколько мы точны, когда предсказываем “да”? | Качество прогнозов. Минимизация False Positives (FP). |
Давайте вернемся к примеру с преступниками. Что, если мы хотим повысить Recall до 100%? Мы можем настроить систему так, чтобы она “кричала” на каждого, кто хоть каплю похож на преступника.
- Мы найдем всех 10 преступников (Recall = 100%!).
- Но при этом мы также задержим 1000 невинных людей, которые случайно оказались похожи (очень высокий FP).
В этом случае наш Precision будет ужасным, потому что среди всех срабатываний системы (1010) только 10 будут верными.
Высокий Recall = “Лучше ложная тревога, чем пропустить цель”. Мы пытаемся захватить как можно больше реальных положительных случаев, даже ценой ложных срабатываний.
Пример, где важен высокий Recall
Задача: Диагностика тяжелого заболевания (например, рака).
- Положительный класс: Болен.
- Отрицательный класс: Здоров.
False Negative (FN) в этой задаче — это пропустить болезнь у больного человека. Это смертельно опасно, так как человек не получит необходимое лечение.
False Positive (FP) — это сказать здоровому человеку, что он болен. Это приведет к стрессу и дополнительным обследованиям, но это — меньшая из зол.
Какую метрику максимизировать? В такой ситуации врачи стремятся к высокому Recall. Они хотят найти ВСЕХ больных. Они готовы к тому, что некоторые здоровые люди пройдут через дополнительные тесты (пожертвовать Precision), но они не могут позволить себе пропустить больного.
Когда использовать Recall?
Recall — ваша ключевая метрика, когда цена False Negative (пропуска цели) очень высока.
Примеры задач:
- Медицинская диагностика: Пропустить серьезное заболевание у пациента.
- Поиск мошеннических транзакций: Пропустить мошенническую операцию, что приведет к прямым финансовым потерям.
- Контроль качества на производстве: Пропустить бракованную деталь, которая может вывести из строя весь продукт.
- Поисковые системы: Пропустить релевантный документ по запросу пользователя (пользователь не найдет то, что искал).
Краткий итог
- Recall — это доля истинных положительных срабатываний среди всех реально положительных случаев в данных.
- Она измеряет способность модели находить все нужные объекты.
- Высокий Recall важен, когда пропуск цели (False Negative) недопустим или очень дорог.
- Всегда существует компромисс (trade-off) между Recall и Precision. Невозможно максимизировать обе метрики одновременно без компромисса. Часто для поиска баланса используют F1-меру.