Условие
Объясните precision, recall, F1 и ROC-AUC. Когда какая метрика подходит лучше? Что делать, если классы несбалансированы (например, 1% позитивов)?
Решение
Подход
| Predict + | Predict − | |
|---|---|---|
| Actual + | TP | FN |
| Actual − | FP | TN |
- Precision = TP / (TP + FP) — «из тех, кого назвали позитивом, сколько реально позитив». Важно, когда дорог FP (фрод — забанить честного клиента).
- Recall = TP / (TP + FN) — «из всех настоящих позитивов сколько нашли». Важно, когда дорог FN (онкология — пропустить больного).
- F1 — гармоническое среднее precision и recall. Используем, когда нужен баланс и нет явного приоритета.
- ROC-AUC — площадь под ROC-кривой (TPR vs FPR при разных порогах). Не зависит от выбора порога, измеряет ранжирующую способность.
Что делать при дисбалансе классов
- Accuracy неинформативен: предсказывать всегда «негатив» при 1% позитивов даст 99%.
- PR-AUC (precision-recall AUC) лучше показывает качество на редком классе, чем ROC-AUC, который оптимистичен при перекосе.
- Смотреть метрики только по позитивному классу или confusion matrix.
- Бизнес-метрика: «сколько фрод-кейсов поймали при допустимых X% ложных срабатываний».
from sklearn.metrics import (
precision_score, recall_score, f1_score,
roc_auc_score, average_precision_score
)
precision_score(y, y_pred)
recall_score(y, y_pred)
f1_score(y, y_pred)
roc_auc_score(y, y_proba) # по вероятностям, не по бинарным
average_precision_score(y, y_proba) # PR-AUCПодводные камни
- ROC-AUC на сильно несбалансированных классах вводит в заблуждение: «0.9 — отлично», а PR-AUC может быть 0.2.
- F1 одинаково взвешивает precision и recall. Если ошибки разной цены — лучше F-beta или PR-кривая с выбором рабочей точки.
- ROC-AUC и accuracy надо считать по разным сущностям: AUC — по вероятностям, accuracy — по бинарным предсказаниям после порога.
Эталонный ответ
Precision — точность среди предсказанных позитивов; Recall — полнота поимки настоящих позитивов; F1 — их гармоническое среднее; ROC-AUC — ранжирующая способность. На несбалансированных данных предпочитайте PR-AUC и метрики по позитивному классу.