Матрица путаницы, точность, отзыв, оценка F1 и кривая ROC

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

Регрессия против классификации

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

Поскольку наши целевые значения непрерывны в случае проблем регрессии, имеет смысл использовать такие показатели, как средняя абсолютная ошибка (MAE), среднеквадратическая ошибка (MSE), R-квадрат и т. д. Эти показатели требуют вычисления разницы (то, что мы считаем как ошибка) между фактическим значением и прогнозируемым значением для каждого экземпляра. Но из-за дискретных целевых значений в задачах классификации такие виды вычислений ошибок не подходят и нужно что-то другое.

Что такое точность?

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

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

Точность — когда и почему нет?

Чтобы понять проблемы, связанные с использованием точности, рассмотрим задачу классификации, чтобы определить, является ли пассажир террористом или нет. Предположим, что набор данных состоит из записей о 100 пассажирах, из которых 4 помечены как террористы, а остальные не являются террористами. В этом случае, даже если мы придумаем самый тупой классификатор, который помечает каждого пассажира как нетеррориста, и посчитаем его точность, она окажется равной 96%! Если мы посмотрим только на эту точность, модель определенно выглядит многообещающе, но мы знаем, что мы сделали правильно?! Мы сразу делаем вывод, что мы не можем полагаться на такие расплывчатые показатели, особенно когда ставки высоки — мы не можем рисковать, позволяя террористу подняться на борт самолета!

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

  • Тип набора данных (будь то искаженный/несбалансированный или сбалансированный набор данных). В нашем примере у нас есть набор данных несбалансированного класса с двумя классами, т. е. террористами (4 экземпляра) и нетеррористами (96 экземпляров). . Точность просто напрямую делит количество правильных прогнозов на общее количество экземпляров и не учитывает распределение или вес каждого класса в наборе данных.
  • Контекст/природа проблемы (есть ли какие-либо соответствующие классы/чувствительные классы, которые мы не можем рискнуть неправильно классифицировать?):в большинстве реальных задач классификации нас часто интересует один класс. (важный/соответствующий класс), который мы не хотим неправильно обозначать, например, класс террористов в нашем случае. Мы хотим, чтобы ни один террорист не сел в самолет любой ценой. В примере у нас есть только 4 экземпляра соответствующего класса, и классификатор (который мы назвали тупым), который мы построили с точностью 96%, ошибся во всех них! Технически это означает, что мы должны использовать какую-то другую метрику, которая возвращает 0 для нашего классификатора. Но точность не учитывает никаких семантических различий между двумя классами и рассматривает их как одинаково важные.

Поскольку точность не учитывает некоторые чувствительные факторы нашего набора данных и проблемы, мы переходим к использованию более качественных показателей для оценки производительности. К ним относятся: матрица путаницы, отзыв, точность, оценка F1, оценка ROC-AUC. Для простоты мы обсуждаем эти показатели для бинарной классификации, но их можно расширить и для многоклассовой классификации.

Рассмотрим еще один пример прогнозирования того, страдает ли пациент редким заболеванием, на основе его медицинских характеристик. Мы принимаем наличие болезни как «положительный класс» и отсутствие болезни как «отрицательный класс». Предположим для простоты, что наш набор данных состоит из 100 образцов, из которых 6 оказались положительными, а остальные отрицательными.

Предположим, что мы обучили нашу модель на приведенном выше наборе данных. Затем мы используем обученную модель, чтобы делать прогнозы на том же наборе данных, прежде чем опробовать ее на новых данных или тестовых данных. Пусть наша модель предсказывает 9 случаев как положительные и 91 как отрицательные. Мы далее разбиваем наши прогнозы в таблице ниже (это похоже на версию матрицы путаницы, которую мы вскоре обсудим). Могут возникнуть следующие случаи:

  • Положительно/положительно:модель предсказывала положительный результат, и на самом деле он оказался положительным
  • Положительное/отрицательное:модель предсказывала положительное значение, но на самом деле оно было отрицательным
  • Отрицательно/положительно:модель предсказывала отрицательное значение, но на самом деле оно было положительным
  • Отрицательно/Отрицательно:модель предсказала отрицательное значение, и на самом деле оно было отрицательным

