Когда важен recall?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Когда важен Recall?
Это фундаментальный вопрос в ML, потому что выбор между recall и precision кардинально меняет подход. Recall важен в совсем других сценариях, чем precision.
Определение Recall
Recall (полнота) — это доля правильно предсказанных позитивных примеров от всех позитивных примеров:
Recall = TP / (TP + FN)
TP = True Positives (правильно предсказали да)
FN = False Negatives (не предсказали да, хотя нужно было)
Простой пример: если есть 100 больных пациентов и модель нашла 90, то recall = 90%.
Когда Recall критичен
1. Медицинская диагностика Пропустить болезнь опаснее, чем ложно-положительный результат:
- Обнаружение рака: recall > 95%
- Обнаружение инфекции в анализах: recall > 99%
- Безопасность пациентов важнее ложных тревог
2. Безопасность и fraud detection Пропустить мошенника дороже, чем заблокировать честного пользователя:
- Обнаружение кредитных мошенничеств: recall > 90%
- Детектирование вирусов в файлах: recall > 99%
- Спам-фильтры в email: recall > 85%
3. Рекомендационные системы (контекст зависит!)
Если пользователю нужно найти хоть что-то полезное:
- YouTube: recall > precision
- Поиск в документах: recall > precision
- Job recommendations: recall > precision
4. Дефектная продукция Пропустить брак опаснее, чем отклонить хороший товар:
- Батарейки с дефектом: recall > 99%
- Авиационные компоненты: recall > 99.9%
- Пищевая промышленность: recall > 95%
5. Поиск преступников и безопасность
- CCTV распознавание лиц: recall > 90%
- Обнаружение террористических угроз: recall > 99%
- Контроль на границе: recall > 95%
Когда Precision важнее
1. Email рассылка и маркетинг Пусть немного людей не получат письмо, но спама не будет:
- Фильтр spam: precision > recall
- Email рассылка: precision > recall
2. Product recommendations Лучше ничего не предложить, чем что-то не релевантное:
- Премиум-сегмент Amazon: precision > recall
- Персональные предложения: precision > recall
3. Hiring decisions Пусть потеряешь кандидатов, но наймёшь хороших:
- HR фильтры: precision > recall
Как оптимизировать Recall
Если нужен высокий recall, понизь threshold:
from sklearn.metrics import precision_recall_curve
import numpy as np
y_pred_proba = model.predict_proba(X_test)[:, 1]
precisions, recalls, thresholds = precision_recall_curve(y_true, y_pred_proba)
idx = np.where(recalls >= 0.95)[0][0]
optimal_threshold = thresholds[idx]
y_pred_optimized = (y_pred_proba >= optimal_threshold).astype(int)
print(f'Recall: {recall_score(y_true, y_pred_optimized)}')
Результат: recall подпрыгнет на 95%+, но precision упадёт. Это нормально — нам нужны все позитивные примеры, даже ценой ложных срабатываний.
F1 Score и F2 Score
Когда нужен баланс или уклон в сторону recall:
from sklearn.metrics import f1_score, fbeta_score
f1 = f1_score(y_true, y_pred)
f2 = fbeta_score(y_true, y_pred, beta=2) # уклон в recall
f_half = fbeta_score(y_true, y_pred, beta=0.5) # уклон в precision
Вывод
Recall важен когда:
- Стоимость False Negative >> стоимости False Positive
- Примеры: медицина, fraud, безопасность, поиск
Precision важен когда:
- Стоимость False Positive >> стоимости False Negative
- Примеры: спам-фильтр, hiring, премиум-рекомендации