Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Что такое ROC-кривая? Что такое AUC?

Data scienceItBig data
Анонимный вопрос
Data Science
  · 3,5 K
Экс-преподаватель msu.ai, специалист образовательного центра Института ИИ при...  · 19 нояб 2021
ROC-AUC - метрика, позволяющая оценить качество модели бинарной классификации (может быть обобщена до мультиклассовой классификации, но об этом в конце текста).
Давайте заметим, что в общем случае при решении задачи бинарной классификации нам хотелось бы получать предсказания модели, которые соответствуют "вероятности" того, что объект относится к тому или иному классу. То есть информация от модели "клиент не вернёт кредит" менее ценна, чем "клиент не вернёт кредит с вероятностью 99%" или "клиент не вернёт кредит с вероятностью 50.5%" - если в случае с предсказанием без вероятности мы не можем быть уверены, как сильно стоит доверять модели, то когда модель сообщает нам степень собственной уверенности, мы можем самостоятельно заниматься оценкой рисков.
Работа с рисками может быть довольна важна в случаях, когда "лучше перебдеть". Если Ваша модель меньше чем на 99% уверена в том, что у пациента нет рака, то лучше отправить пациента на дополнительные обследования. Но почему я в качестве порога я выбрал именно 99%? Может, лучше поставить 98% или 95%? Для выбора этого порога как раз-таки и может быть использована ROC-кривая. Что она из себя представляет?
Для начала, давайте определимся с парой очень важных понятий:
TPR (true positive rate) - какая часть из "положительных" классификаций оказалась верна; иными словами, модель предсказала, что пациенты A, B, C больны. Какая часть из них больна на самом деле?
FPR (false positive rate) - какая часть из "негативных" классификаций оказалась неверна; иными словами, модель предсказала, что A, B, C здоровы. Какая часть из них на самом-то деле больна?
Итак, при построении ROC-кривой, постепенно перебираются различные варианты "порога", по которому объект относится к положительному либо негативному классу (тот самый порог, о котором сомневались выше - 95%, 98% или 99%). В зависимости от порога, часть объектов попадает в предсказание, как относящиеся к положительному классу, другая часть - как относящиеся к отрицательному классу. На каждом из возможных разбиений (от порога в 0% до порога в 100%) мы можем посчитать как TPR, так и FPR. И, для каждого из разбиений, мы можем отложить точку на графике зависимости TPR от FPR - соединив их, мы и получим ROC-кривую.
Пример прикреплён ниже:
Заметим, что при увеличении порога может случиться две ситуации:
1. Объект, в реальности относившийся к негативному классу, теперь классифицируется не как положительный, а как негативный (т.е. условно, ранее порог был 5%, вероятность положительности нашего объекта - 7% и он определялся как положительный, что было ошибкой; затем порог сдвинулся на 7.1%, теперь наш объект классифицируется как негативный, что корректно).
2. Объект, в реальности относившийся к положительному классу, теперь классифицируется не как положительный, а как негативный (т.е. условно ранее порог был 90%, вероятность положительности нашего объекта 91% и он определялся как положительный, что было верно; затем порог сдвинулся на 91.1%, теперь наш объект классифицируется как негативный, что некорректно).
Заметим, что случай 1. нам кажется "хорошим" (модель исправляет ошибку), тогда как в случае 2. качество предсказания модели становится хуже (поскольку ранее предсказание было верным, но исправили на некорректное).
Теперь посмотрим, что происходит на графике в случае 1.: TPR увеличивается - доля верно предсказанных положительных увеличивается; при этом FPR никак не меняется. Геометрически это означает, что новая точка (в случае 1.) будет выше предыдущей точки.
В случае 2. произойдёт обратная ситуация: TPR не изменится, а FPR увеличится - увеличивается количество неверных классификаций. Геометрически это означает, что новая точка будет правее предыдущей.
Итого, при пороге в 0% точка располагается в (0, 0), а при пороге в 100% точка располагается в (1, 1). Между ними располагаются точки, причём чем больше у ROC-кривой подъёмов наверх (т.е. чем больше ситуаций первого типа), тем лучше работает классификатор.
В идеальной ситуации, всем объектам негативного класса предсказана меньшая вероятность положительности, чем объектам положительного класса. В таком случае, кривая сначала "утыкается" в (0, 1), после чего вынужденно идёт вправо. В таком случае, идеальном случае, площадь под кривой равна 1. В общем случае, мы хотим, чтобы ситуации 1. типа встречались нам раньше, чем ситуации 2. типа. Площадь под графиком ROC-кривой (ROC-Area Under Curve, ROC-AUC) прекрасно справляется с тем чтобы показать сколь корректно упорядочены вероятности (как часто положительные объекты имеют меньшую вероятность положительности, чем негативные объекты) и потому является прекрасной метрикой для бинарной классификации.
Сама же ROC-кривая показывает, какой примерно процент ошибок по положительным и негативным объектам будет получен при различных значениях порога принятий решений. Если нас устраивает N процентов ошибок с одной или другой стороны, мы можем найти соответствующий порог принятия решений.
P.s. можно попробовать применить ROC-AUC и к задаче мультиномиальной классификации. Можно либо посчитать ROC-AUC между всеми взможными парами классов и усреднить полученные результаты, либо можно для каждого класса выполнить подсчёт ROC-AUC в one-versus-all манере и затем усреднить полученные значения.
Небольшая правка касательно определений TPR и FPR Доля верных предсказаний - это точность  = TP / (TP + FP) TPR =... Читать дальше