Мы видим, что наша модель не смогла классифицировать четыре положительных случая — это составляет около 67% (4 из 6) наших соответствующих классов! Как видно из третьей строки вышеприведенной таблицы, четыре положительных случая были предсказаны как отрицательные — это может иметь очень серьезные последствия для жизни пациентов, которым был поставлен неправильный диагноз, поскольку их не будут лечить в нужное время, потому что они будут думать. что у них нет болезни.

Значения зеленого цвета представляют правильные прогнозы, тогда как значения красного цвета представляют неправильные прогнозы. Если мы посчитаем точность нашей модели, то она окажется равной 89% — выглядит неплохо, правда? Однако, учитывая чувствительность даже ошибочной классификации одного положительного случая как отрицательного, мы не можем полагаться на точность, поскольку положительный класс имеет большее значение/вес, чем отрицательный класс. Поэтому вместо точности мы используем следующие показатели для оценки нашего классификатора с разных сторон и точек зрения.

Матрица путаницы

Матрица путаницы для бинарного классификатора представлена ​​матрицей 2x2, в которой записано, сколько экземпляров было классифицировано правильно и сколько раз модель принимала положительный класс за отрицательный или наоборот.

  • Строки представляют фактические классы (настоящие метки)
  • Столбцы представляют предсказанные классы (предсказанные нашей моделью).

Теперь мы можем связать TP, FP, FN, TN с нашим предыдущим обсуждением предсказанных/фактических случаев класса, которые могут возникнуть:

  • Истинный положительный результат (TP) — положительный/положительный:модель предсказывала положительный результат, и на самом деле он оказался положительным
  • Ложноположительный результат (FP) — положительный/отрицательный:модель предсказывала положительный результат, но на самом деле он был отрицательным
  • Ложноотрицательный (FN) — отрицательный/положительный:модель предсказывала отрицательное значение, но на самом деле оно было положительным
  • Истинно отрицательный (TN) — отрицательный/отрицательный:модель предсказывала отрицательное значение, и на самом деле оно было отрицательным

Матрица путаницы дает нам быстрый взгляд на производительность нашей модели. Правильные прогнозы показаны вдоль главной диагонали матрицы, т. е. истинно положительные (TP) и истинно отрицательные (TN). Идеальная модель будет иметь ненулевые значения только вдоль главной диагонали, а все недиагональные элементы будут равны нулю.

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

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

Точность

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

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

  • сколько примеров наша модель считает положительными, включая как правильные прогнозы (TP), так и неправильные прогнозы (FP)
  • сколько на самом деле положительных примеров, которые наша модель называет положительными (TP)

Таким образом, мы можем вычислить точность как: Точность = TP/(TP + FP)

Для нашего примера мы можем рассчитать точность как 2/(2 + 7) = 0,22, что не очень впечатляет.

Когда обращать внимание на точность? Точность является подходящей метрикой в ​​тех случаях, когда мы не хотим ошибочно классифицировать отрицательный класс как положительный, т. е. хотим свести к минимуму количество ложных срабатываний. Например, если модель предсказывает, безопасно ли данное видео для детей, то есть безопасно (положительно) и небезопасно (отрицательно). Эта модель может делать следующие ошибки:

  • Ложный отрицательный результат: классифицирует безопасное видео как небезопасное и отклоняет его, и все в порядке!
  • Ложное срабатывание: классифицирует небезопасные видео как безопасные и показывает их детям, что недопустимо!

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

Отзывать

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

