← Назад к вопросам

Приведи пример использования метрики recall

1.0 Junior🔥 181 комментариев
#Машинное обучение#Метрики и оценка моделей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Пример использования метрики Recall

Recall (полнота) — метрика для задач, где пропуск положительного класса дорогой.

Что такое Recall?

Recall = TP / (TP + FN)

TP — модель верно предсказала «1»
FN — модель ошибочно предсказала «0», хотя было «1»

Recall отвечает: «Какой процент ВСЕ РЕАЛЬНЫХ позитивных примеров мы нашли?»

Пример 1: Медицинская диагностика (рак)

Это КЛАССИЧЕСКИЙ пример, где Recall критичен.

from sklearn.metrics import recall_score

# 1000 пациентов, у 50 рак
y_true = np.zeros(1000)
y_true[:50] = 1

# Модель предсказывает (нашла 40 из 50)
y_pred = np.zeros(1000)
y_pred[:40] = 1
y_pred[100:110] = 1  # и 10 здоровых ошибочно

recall = recall_score(y_true, y_pred)
print(f"Recall: {recall:.2%}")  # 0.80 (40 из 50)

Ваша модель пропустила 10 случаев рака. Люди с раком не получат лечение!

Правильная стратегия: понижаем threshold, чтобы recall > 0.95. Будет больше False Positives (лишние проверки), но это приемлемо в медицине.

Пример 2: Обнаружение мошенничества

# 10000 транзакций, 100 мошеннических
y_true = np.zeros(10000)
y_true[:100] = 1

# Модель обнаружила 85 из 100
y_pred = np.zeros(10000)
y_pred[:85] = 1
y_pred[100:150] = 1  # и 50 ложных срабатываний

recall = recall_score(y_true, y_pred)  # 0.85
precision = precision_score(y_true, y_pred)  # 0.63

Мы упустили 15 мошеннических транзакций, но правильно обнаружили 85. Высокий Recall критичен для безопасности.

Пример 3: Спам-фильтр (противоположный случай)

# 1000 писем, 100 спама
y_true = np.zeros(1000)
y_true[:100] = 1

# Модель предсказывает
y_pred = np.zeros(1000)
y_pred[:95] = 1  # обнаружила 95 спама
y_pred[100:115] = 1  # но 15 легитимных в спаме

recall = recall_score(y_true, y_pred)  # 0.95
precision = precision_score(y_true, y_pred)  # 0.86

В спам-фильтре Precision часто важнее! Потеря важного письма хуже, чем 5 спамов в inbox.

Пример 4: Дефекты на производстве

# 10000 товаров, 200 дефектных
y_true = np.zeros(10000)
y_true[:200] = 1

y_pred = np.zeros(10000)
y_pred[:180] = 1  # обнаружил 180 из 200
y_pred[200:270] = 1  # и 70 ложных срабатываний

recall = recall_score(y_true, y_pred)  # 0.90

Упустили 20 дефектных товаров. Они дойдут до клиента! Повышаем recall до 0.95-0.98.

Когда использовать Recall?

ЗадачаRecall важна?Причина
Медицинская диагностикаДА (>95%)FN = смерть
Обнаружение мошенничестваДА (>90%)FN = потери
Дефекты на производствеДА (>95%)FN = брак клиенту
Спам-фильтрНЕТFP хуже
РекомендацииНЕТFP не важна

Резюме

Recall = TP / (TP + FN) — для задач, где пропуск положительного класса дорогой.

Практические рекомендации:

  1. Медицина, safety → Recall > 95%
  2. Мошенничество → Recall > 90%
  3. Производство → Recall > 95%
  4. Рекомендации → Precision важнее
  5. Выбирай метрику на основе бизнес-стоимости ошибок

Всегда выбирай правильную метрику. Модель может выглядеть хорошо на данных, но в production пропускать критичные случаи.