Какие значения ROC считаются хорошими, а какие плохими
Что проверяют
Понимаете ли вы, что ROC это кривая, а оценивают её одним числом, ROC AUC, и что «хорошее» значение зависит от задачи. Следом спрашивают, почему AUC обманывает на несбалансированных классах и как по кривой выбрать порог.
Как отвечать
ROC-кривая строится по всем порогам: по оси X доля ложных срабатываний (FPR), по оси Y полнота (TPR). Площадь под ней имеет понятный смысл: это вероятность, что случайный объект положительного класса получит скор выше, чем случайный отрицательный. Поэтому AUC оценивает ранжирование и не зависит от выбранного порога.
Ориентиры по значениям:
- 0.5: модель не отличается от случайного угадывания;
- ниже 0.5: модель ранжирует наоборот. Чаще всего перепутана метка класса или знак скора, инверсия даёт
1 - AUC; - от 0.6 до 0.8: обычный рабочий диапазон для шумных задач вроде оттока или кредитного скоринга, где и 0.75 бывает сильным результатом;
- выше 0.9: нормально для задач с сильным сигналом, но в табличных бизнес-задачах такая цифра сначала повод искать утечку целевой переменной.
Главная мысль: AUC сравнивают с бейзлайном и текущей моделью на той же выборке, а не с абстрактной шкалой. В скоринге чаще называют Gini, он равен 2 * AUC - 1.
В коде это roc_auc_score(y_true, y_score) и roc_curve из sklearn.metrics. Передавать нужно вероятности или скоры (predict_proba(X)[:, 1]), а не предсказанные метки.
При сильном дисбалансе ROC AUC выглядит оптимистично, потому что FPR делится на огромное число отрицательных. Тогда смотрят PR AUC или average precision (average_precision_score) и precision на рабочем пороге.
Где спотыкаются
Называют пороги «0.8 хорошо, 0.6 плохо» без контекста. Интервьюер ждёт сравнения с бейзлайном и оговорки про предметную область.
Считают AUC по меткам из predict. Кривая тогда проходит через одну точку, и AUC превращается в сбалансированную точность на пороге 0.5.
Уверены, что высокий AUC означает полезную модель. Он не говорит, какой будет precision на выбранном пороге и откалиброваны ли вероятности, а на редком классе бывает высоким при почти бесполезной точности.