Почему кривая ROC и площадь под кривой важны для классификации?

Я считаю, что большинство людей слышали о кривой ROC или площади под кривой раньше, если вы интересуетесь наукой о данных. Однако что именно представляет собой кривая ROC и почему площадь под кривой ROC является хорошим показателем для оценки модели классификации? В предыдущей статье я кратко рассмотрел основные показатели для классификации, но в этой статье я расскажу о них более подробно.

Некоторая справочная информация

Полное название ROC - Рабочие характеристики приемника. Он был впервые создан для использования радиолокационного обнаружения сигналов во время Второй мировой войны. США использовали его для повышения точности обнаружения японских самолетов с помощью радара. Поэтому ее называют рабочей характеристикой приемника.

AUC или площадь под кривой - это просто площадь под кривой ROC. Прежде чем мы перейдем к тому, что такое ROC-кривая, нам нужно быстро понять, что такое матрица неточностей.

Как видно из рисунка выше, матрица путаницы представляет собой комбинацию вашего прогноза (1 или 0) и фактического значения (1 или 0). В зависимости от значения вашего прогноза и того, правильно ли вы классифицировали, он разделен на 4 раздела. Например, истинно положительный результат - это количество случаев, в которых вы правильно классифицируете случай как положительный, а ложный положительный результат - это количество случаев, в которых вы ошибочно классифицируете случай как положительный.

Матрица неточностей содержит только абсолютные числа. Однако на основе этих цифр мы можем разработать множество новых процентных показателей. Истинно-положительный рейтинг и ложноположительный рейтинг - два из них.

  1. Истинно положительный процент (TPR): среди действительно положительных случаев, какой процент из них правильно отражен в модели.

TPR = TP / (TP + FN)

  1. Уровень ложноположительных результатов (NPR): среди действительно отрицательных случаев какой процент из них на самом деле является ложноположительным.

NPR = FP / (FP + TN)

Хорошо, давайте теперь перейдем к кривой ROC!

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

Как вы можете видеть на графике, кривая ROC - это просто отношение TPR к NPR. Хорошо, конец истории ...

Просто шутка!

Вы можете прочитать намного больше информации из диаграммы. Первое, что я хочу здесь спросить: существует только один набор TPR, FPR для результата модели и как вы формируете столько точек для построения графика?

Это восходит к тому, как работает модель классификации. Когда вы строите классификационную модель, такую ​​как дерево решений, и хотите классифицировать, может быть, запасы будут увеличиваться или уменьшаться завтра в зависимости от входных данных. Модель классификации сначала рассчитает вероятность увеличения или уменьшения на основе предоставленного вами исторического значения. После этого, основываясь на пороге, он решит, будет ли результат увеличиваться или уменьшаться.

Да, ключевое слово здесь - порог. Разный порог создает разные TPR и FPR. Они представляют разные точки и образуют кривую ROC. Вы можете выбрать выход «Увеличить», если вероятность увеличения превышает 50% на основе исторических данных, но вы также можете увеличить порог и отображать только «Увеличить» 'если вероятность больше 90%. Если вы выберете уверенность 90% вместо 50%, вы будете более уверены в том, что акции, которые вы выбрали для отображения «Повышение», с большой вероятностью вырастут, но вы можете упустить некоторые потенциальные акции.

Почему я рисую синюю пунктирную линию на графике?

Как мы знаем, чем больше площадь под кривой (AUC), тем лучше классификация. Идеальная или идеальная кривая - это вертикальная линия от (0,0) до (0,1), а затем до (1,1), что означает, что модель может на 100% разделить положительные и отрицательные случаи. Однако, если вы выбираете случайным образом для каждого случая, TPR и FPR должны увеличиваться с одинаковой скоростью. Синяя пунктирная линия показывает кривую TPR и FPR, когда вы слепо угадываете положительное или отрицательное значение для каждого случая, и для этой диагональной линии площадь под кривой (AUC) составляет 0,5.

Что произойдет с кривой TPR, FPR и ROC, если я изменю свой порог?

