Можно ли использовать Precision-Recall кривую вместо ROC AUC при дисбалансе классов
Что проверяют
Понимаете ли вы, откуда берётся оптимизм ROC AUC на несбалансированных данных, и можете ли объяснить, что показывает каждая кривая. Следом обычно спрашивают, какое значение PR AUC считать хорошим и как выбирать порог.
Как отвечать
Да, и при сильном дисбалансе это часто лучший выбор, но не безусловно. Объяснение через формулы:
- ROC: по осям TPR (он же recall) и
FPR = FP / (FP + TN). Когда отрицательных миллион, тысяча ложных срабатываний даёт FPR 0,001, и кривая выглядит отлично. ROC AUC равен вероятности того, что случайный положительный пример получит скор выше случайного отрицательного, и от доли классов не зависит; - PR: по осям recall и
precision = TP / (TP + FP). Ложные срабатывания бьют по precision напрямую, поэтому кривая показывает то, что почувствует пользователь модели: сколько мусора в выдаче при данной полноте; - бейзлайн: у ROC AUC случайная модель даёт 0,5, у PR AUC значение равно доле положительного класса. При 1% мошенничества PR AUC 0,3 может быть сильным результатом, а ROC AUC 0,95 сам по себе ничего не гарантирует.
В scikit-learn кривую строит precision_recall_curve, площадь считает average_precision_score. Площадь через auc(recall, precision) по трапециям завышает результат, потому что линейная интерполяция в PR-пространстве некорректна.
Сильный ответ добавляет, что метрика не заменяет выбор рабочей точки: бизнесу нужен порог, например recall при precision не ниже 0,9 или precision в топ-k выдачи. И что PR-кривая зависит от того, какой класс назван положительным: им должен быть редкий и важный.
Где спотыкаются
Сравнивают PR AUC между датасетами или периодами с разной долей положительных. Метрика сдвигается вместе с балансом, даже если модель не изменилась.
Называют ROC AUC «неправильной» метрикой при дисбалансе. Он корректно оценивает ранжирование, просто отвечает на другой вопрос, чем тот, что обычно важен в задаче.
Балансируют данные через SMOTE или undersampling и считают метрики на изменённом тесте. Тестовая выборка должна сохранять реальное соотношение классов, иначе обе кривые искажены.