В предыдущем разделе был представлен набор показателей модели, рассчитанных по единому пороговому значению классификации. Но если вы хотите оценить качество модели по всем возможным пороговым значениям, вам потребуются разные инструменты.
Рабочая характеристика приемника (ROC)
Кривая ROC — это визуальное представление производительности модели по всем пороговым значениям. Длинная версия названия, рабочие характеристики приемника, является пережитком радарного обнаружения времен Второй мировой войны.
Кривая ROC строится путем расчета частоты истинно положительных результатов (TPR) и частоты ложных срабатываний (FPR) при каждом возможном пороге (на практике, через выбранные интервалы), а затем построения графика зависимости TPR от FPR. Идеальная модель, которая при некотором пороге имеет TPR 1,0 и FPR 0,0, может быть представлена либо точкой в (0, 1), если все остальные пороги игнорируются, либо следующим:
![Рисунок 1. График зависимости TPR (ось Y) от FPR (ось X), показывающий производительность идеальной модели: линия от (0,1) до (1,1).](https://developers.google.cn/static/machine-learning/crash-course/images/auc_1-0.png?authuser=6&hl=ru)
Площадь под кривой (AUC)
Площадь под кривой ROC (AUC) представляет собой вероятность того, что модель, если ей предоставлен случайно выбранный положительный и отрицательный пример, будет оценивать положительный результат выше, чем отрицательный.
Представленная выше идеальная модель, содержащая квадрат со сторонами длиной 1, имеет площадь под кривой (AUC) 1,0. Это означает, что существует 100% вероятность того, что модель правильно ранжирует случайно выбранный положительный пример выше, чем случайно выбранный отрицательный пример. Другими словами, глядя на разброс точек данных ниже, AUC дает вероятность того, что модель разместит случайно выбранный квадрат справа от случайно выбранного круга, независимо от того, где установлен порог.
Говоря более конкретно, классификатор спама с AUC 1,0 всегда присваивает случайному спам-письму более высокую вероятность того, что оно является спамом, чем случайное законное письмо. Фактическая классификация каждого электронного письма зависит от выбранного вами порога.
Для бинарного классификатора модель, которая работает точно так же, как случайные предположения или подбрасывание монеты, имеет ROC, который представляет собой диагональную линию от (0,0) до (1,1). AUC равен 0,5, что соответствует 50% вероятности правильного ранжирования случайного положительного и отрицательного примера.
В примере с классификатором спама классификатор спама с AUC 0,5 только в половине случаев присваивает случайному спам-письму более высокую вероятность быть спамом, чем случайному законному сообщению.
![Рисунок 2. График зависимости TPR (ось Y) от FPR (ось X), показывающий эффективность случайного угадателя 50-50: диагональная линия от (0,0) до (1,1).](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-5.png?authuser=6&hl=ru)
(Дополнительно, расширенно) Кривая точного отзыва
AUC и ROC хорошо подходят для сравнения моделей, когда набор данных примерно сбалансирован между классами. Когда набор данных несбалансирован, кривые точного отзыва (PRC) и площадь под этими кривыми могут обеспечить лучшую сравнительную визуализацию производительности модели. Кривые точности отзыва создаются путем нанесения точности на ось Y и полноты по оси X для всех пороговых значений.
![Пример кривой точного отзыва с выпуклой вниз кривой от (0,1) до (1,0)](https://developers.google.cn/static/machine-learning/crash-course/images/prauc.png?authuser=6&hl=ru)
AUC и ROC для выбора модели и порога
AUC — полезный показатель для сравнения производительности двух разных моделей, если набор данных примерно сбалансирован. (См. кривую точного отзыва выше для несбалансированных наборов данных.) Модель с большей площадью под кривой, как правило, является лучшей.
![Рисунок 3.а. График ROC/AUC модели с AUC=0,65.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-65.png?authuser=6&hl=ru)
![Рисунок 3.б. График ROC/AUC модели с AUC=0,93.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-93.png?authuser=6&hl=ru)
Точки на кривой ROC, ближайшие к (0,1), представляют собой диапазон наиболее эффективных пороговых значений для данной модели. Как обсуждалось в разделах «Пороги» , «Матрица путаницы» и «Выбор метрики и компромиссов» , выбираемое вами пороговое значение зависит от того, какая метрика наиболее важна для конкретного варианта использования. Рассмотрим точки A, B и C на следующей диаграмме, каждая из которых представляет собой порог:
![Рисунок 4. Кривая ROC с AUC = 0,84, показывающая три точки на выпуклой части кривой, ближайшей к (0,1), обозначенные по порядку A, B, C.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_abc.png?authuser=6&hl=ru)
Если ложные срабатывания (ложные тревоги) обходятся очень дорого, возможно, имеет смысл выбрать порог, который дает более низкий FPR, например, в точке A, даже если TPR снижен. И наоборот, если ложноположительные результаты обходятся дешево, а ложноотрицательные (пропущенные истинные положительные результаты) обходятся очень дорого, то порог для точки C, который максимизирует TPR, может быть предпочтительнее. Если затраты примерно эквивалентны, точка B может предложить лучший баланс между TPR и FPR.
Вот кривая ROC для данных, которые мы видели раньше:
Упражнение: Проверьте свое понимание.
![Кривая ROC, изгибающаяся вверх, а затем вправо от (0,0) до (1,1). Кривая имеет AUC 0,77.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-77.png?authuser=6&hl=ru)
![Кривая ROC представляет собой примерно прямую линию от (0,0) до (1,1) с несколькими зигзагами. Кривая имеет AUC 0,508.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-508.png?authuser=6&hl=ru)
![Кривая ROC движется зигзагом вверх и вправо от (0,0) до (1,1). Кривая имеет AUC 0,623.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-623.png?authuser=6&hl=ru)
![Кривая ROC, изгибающаяся вправо, а затем вверх от (0,0) до (1,1). Кривая имеет AUC 0,31.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-31.png?authuser=6&hl=ru)
![Кривая ROC, изгибающаяся вправо, а затем вверх от (0,0) до (1,1). Кривая имеет AUC 0,32.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-32.png?authuser=6&hl=ru)
![Кривая ROC представляет собой примерно прямую линию от (0,0) до (1,1) с несколькими зигзагами. Кривая имеет AUC 0,508.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-508.png?authuser=6&hl=ru)
![Кривая ROC, представляющая собой диагональную прямую линию от (0,0) до (1,1). Кривая имеет AUC 0,5.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_0-5.png?authuser=6&hl=ru)
![Кривая ROC, состоящая из двух перпендикулярных линий: вертикальной линии от (0,0) до (0,1) и горизонтальной линии от (0,1) до (1,1). Эта кривая имеет AUC 1,0.](https://developers.google.cn/static/machine-learning/crash-course/images/auc_1-0.png?authuser=6&hl=ru)
(Необязательно, для продвинутых пользователей) Бонусный вопрос
Представьте себе ситуацию, когда лучше позволить спаму попасть в папку «Входящие», чем отправлять важное для бизнеса электронное письмо в папку со спамом. Вы обучили классификатор спама для ситуации, когда положительный класс — это спам, а отрицательный класс — не спам. Какая из следующих точек на кривой ROC вашего классификатора предпочтительнее?
![Кривая ROC с AUC=0,84, показывающая три точки на выпуклой части кривой, близкие к (0,1). Точка А находится примерно (0,25, 0,75). Точка B находится примерно на (0,30, 0,90) и является точкой, которая максимизирует TPR при минимизации FPR. Точка C находится примерно на (0,4, 0,95).](https://developers.google.cn/static/machine-learning/crash-course/images/auc_abc.png?authuser=6&hl=ru)