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

Написано Rohit Kundu и первоначально опубликовано в блоге V7 (Матрица путаницы: как ее использовать и интерпретировать результаты)

💡Мы всегда ищем талантливых технических писателей. Хотели бы вы внести свой вклад в блог V7? Отправьте свое портфолио на [email protected]

Глубокое обучение сейчас является самой популярной техникой для решения любой задачи Computer Vision — от классификации и сегментации изображений до реконструкции 3D-сцены или нейронного рендеринга.

Но как узнать, хорошо ли работает глубокая модель? Мы можем использовать «точность» в качестве оценочной метрики, верно?

Итак, что нам на самом деле говорит «точность»? Он говорит нам, сколько правильных прогнозов сделает модель при наличии 100 выборок.

Тем не менее, этой информации недостаточно для анализа производительности модели. Что, если задача прогнозирования состоит из 5 разных классов выборок, и модель постоянно делает неправильные прогнозы по одному из этих классов, например, по классу-4?

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

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

В этой статье мы рассмотрим:

  • Что такое матрица путаницы?
  • Матрица путаницы для бинарных классов
  • Матрица путаницы для нескольких классов
  • Рабочие характеристики приемника
  • Инструменты для вычисления матрицы путаницы

Что такое матрица путаницы?

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

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

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

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

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

Матрица путаницы для двоичных классов

Набор данных двоичного класса состоит всего из двух различных категорий данных.

Эти две категории можно для простоты назвать «позитивной» и «негативной».

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

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

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

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

Складывая числа в первом столбце, мы видим, что общее количество выборок в положительном классе равно 45+15=60. Точно так же добавление чисел во втором столбце дает нам количество образцов в отрицательном классе, которое в данном случае равно 40. Сумма чисел во всех ячейках дает общее количество оцененных образцов. Далее правильными классификациями являются диагональные элементы матрицы — 45 для положительного класса и 32 для отрицательного класса.

Теперь 15 образцов (нижний левый прямоугольник), которые должны были относиться к положительному классу, были классифицированы моделью как отрицательный класс. Поэтому это называется «Ложноотрицательные результаты», потому что модель предсказывала «отрицательный результат», что было неверным. Точно так же ожидалось, что 8 образцов (верхний правый прямоугольник) будут иметь отрицательный класс, но модель классифицировала их как «положительные». Поэтому их называют «ложными срабатываниями». Мы можем более точно оценить модель, используя эти четыре разных числа из матрицы.

В общем, мы можем получить следующие метрики количественной оценки из этой матрицы путаницы бинарных классов:

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

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

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

F1-Score (для положительного класса). Гармоническое среднее значений точности и отзыва, полученных для положительного класса.

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

Матрица путаницы для нескольких классов

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

Давайте подробно остановимся на особенностях матрицы путаницы с несколькими классами на примере. Предположим, у нас есть тестовый набор (состоящий из 191 выборки) набора данных со следующим распределением:

Матрица путаницы, полученная путем обучения классификатора и оценки обученной модели на этом тестовом наборе, показана ниже. Пусть эта матрица называется «M», а каждый элемент в матрице обозначается «M_ij», где «i» — это строка номер (прогнозируемый класс), а «j» — номер столбца (ожидаемый класс), например, M_11=52, M_42=1.

Эта матрица путаницы дает много информации о производительности модели:

  • Как обычно, диагональные элементы — это правильно предсказанные выборки. В общей сложности 145 выборок были правильно предсказаны из 191 выборки. Таким образом, общая точность составляет 75,92%.
  • M_24=0 означает, что модель не путает образцы, изначально принадлежащие к классу 4, с классом 2, т. е. классификационная граница между классами 2 и 4 хорошо изучена классификатором.
  • Чтобы улучшить производительность модели, следует сосредоточиться на прогностических результатах в классе 3. Классификатор неправильно классифицировал в общей сложности 18 образцов (добавляя числа в красных прямоугольниках столбца 3), что является самым высоким показателем ошибочной классификации среди всех классов. Таким образом, точность предсказания для класса 3 составляет всего 58,14%.

Матрица путаницы может быть преобразована в матрицу типа «один против всех» (матрица путаницы бинарного класса) для расчета метрик по классам, таких как точность, точность, полнота и т. д.

Преобразование матрицы в матрицу «один против всех» для данных класса 1 выглядит так, как показано ниже. Здесь положительный класс относится к классу-1, а отрицательный класс относится к «НЕ классу-1». Теперь формулы для матриц путаницы бинарных классов можно использовать для вычисления метрик по классам.

Точно так же для класса 2 преобразованная матрица путаницы «один против всех» будет выглядеть следующим образом:

Используя эту концепцию, мы можем рассчитать классовую точность, точность, полноту и f1-показатели и свести результаты в таблицу:

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

Micro F1-Score

Микроусредненная оценка f1 — это глобальная метрика, которая рассчитывается с учетом чистой TP, т. е. суммы TP по классам (из соответствующих матриц «один против всех»), чистой FP и чистой FN. Получаются следующие:

