Приведи пример использования метрики recall
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Пример использования метрики 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) — для задач, где пропуск положительного класса дорогой.
Практические рекомендации:
- Медицина, safety → Recall > 95%
- Мошенничество → Recall > 90%
- Производство → Recall > 95%
- Рекомендации → Precision важнее
- Выбирай метрику на основе бизнес-стоимости ошибок
Всегда выбирай правильную метрику. Модель может выглядеть хорошо на данных, но в production пропускать критичные случаи.