Что такое recall
Recall (полнота) — это метрика качества классификации в задачах машинного обучения, особенно в бинарной и многоклассовой классификации, которая измеряет долю действительно положительных объектов, корректно распознанных моделью.
📌 Формальное определение
Recall показывает, какую долю всех объектов положительного класса (реальных) модель сумела правильно предсказать.
Формула:
Recall=True PositiveTrue Positive+False Negative\\text{Recall} = \\frac{\\text{True Positive}}{\\text{True Positive} + \\text{False Negative}}
Где:
-
True Positive (TP) — количество объектов положительного класса, которые модель правильно классифицировала как положительные.
-
False Negative (FN) — количество объектов положительного класса, которые модель ошибочно классифицировала как отрицательные.
📊 Пример
Допустим, у вас задача определить больных пациентов на основе анализов:
-
Всего больных: 100 человек
-
Модель правильно определила 90 из них → **TP = 90
** - Модель пропустила 10 больных → **FN = 10
**
Recall=9090+10=0.9 или 90%\\text{Recall} = \\frac{90}{90 + 10} = 0.9 \\text{ или } 90\\%
🔁 Визуальное представление: Матрица ошибок (Confusion Matrix)
Предсказано: Позитив | Предсказано: Негатив | |
---|---|---|
Факт: Позитив | TP | FN |
--- | --- | --- |
Факт: Негатив | FP | TN |
--- | --- | --- |
Recall касается только первой строки (реально положительных случаев): TP / (TP + FN).
🔍 Отличие от precision (точности)
- Precision (точность): доля предсказанных как положительные, которые действительно таковыми являются.
Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP} - Recall (полнота): доля реальных положительных, которые были предсказаны как положительные.
Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
Пример различия:
-
У модели может быть высокая точность (precision), но низкая полнота (recall), если она слишком осторожна и пропускает много истинных положительных примеров.
-
Или наоборот — она может захватывать почти все позитивы (высокий recall), но делать много ошибок (низкий precision).
⚖️ Компромисс между recall и precision
Чтобы сбалансировать эти метрики, часто используют F1-меру:
F1=2⋅precision⋅recallprecision+recallF1 = 2 \\cdot \\frac{\\text{precision} \\cdot \\text{recall}}{\\text{precision} + \\text{recall}}
F1-метрика особенно полезна, когда важно учитывать обе ошибки: и пропущенные положительные, и ложные срабатывания.
🧠 Когда важен высокий Recall
-
В медицине (обнаружение рака, COVID-19): лучше предсказать ложный диагноз, чем пропустить болезнь.
-
В системах безопасности (обнаружение атак, мошенничества).
-
В поисковых системах: лучше показать больше релевантных результатов, даже если некоторые не слишком точные.
📌 Примеры задач с приоритетом recall
-
Распознавание спама: лучше отфильтровать все спам-письма (высокий recall), пусть даже пара полезных писем попадёт в спам.
-
Поиск пропавших детей по фото: лучше выдать больше возможных совпадений, чем пропустить реальное.
-
Сигнализация о пожаре: пусть сработает несколько раз ложная тревога, главное — не пропустить реальный пожар.
🧰 Управление Recall через порог
Многие модели (например, логистическая регрессия, нейросети) предсказывают вероятности, и решение о принадлежности к классу делается с помощью порогового значения (например, 0.5).
-
Уменьшая порог, можно повысить recall, т.к. больше объектов будут классифицированы как положительные.
-
Повышая порог, можно повысить точность, но потерять в полноте.
📈 Визуализация
-
Precision-Recall кривая: показывает, как изменяются precision и recall при варьировании порога.
-
ROC кривая и AUC: также показывают чувствительность (recall) по отношению к специфичности.
🛠 Методы повышения recall
-
Использование алгоритмов с регуляризацией, контролирующей недообучение.
-
Балансировка классов (если один сильно доминирует).
-
Взвешивание классов: penalize ошибки на положительном классе.
-
Data augmentation: расширение обучающей выборки позитивных примеров.
Таким образом, recall — это критически важная метрика в задачах, где цена пропущенного положительного случая высока, даже если это приведёт к увеличению ложных тревог.