Чистая TP = 52+28+25+40 = 145
Чистая FP = (3+7+2)+(2+2+0)+(5+2+12)+(1+1+9) = 46
Чистое FN = (2+5+1)+(3+2+1)+(7+2+9)+(2+0+12) = 46

Обратите внимание, что для каждой матрицы путаницы чистая FP и чистая FN будут иметь одно и то же значение. Таким образом, микроточность и микроотзыв можно рассчитать как:

Micro Precision = Чистая TP/(Чистая TP+Чистая FP) = 145/(145+46) = 75,92%
Micro Recall = Чистая TP/(Чистая TP+Чистая FN) = 75,92%

Таким образом, Micro F-1 = гармоническое среднее микроточности и микроотзыва = 75,92%.

Поскольку все показатели глобальны, мы получаем:
Микроточность = Микроотзыв = Микро-показатель F1 = Точность = 75,92%

Макро F1-Score

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

Получаются невзвешенные средние значения мер:

Точность макросов = 76,00 %
Отзыв макросов = 75,31 %
Оценка F1 макросов = 75,60 %

Взвешенная оценка F1

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

Рабочие характеристики приемника

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

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

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

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

Теперь, что мы подразумеваем под «порогами» в контексте ROC-кривых? Различные пороги представляют различные возможные границы классификации модели. Давайте разберемся в этом на примере. Предположим, у нас есть набор данных бинарного класса с 4 образцами положительного класса и 6 образцами отрицательного класса, а граница решения модели показана синей линией в случае (A) ниже. ПРАВАЯ сторона границы решения изображает положительный класс, а ЛЕВАЯ сторона изображает отрицательный класс.

Теперь этот порог границы решения можно изменить, чтобы получить случай (B), где точность равна 100 % (но полнота 50 %), или случай ©, где полнота 100 % (но точность 50 %). Показаны соответствующие матрицы путаницы. Таким образом, значения TPR и FPR для этих трех сценариев с разными пороговыми значениями показаны ниже.

💡Подробнее: Точность и полнота: различия, варианты использования и оценка

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

Учащийся, который делает случайные прогнозы, называется классификатором «без навыков». Для набора данных, сбалансированного по классам, вероятность по классам будет составлять 50%. Он действует как опорная линия для графика кривой точности-отзыва. Идеальный ученик — это тот, кто правильно классифицирует каждую выборку, а также служит ориентиром для графика ROC.

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

Другой важной метрикой, которая измеряет общую производительность классификатора, является значение «Область под ROC» или AUROC (или просто AUC). Как следует из названия, это просто площадь, измеренная под ROC-кривой. Более высокое значение AUC представляет лучший классификатор. AUC вышеприведенного ученика-практика составляет 90%, что является хорошим показателем. AUC человека без навыков составляет 50%, а идеального ученика — 100%.

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

Инструменты для вычисления матрицы путаницы

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

Пакет scikit-learn Python содержит все эти инструменты. Например, используя функцию confusion_matrix и вводя в качестве аргументов истинное распределение меток и прогнозируемое распределение меток (в указанном порядке), можно получить матрицу путаницы следующим образом:

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

Другими словами, для бинарной матрицы путаницы TP, TN, FP и FN будут выглядеть следующим образом:

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

Поскольку набор данных несбалансирован, ненормализованная матрица путаницы не дает точного представления тепловой карты. Например, M_22=28, что показано как тепловая карта низкой интенсивности в ненормализованной матрице, где на самом деле она представляет точность 82,35% для класса 2 (у которого всего 34 выборки), что прилично высок. Эта тенденция правильно зафиксирована в нормализованной матрице, где для M_22 показана высокая интенсивность. Таким образом, для создания тепловых карт желательна нормализованная матрица путаницы.

Микро-, макро- и средневзвешенная точность, полнота и f1-показатели могут быть получены с помощью функции scikit-learn classification_report в Python, опять же с использованием истинного распределения меток и прогнозируемого распределения меток (в указанном порядке). как аргументы. Полученные результаты будут выглядеть так, как показано на рисунке:

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

Построение кривой ROC для задачи классификации бинарных классов в Python очень просто и требует использования функции scikit-learn roc_curve. Истинные метки выборок и оценки вероятности предсказания (а не метки предсказанного класса) берутся в качестве входных данных в функцию для возврата FPR, TPR и пороговых значений. Пример показан ниже

Функция roc_curve выводит дискретные координаты кривой. Здесь используется функция Python matplotlib.pyplot для фактического построения кривой с использованием полученных координат в графическом интерфейсе.

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

Вычисление площади под значением кривой занимает всего одну строку кода на Python с использованием функции scikit-learn roc_auc_score. Он снова принимает в качестве входных данных истинные метки и вероятности предсказания и возвращает значение AUROC или AUC, как показано ниже.

Матрица путаницы — пример или недавнее применение

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

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

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

Ключевые выводы

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

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

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

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