Назад к подготовке

Precision, recall и ROC-AUC при сильном дисбалансе классов

В выборке 95 единиц и 5 нулей. Модель всегда предсказывает единицу. Посчитайте precision, recall и ROC-AUC, а затем объясните, почему такая модель плохая и какие метрики смотреть дополнительно.

Ответить самому

Сначала сформулируйте ответ как на собеседовании, затем откройте разбор и оцените себя.

Загрузка

Короткий ответ

Для положительного класса precision = 95 / 100 = 0.95, recall = 95 / 95 = 1.0. Если все score одинаковые, ROC-AUC = 0.5. Модель плохая, потому что она вообще не находит нулевой класс: recall по нулям равен 0.

Полный разбор

Confusion matrix для положительного класса: TP = 95, FP = 5, FN = 0, TN = 0. Поэтому precision = 95 / 100 = 0.95, а recall = 95 / 95 = 1.0.

Эти числа выглядят хорошо только из-за дисбаланса. Модель всегда говорит "единица" и полностью игнорирует нулевой класс: для класса 0 recall будет 0, а balanced accuracy или macro recall покажут примерно 0.5.

Если модель выдает одинаковый score всем объектам, ROC-AUC равен 0.5: ранжирования между положительными и отрицательными объектами нет. Чтобы не ошибиться, нужно смотреть confusion matrix, per-class precision/recall, macro averages, balanced accuracy, PR-AUC для важного класса и выбирать threshold под бизнес-ограничение, например фиксированный FPR или минимальный precision.

Теория

На дисбалансных задачах агрегированная метрика может выглядеть хорошо, даже если модель бесполезна для редкого класса.

Типичные ошибки

  • Назвать модель хорошей из-за precision 0.95 и recall 1.0.
  • Не посмотреть метрики по нулевому классу.
  • Выбирать threshold 0.5 без целевого operating point.

Как отвечать на собеседовании

  • Начните с TP, FP, FN, TN.
  • Сразу скажите, какой класс важен для продукта и как выбирается threshold.