Встречается на 24% собеседований по Data Engineer

Какие знаешь метрики качества моделей бинарной классификации

Метрики качества бинарной классификации — это числовые показатели, которые оценивают, насколько хорошо модель разделяет два класса и насколько точны её предсказания. Основные метрики включают 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 — доля правильных предсказаний среди всех предсказаний:

python
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)

Accuracy проста для понимания, но вводит в заблуждение при дисбалансе классов: если 95% объектов принадлежат классу «0», модель, всегда предсказывающая «0», получит accuracy 0.95, хотя не решает задачу.

Precision

Precision — доля истинно положительных среди всех объектов, предсказанных как положительные:

python
from sklearn.metrics import precision_score
precision_score(y_true, y_pred)

Precision важна, когда ложные срабатывания дороги. Например, в спам-фильтре ложное срабатывание — это потерянное важное письмо, поэтому нужна высокая precision.

Recall (Sensitivity)

Recall — доля истинно положительных среди всех реально положительных объектов:

python
from sklearn.metrics import recall_score
recall_score(y_true, y_pred)

Recall критичен, когда пропуск цели опасен. В медицине, например, пропущенный диагноз может стоить жизни, поэтому recall должен быть максимальным.

F1-score

F1-score — гармоническое среднее precision и recall:

python
from sklearn.metrics import f1_score
f1_score(y_true, y_pred)

F1-score балансирует между precision и recall и полезен при дисбалансе классов, когда нужно учитывать оба показателя.

ROC-AUC

ROC-AUC — площадь под ROC-кривой, которая показывает, насколько хорошо модель разделяет классы при разных порогах классификации:

python
from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_proba)

ROC-AUC принимает значения от 0.5 (случайное угадывание) до 1 (идеальное разделение). Метрика не зависит от порога и хорошо работает при дисбалансе классов.

Log Loss

Log Loss — логарифмическая потеря, которая учитывает уверенность модели в предсказаниях:

python
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 учитывает уверенность модели.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы