Оценка производительности модели играет решающую роль при доработке модели или принятии решения о том, подходит ли она для развертывания в производственной среде. У нас есть много способов оценить производительность, но среди них широко используются матрица путаницы и кривая ROC.

Либо из-за своего названия, либо из-за того, как его интерпретируют новички, матрица путаницы каким-то образом выглядит запутанной и не так легко запоминается. В этой статье давайте попробуем разобраться с матрицей путаницы на простом примере.

Предположим, что у нас есть классификационная задача, в которой мы должны найти квадраты из группы, в которой есть и круги, и квадраты.

В приведенном ниже примере у нас есть в общей сложности пятнадцать объектов, девять из которых — квадраты, а шесть — круги. Если нам приходится идентифицировать квадраты вручную, мы получаем более или менее стопроцентную точность. Но если мы хотим, чтобы с этой задачей справилась машина, добиться стопроцентной точности сложно, за исключением случаев, когда она хорошо обучена. Мы можем предположить, что машина — это нежный ребенок, который только начал идентифицировать объекты, и чем больше мы тренируем ребенка, тем лучше он идентифицирует.

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

Здесь мы видим, что из девяти квадратов машина выбрала только шесть квадратов, остальные три — круги. Если кто-то спросит, как поживает наша машина, будет трудно сосредоточиться на нежелательных пиках среди выбранных или на нужных пиках в неиспользованном наборе. А вот и роль матрицы путаницы.

Матрица путаницы — это не что иное, как таблица, которая помогает нам описать производительность модели.

В общем, мы строим матрицу путаницы после прогнозирования целевой метки на основе данных X_test. Поскольку мы знаем фактический Y_Test, мы можем сравнить фактический Ytest и прогнозируемый Y_test.

Давайте попробуем понять эту терминологию с помощью приведенного выше набора данных квадрата и круга.

True Positives (TP): Сколько выбранных квадратов на самом деле являются квадратами?

Ложные срабатывания (FP): сколько выбранных квадратов не являются квадратами?

Ложноотрицательные результаты (FN): сколько фактических квадратов не выбрано?

True Negatives (TN): Сколько неквадратов (кругов) не выбрано?

Если мы ответим на поставленные выше вопросы, наша матрица путаницы будет выглядеть следующим образом.

Теперь давайте посмотрим, что такое чувствительность и точность.

Чувствительность также известна как Recall, она говорит о пропорции правильно классифицированных положительных результатов среди всех положительных результатов. В нашем случае это будет общее количество квадратов, выбранных из общего количества доступных квадратов.

Итак, если мы подставим наши значения в эту формулу, мы увидим чувствительность как 6/9, что составляет 2/3.

Точность — это доля истинных срабатываний среди всех прогнозов. В нашем случае это будет общее количество квадратов, выбранных среди всех выбранных элементов.

Итак, если мы подставим значения, мы увидим значение 6/9, которое снова равно 2/3.

Мы всегда хотим, чтобы значения чувствительности и отзыва были выше, и эти значения лежат в диапазоне от 0 до 1. Если мы наблюдаем приведенные выше уравнения, числитель в обоих из них имеет истинное положительное значение. Единственное, что отличается, это вторая часть знаменателя, которая является ложноотрицательной в первом случае и ложноположительной во втором случае. Чем меньше эти значения, тем выше производительность нашей модели. После того, как мы построим матрицу путаницы, нашей ближайшей следующей задачей будет выяснить, есть ли способ уменьшить ложноположительные и ложноотрицательные значения, которые также называются ошибками типа 1 и типа 2.

Если рассматривать задачу классификации онкологических больных.

Ошибка 1-го рода: предсказать онкологического больного как незлокачественного.

Ошибка 2-го типа: предсказание неракового пациента как больного раком.

В этом случае интуитивно кажется, что ошибка 1-го типа столь же опасна, как раковый пациент объявляется нераковым, что представляет риск для жизни. С другой стороны, ошибка 2-го типа не так опасна, поскольку пациент, не страдающий раком, может пройти дальнейшую диагностику и иметь шансы быть признанным здоровым при ручном обследовании. Следовательно, наша цель будет состоять в том, чтобы уменьшить количество ошибок 1-го типа при работе над случаями, связанными с диагностикой.

До сих пор мы обсуждали матрицу путаницы, теперь давайте перейдем к кривой ROC. Кривая Характеристики оператора-получателя (ROC) – это показатель оценки для задач двоичной классификации. Сообщая нам идеальное пороговое значение в задачах классификации, является его основным преимуществом.

Давайте рассмотрим логистическую регрессию, мы знаем, что в логистической регрессии мы делаем прогнозы на основе выбранного порогового значения. Пороговое значение может быть любым от 0 до 1. Таким образом, для каждого выбранного порогового значения мы должны построить эти многочисленные матрицы путаницы и выбрать лучшее пороговое значение. Этот процесс выглядит громоздким.

Таким образом, вместо того, чтобы перегружаться матрицами путаницы, график ROC предоставляет простой способ визуализации всей информации с несколькими пороговыми значениями.

На графике ROC мы выбираем чувствительность (TPR) по оси Y и частоту ложных срабатываний (FPR) по оси X. На каждом пороге нам нужно будет рассчитать значения как TPR, так и FPR, подставив значения TP, FP, TN, FN.

Поскольку мы знаем, что значения FPR и TPR лежат между 0 и 1, на графике ROC у нас будет 1 единица по оси X и 1 единица по оси Y. Любая точка на этой зеленой линии указывает на то, что доля неправильно классифицированных такая же, как и доля правильно классифицированных, а это означает, что наша модель имеет только пятьдесят процентов шансов сделать правильные прогнозы.

Как обсуждалось выше, наша цель должна состоять в том, чтобы уменьшить количество ошибок Типа 1 и Типа 2, что означает, что мы должны выбрать меньшее значение FPR по сравнению со значением TPR. как только мы построим график ROC с несколькими пороговыми значениями, скажем, T1, T2, T3, T4, T5, T6, график будет выглядеть так, как показано ниже.

Здесь мы видим, что для порога T1 мы имеем большее значение TPR [близкое к 1] по сравнению с FPR. Но для T2 TPR такой же, как у T1, однако FPR T2 меньше, чем FPR T1. Итак, если нам нужно выбрать порог между T1 и T2, мы выберем T2.

Точно так же для порога T3 мы видим, что FPR резко уменьшился по сравнению с FPR T2, но для порога T3 значение TPR также уменьшилось. Точно так же в T4 у нас есть FPR как ноль, что означает, что ложноположительные значения абсолютно равны нулю, однако ложноотрицательные значения могли быть там, из-за которых значение TPR меньше 1.

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

Теперь, когда мы знаем о ROC, давайте разберемся с AUC (площадь под кривой). AUC помогает нам сравнить одну ROC-кривую с другой.

Допустим, мы обучили нашу модель с использованием двух разных алгоритмов, скажем, логистической регрессии, обозначенной красным ROC, и другого алгоритма, скажем, машины опорных векторов (SVM), обозначенной синим ROC.

Если нам нужно решить, какой алгоритм работает хорошо, мы должны выбрать ROC, чей AUC больше. Здесь, в приведенном выше случае, площадь под красным ROC больше, чем под синим ROC. Следовательно, мы можем сказать, что логистическая регрессия хорошо подходит для этого конкретного случая.

На этом все, надеюсь, статья вам помогла.

Источник: https://statquest.org/roc-and-auc-in-r/ [Джош Стармер]