Эта статья посвящена матрице неточностей и ее использованию в машинном обучении.

Многие новички в области машинного обучения часто путаются с этой очень важной темой и в конечном итоге пишут фрагмент кода, даже не понимая его реализации и использования. Что, если мы скажем, что это так же просто, как A, B, C, и нам НЕ нужно запоминать какие-либо формулы для вычисления наиболее необходимых повторений, точности, точности и т. Д.? Понимание матрицы неточностей дает нам возможность решить, какая метрика действительно важна для проблемы, с которой мы могли бы иметь дело, и лучше интерпретировать производительность модели классификации. Эта статья полностью об этом.

Матрица неточностей:

«Матрица путаницы» - это объединение количества раз, когда модель дает правильный или неверный вывод, или просто количества раз, когда модель правильно определяет истину (фактические классы), и количества раз, когда она ошибается при определении одного класс от другого.

На рисунке выше (рисунок 1) представлена ​​типичная матрица путаницы для задачи классификации нескольких классов (здесь 3 класса), которую мы будем использовать для расчета определенных показателей в этой статье.

Применение матрицы неточностей

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

В качестве примера предположим, что наша модель предсказала типы фруктов - яблоко (A), банан (B) и заварной крем-яблоко (C) и дала матрицу путаницы (как на рисунке 1). Он дает нам следующую информацию о нашей проблеме и модели:

  • Общее количество наблюдений в данных (т.е. плодов) = 25.
  • Количество плодов типа A, B, C в данных = 10, 8, 7 соответственно
  • Модель видела больше яблок (A = 10), чем другие типы фруктов.
  • Диагональные наблюдения - это истинные положительные стороны каждого класса, то есть количество раз, когда модель правильно определила A как A, B как B и C как C.
  • Все другие недиагональные наблюдения представляют собой неправильную классификацию, сделанную моделью.

Давайте перестроим ту же матрицу путаницы в Python, чтобы значения метрики можно было проверять на каждом этапе.

Точность:

Сообщает нам, как часто модель может быть правильной.

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

Когда есть классовый дисбаланс, точность тоже может вводить в заблуждение. Предположим, у нас есть выборка из 100 фруктов, из которых 90 - яблоки, 5 - бананы и 5 - яблоки с заварным кремом. Даже если наша модель предсказывает все фрукты как яблоки, точность будет 90%, хотя правда в том, что наша модель на самом деле не очень хорошо работает!

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

Точность рассчитывается для модели в целом, а отзывчивость и точность рассчитываются для отдельных классов. Мы используем макро-, микро- или взвешенные оценки запоминания, точности и оценки F1 модели для задач мультиклассовой классификации. Давай проверим их.

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

Напоминание (также называемое истинно положительной оценкой или чувствительностью):

В качестве примера вычислим отзыв для класса B.

Вспомним для B из всех фактических экземпляров класса B (банан), как часто он правильно предсказывает как B (банан)

Напомним, для B = из общего количества B в данных (бананов = 8) в данных, сколько B модель правильно определила (6).

Таким образом, это будет 6/8 = 0,75 (что такое же, как в приведенном выше отчете о классификации для класса B).

Точность:

Точность для класса B: как часто модель является правильной, если она предсказывает как B?

Как и раньше, давайте посчитаем точность для класса B.

Точность для B: из общего числа наблюдений, предсказанных моделью как Bs (10), сколько верных Bs (6). Итак, это будет 6/10 = 0,6

F1 - оценка:

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

Оценка F1 класса B будет (2 x Отзыв x точность) / (Отзыв + точность) = 0,75 * 0,6 * 2 / (0,75 + 0,6) = 0,67.

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

Микро-средние баллы:

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

Средние макроуровни.

Это простое среднее значение оценок всех классов. Таким образом, средний уровень отзыва - это среднее значение количества отзывов классов A, B и C.

Средневзвешенные оценки:

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

Частота ошибочной классификации ( также известная как «частота ошибок»)

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

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

Приведенные ниже показатели рассчитываются специально для задач бинарной классификации, поскольку ложные срабатывания и ложные отрицания не меняются после того, как мы идентифицируем наш положительный класс (т. Е. Класс, который мы заинтересованы в прогнозировании). Тем не менее, корни матрицы неточностей берутся из таблицы ошибок для ошибок типа 1 и типа 2.

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

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

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

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

Истинная отрицательная ставка (или специфичность) - это показатель, который показывает, как часто модель предсказывает «нет» вместо фактического «нет». Это эквивалентно 1 минус процент ложных срабатываний.

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

Конечные примечания

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