Какие знаешь метрики качества моделей бинарной классификации
Метрики качества бинарной классификации — это числовые показатели, которые оценивают, насколько хорошо модель разделяет два класса и насколько точны её предсказания. Основные метрики включают accuracy, precision, recall, F1-score, ROC-AUC и log loss; выбор конкретной метрики зависит от бизнес-задачи и цены ошибок разных типов.
Как это работает
В бинарной классификации модель предсказывает один из двух классов (например, «спам» или «не спам»). Результаты сравниваются с истинными метками, и на этой основе строятся метрики. Ключевые понятия — матрица ошибок (confusion matrix), которая содержит четыре числа: true positive (TP), true negative (TN), false positive (FP) и false negative (FN). На их основе вычисляются все остальные метрики.
Основные метрики
Accuracy
Accuracy — доля правильных предсказаний среди всех предсказаний:
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)Accuracy проста для понимания, но вводит в заблуждение при дисбалансе классов: если 95% объектов принадлежат классу «0», модель, всегда предсказывающая «0», получит accuracy 0.95, хотя не решает задачу.
Precision
Precision — доля истинно положительных среди всех объектов, предсказанных как положительные:
from sklearn.metrics import precision_score
precision_score(y_true, y_pred)Precision важна, когда ложные срабатывания дороги. Например, в спам-фильтре ложное срабатывание — это потерянное важное письмо, поэтому нужна высокая precision.
Recall (Sensitivity)
Recall — доля истинно положительных среди всех реально положительных объектов:
from sklearn.metrics import recall_score
recall_score(y_true, y_pred)Recall критичен, когда пропуск цели опасен. В медицине, например, пропущенный диагноз может стоить жизни, поэтому recall должен быть максимальным.
F1-score
F1-score — гармоническое среднее precision и recall:
from sklearn.metrics import f1_score
f1_score(y_true, y_pred)F1-score балансирует между precision и recall и полезен при дисбалансе классов, когда нужно учитывать оба показателя.
ROC-AUC
ROC-AUC — площадь под ROC-кривой, которая показывает, насколько хорошо модель разделяет классы при разных порогах классификации:
from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_proba)ROC-AUC принимает значения от 0.5 (случайное угадывание) до 1 (идеальное разделение). Метрика не зависит от порога и хорошо работает при дисбалансе классов.
Log Loss
Log Loss — логарифмическая потеря, которая учитывает уверенность модели в предсказаниях:
from sklearn.metrics import log_loss
log_loss(y_true, y_proba)Log Loss штрафует за уверенные, но ошибочные предсказания. Чем меньше значение, тем лучше. Эта метрика полезна, когда важна калибровка вероятностей.
Подводные камни
- Accuracy не подходит для несбалансированных данных.
- Precision и recall конфликтуют: увеличение одного часто снижает другое.
- ROC-AUC не показывает, насколько хорошо модель калибрована — она может быть высокой, но вероятности будут смещены.
- Log Loss чувствителен к выбросам: одно очень уверенное ошибочное предсказание может сильно ухудшить значение.
Когда какую метрику использовать
| Задача | Рекомендуемая метрика |
|---|---|
| Спам-фильтр | Precision |
| Медицинская диагностика | Recall |
| Дисбаланс классов | F1-score, ROC-AUC |
| Калибровка вероятностей | Log Loss |
| Общая оценка модели | Accuracy (при балансе классов) |
Коротко
- Основные метрики: accuracy, precision, recall, F1-score, ROC-AUC, log loss.
- Accuracy не подходит при дисбалансе классов.
- Precision важна, когда дороги ложные срабатывания; recall — когда дороги пропуски.
- F1-score балансирует precision и recall; ROC-AUC оценивает разделение классов; log loss учитывает уверенность модели.