Посмотрите на две точки на кривой ROC. Зеленая точка имеет очень высокий порог, это означает, что только если вы уверены на 99%, вы можете классифицировать случай как положительный. Красная точка имеет относительно более низкий порог, и это означает, что вы можете классифицировать случай как положительный, если вы уверены на 90%.

Как происходит движение TPR и FPR от зеленой точки к красной?

И TPR, и FPR увеличиваются. Когда вы уменьшаете порог, можно идентифицировать больше положительных случаев, таким образом, TP увеличивается, а TP / (TP + FN) также увеличивается. С другой стороны, вы неизбежно ошибочно классифицируете некоторые отрицательные случаи как положительные из-за снижения порога, и поэтому FP и FP / (FP + TN) также увеличиваются.

Мы видим, что TPR и FPR положительно коррелированы, и вам необходимо найти баланс между максимальным охватом положительных случаев и минимизацией неправильной классификации отрицательных случаев.

Как выбрать оптимальную точку на кривой ROC?

Трудно определить оптимальную точку, потому что вы должны выбрать наиболее подходящий порог для бизнес-кейса. Однако общим правилом является максимизация (TPR-FPR), которая на графике представлена ​​вертикальным расстоянием между оранжевой и синей пунктирной линией.

Из приведенного выше графика видно, что среди трех точек у redpoint самый большой TPR-FPR, и его следует рассматривать как оптимальную точку. При переходе от красной точки к зеленой, порог становится более строгим. Однако большое количество положительных случаев не отражается в модели с менее чем пропорциональным сокращением ошибочно классифицированных случаев. При переходе от красной точки к синей порог становится более мягким и добавляет больше ошибочно классифицированных положительных точек, чем правильно определенных положительных точек.

Почему площадь под кривой ROC является хорошим показателем для оценки модели классификации?

Хорошая метрика модели машинного обучения должна отображать истинную и непротиворечивую способность модели к прогнозированию. Это означает, что если я изменю набор данных тестирования, он не должен иметь совсем другой результат.

Кривая ROC учитывает не только результаты классификации, но и вероятность прогнозирования всех классов. Например, если выходные данные классифицированы правильно на основе вероятности 51%, то очень вероятно, что они будут классифицированы неправильно, если вы используете другой набор данных тестирования. Кроме того, кривая ROC также учитывает производительность по разным пороговым значениям и поэтому представляет собой комплексную метрику для оценки того, насколько хорошо разделены случаи в разных группах.

Каков приемлемый показатель AUC для модели классификации?

Как я показал ранее, для задач двоичной классификации, если вы выберете случайным образом, вы можете получить 0,5 AUC. Таким образом, если вы решаете задачу двоичной классификации, разумная оценка ROC должна ›0,5. Хорошая классификационная модель обычно имеет показатель AUC ›0,9, но полностью зависит от приложения.

Как рассчитать AUC и построить кривую ROC в Python?

Если вы просто хотите узнать оценку AUC, вы можете обратиться к метрическому пакету sklearn здесь.

Если вы хотите построить кривую ROC для результатов вашей модели, вы можете обратиться здесь

# Calculate FPR, TPR and AUC
from sklearn.metrics import roc_curve, auc
fpr, tpr, treshold = roc_curve(y_test, y_score_new)
roc_auc = auc(fpr, tpr)
#Plot ROC curve
plt.plot(fpr, tpr, color='darkorange',
         label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()

Вот код для меня, чтобы построить график примера ROC, который я использовал в этой статье. Вам нужны два входа, которые являются истинным значением y, а также вероятностью прогноза. Обратите внимание, что для функции roc_curve требуется только вероятность для положительных случаев, но не вероятность для обоих классов. Если у вас есть проблема с классификацией нескольких классов, вы также можете использовать этот пакет, и по ссылке выше есть пример того, как построить график.

Если вам интересно узнать, какие другие основные показатели для оценки модели классификации, вы можете обратиться по ссылке ниже: