Ваша интуиция не ошибается: если двоичный классификатор работает действительно хуже, чем случайный (т. Е. AUC <0,5), правильная стратегия состоит в том, чтобы просто <em>инвертировать свои прогнозы , то есть сообщать 0, когда классификатор предсказывает 1 и наоборот); из соответствующей записи в Википедии (выделение добавлено):
Диагональ делит пространство РПЦ. Точки над диагональю представляют хорошие результаты классификации (лучше случайных); точки под линией представляют плохие результаты (хуже случайных). Обратите внимание, что вывод постоянно плохого предиктора может быть просто инвертирован для получения хорошего предиктора .
Тем не менее, формально правильный AUC для этого инвертированного классификатора будет состоять в том, чтобы сначала инвертировать отдельные вероятностные предсказания prob
вашей модели:
prob_invert = 1 - prob
и затем вычислите AUC, используя эти прогнозы prob_invert
(возможно, процесс должен дать аналогичные результаты с описанным вами наивным подходом простого вычитания AUC из 1, но я не уверен в точном результате - см. Также это Quora answer ).
Излишне говорить, что все это основано на предположении, что весь ваш процесс корректен, т. Е. У вас нет ошибок моделирования или кодирования (построение классификатора хуже случайного не совсем тривиально).