В нашем примере обнаружения заболеваний нас больше интересует поиск всех соответствующих классов (положительных случаев) в нашем наборе данных, и мы не хотим ошибочно классифицировать любой положительный пример как отрицательный. Recall отвечает на следующий вопрос: насколько хорошо наша модель обнаруживает все релевантные классы? Другими словами, она вычисляет долю положительных экземпляров данных, которые были правильно классифицированы. Нам нужны две вещи:

  • сколько примеров на самом деле являются положительными в исходном наборе данных, включая правильно классифицированные (TP) и неправильно классифицированные (FN)
  • сколько положительных примеров правильно классифицирует наша модель (ТП)

Таким образом, мы можем вычислить отзыв как: Отзыв = TP/(TP + FN)

Мы можем вычислить полноту нашей модели как 2/(2 + 4) = 0,33, что не очень впечатляет! Это означает, что нам нужно улучшить существующую модель или попытаться обучить более сложную.

Примечание. Отзыв также известен как "Чувствительность" или "Истинно положительный показатель" (TPR).

Когда следует обращать внимание на отзыв? Отзыв является подходящим показателем в тех случаях, когда мы не хотим, чтобы положительный пример был неправильно помечен как отрицательный. Одним из примеров является обнаружение редкого заболевания, при котором мы не хотим говорить ни одному положительному пациенту, что у него нет болезни. Другим примером может быть классификатор, который обнаруживает присутствие вора в магазине на основе изображений обслуживающего персонала. Пропуск магазинного вора, т. е. пометка магазинного вора как безопасного покупателя (FN), гораздо важнее для бизнеса по сравнению с получением ложной тревоги (FP — пометка безопасного покупателя как магазинного вора).

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

Оценка F1

Это гармоническое среднее точности и отзыва.

Оценка F1 объединяет точность и полноту в единую метрику путем вычисления их среднего гармонического значения.

Почему среднее гармоническое? Если мы вычислим обычное среднее значение точности и полноты, они будут считаться одинаково важными. Чтобы понять это, рассмотрим следующие случаи:

  • Точность = 1, отзыв = 0, среднее значение = 0,5.
  • Точность = 0, отзыв = 1, среднее значение = 0,5.

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

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

  • Точность = 1, отзыв = 0, среднее гармоническое (оценка F1) = 0
  • Точность = 0, отзыв = 1, среднее гармоническое (оценка F1) = 0

Кривая точности-отзыва

Это сюжет точности против припоминания.

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

Чтобы выбрать хороший компромисс между точностью и полнотой, мы можем построить график точности и полноты, получившийся график будет называться кривой Precision-Recall или PR. На следующем рисунке представлена ​​кривая PR для классификатора, обученного классифицировать рукописные цифровые изображения MNIST. Блокнот можно найти здесь.

Вероятно, мы хотим выбрать компромисс между точностью и полнотой непосредственно перед тем, как увидим падение на графике (в приведенном выше случае полнота около 0,7 и точность около 0,8) — однако это может зависеть от требований задачи.

Если кто-то говорит: "Давайте добьемся точности 99 %", спросите: "При каком отзыве?" —Орельен Жерон.

ROC-кривая

Это график отношения истинно положительных результатов (TPR) к уровню ложноположительных результатов (FPR).

Кривая рабочих характеристик приемника (ROC) — еще один инструмент, используемый в задачах классификации для определения производительности модели. В отличие от отображения точности в зависимости от полноты на кривой PR, на графике отображается доля истинно положительных результатов (отзыв или чувствительность) и доля ложноположительных результатов (чувствительность).

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

Чтобы сравнить производительность различных классификаторов на основе их кривой ROC, вычисляется их AUC (площадь под кривой), которая может находиться в диапазоне от 0 до 1. У идеального классификатора AUC будет равен 1, в то время как у случайный классификатор, изображенный пунктирной линией, будет иметь AUC, равный 0,5. Этот показатель также известен как показатель ROC-AUC.

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

Использованная литература: