Что такое recall (полнота)?

«Что такое recall (полнота)?» — вопрос из категории Метрики и функции потерь, который задают на 48% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Recall (полнота или чувствительность) — это метрика классификации, которая отвечает на вопрос: «Какую долю всех реальных положительных объектов модель смогла правильно обнаружить?».

Формула: [ Recall = frac{TP}{TP + FN} ] где:

  • TP (True Positive) — верно предсказанные положительные классы.
  • FN (False Negative) — ложноотрицательные, т.е. реальные положительные объекты, которые модель пропустила (ошибка 2-го рода).

Практический пример: В задаче поиска дефектных товаров на производстве, если в партии из 1000 единиц брака действительно 50, а наша система нашла только 40 из них, то recall = 40/50 = 0.8. Мы пропустили 10 бракованных товаров (FN).

Код для расчета:

from sklearn.metrics import recall_score

# Пример: диагностика заболевания
y_true = [1, 0, 1, 1, 0, 1]  # 4 больных пациента
# Модель предсказала 3-го пациента здоровым (FN)
y_pred = [1, 0, 0, 1, 0, 1]

recall = recall_score(y_true, y_pred)
print(f'Recall: {recall:.2f}') # 0.75 (3 TP из 4 реальных положительных)

Когда recall критически важен? В задачах, где пропуск положительного случая (FN) имеет высокую стоимость:

  • Скрининг заболеваний: Пропустить больного пациента — опасная ошибка.
  • Поиск угроз безопасности: Не обнаружить реальную угрозу.
  • Поисковые системы: Пользователь хочет найти все релевантные документы.

Для повышения recall часто приходится жертвовать precision, снижая порог классификации. Это приводит к увеличению FP (ложных срабатываний). Оптимальный баланс между precision и recall определяется бизнес-требованиями и часто оценивается с помощью F1-score (среднее гармоническое) или Precision-Recall кривой.