Sobes.tech
Back to questions
Junior — Middle
17

Какие метрики бинарной классификации вы знаете? Плюсы и минусы каждой.

Answer from AI

sobes.tech AI

Что хотят услышать интервьюеры:

Нужно показать, что для бинарной классификации недостаточно одной accuracy, особенно при дисбалансе классов. Важно уметь выбирать метрику под бизнес-цель: что критичнее — пропустить положительный класс или ошибочно его предсказать. Хороший ответ обычно включает confusion matrix, precision, recall, F1, ROC-AUC и PR-AUC.

Определение:

Метрики бинарной классификации оценивают качество модели, которая относит объект к одному из двух классов. Они считаются на основе матрицы ошибок: TP, FP, TN, FN.

Основные метрики и их смысл:

  • Accuracy — доля всех верных предсказаний.
    • Плюсы: проста и понятна.
    • Минусы: плохо работает при дисбалансе классов; может быть высокой даже у бесполезной модели.
  • Precision — из всех предсказанных положительных сколько действительно положительные.
    • Плюсы: важна, когда дорогие ложноположительные ошибки.
    • Минусы: не учитывает пропуски положительного класса.
  • Recall — из всех реальных положительных сколько найдено моделью.
    • Плюсы: важна, когда дорогие ложноотрицательные ошибки.
    • Минусы: не учитывает количество ложных срабатываний.
  • F1-score — гармоническое среднее precision и recall.
    • Плюсы: полезна при дисбалансе классов, если важен баланс между precision и recall.
    • Минусы: скрывает, за счёт чего достигнут результат; не показывает TN.
  • Specificity — из всех реальных отрицательных сколько правильно распознано.
    • Плюсы: полезна, когда важно не ошибаться на отрицательном классе.
    • Минусы: обычно реже используется в общем ML-пайплайне.
  • ROC-AUC — качество ранжирования между классами при разных порогах.
    • Плюсы: не зависит от выбранного порога, удобна для сравнения моделей.
    • Минусы: может выглядеть хорошо даже при сильном дисбалансе; не всегда отражает качество на редком положительном классе.
  • PR-AUC — площадь под precision-recall кривой.
    • Плюсы: лучше показывает качество на редком положительном классе.
    • Минусы: менее интуитивна, чем accuracy; зависит от распределения классов.
  • LogLoss — штрафует за уверенность в неправильном ответе.
    • Плюсы: учитывает вероятности, а не только класс.
    • Минусы: менее интерпретируема для бизнеса; чувствительна к плохо калиброванным вероятностям.

Пример использования:

Допустим, модель определяет, есть ли у клиента риск оттока.
Если важно не пропустить «уходящих» клиентов, то приоритет у recall.
Если дорого ошибочно предлагать удержание тем, кто и так не уйдёт, то важнее precision.
Если классы сильно несбалансированы, accuracy может ввести в заблуждение, поэтому лучше смотреть F1, PR-AUC и матрицу ошибок.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, average_precision_score

y_true = [1, 0, 1, 1, 0, 0, 1]
y_pred = [1, 0, 0, 1, 0, 1, 1]
y_proba = [0.9, 0.2, 0.4, 0.8, 0.1, 0.7, 0.85]

print("Accuracy:", accuracy_score(y_true, y_pred))
print("Precision:", precision_score(y_true, y_pred))
print("Recall:", recall_score(y_true, y_pred))
print("F1:", f1_score(y_true, y_pred))
print("ROC-AUC:", roc_auc_score(y_true, y_proba))
print("PR-AUC:", average_precision_score(y_true, y_proba))

Пояснение кода:

Код показывает, как посчитать основные метрики для бинарной классификации.

  1. y_true — истинные метки классов.
  2. y_pred — предсказанные классы после выбора порога.
  3. y_proba — вероятности положительного класса, нужны для ROC-AUC и PR-AUC.
  4. accuracy_score считает долю правильных ответов среди всех объектов.
  5. precision_score показывает, насколько «чисты» положительные предсказания.
  6. recall_score показывает, сколько реальных положительных объектов модель нашла.
  7. f1_score объединяет precision и recall в одну метрику.
  8. roc_auc_score оценивает, насколько хорошо модель ранжирует положительные объекты выше отрицательных.
  9. average_precision_score приближённо оценивает площадь под PR-кривой и особенно полезна при редком положительном классе.

Ключевые моменты:

  • Accuracy подходит только когда классы более-менее сбалансированы и цена ошибок одинакова.
  • Precision важнее, когда нужно минимизировать ложноположительные срабатывания.
  • Recall важнее, когда критично не пропускать положительный класс.
  • F1 удобна как компромисс при дисбалансе, но не заменяет анализ матрицы ошибок.
  • ROC-AUC хороша для сравнения моделей, но при сильном дисбалансе лучше дополнительно смотреть PR-AUC.
  • Выбор метрики всегда зависит от бизнес-стоимости FP и FN, а не только от математического качества модели.