Матрица путаницы в машинном обучении с ПРИМЕРОМ

⚡ Умное резюме

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

  • 🔘 Четыре результата: В каждую ячейку бинарной матрицы записываются истинно положительные, истинно отрицательные, ложноположительные и ложноотрицательные значения.
  • ☑️ Типы ошибок: Ложноположительный результат — это ошибка первого типа, а ложноотрицательный — ошибка второго типа.
  • ✅ Производные метрики: Точность, прецизионность, полнота, специфичность и F1-мера — все эти показатели определяются на основе одних и тех же четырех критериев.
  • 🧪 Помимо точности: При работе с несбалансированными данными точность модели повышается, в то время как матрица показывает, в каком классе она на самом деле не справляется.
  • 🇧🇷 Многоклассовый вид: N классов образуют сетку N×N, где на диагонали размещены все правильные предсказания.
  • ⚙️ Python маршрут: Библиотека scikit-learn создает одну и ту же таблицу в две строки кода с помощью функций confusion_matrix() и classification_report().

Матрица ошибок в машинном обучении на примере

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

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

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

Четыре результата матрицы путаницы

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

Бинарная таблица ошибок, отображающая квадранты TP, FP, FN и TN.
Таблица путаницы

В таблице выше показаны четыре квадрата, которые содержит каждая бинарная матрица ошибок:

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

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

Точность теста можно вычислить по матрице ошибок, как показано в формуле ниже:

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

Пример матрицы путаницы

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

Настоящий позитив:

Вы сделали позитивный прогноз, и он сбылся. Например, вы предсказали победу Франции на чемпионате мира, и она победила.

Истинно отрицательный:

Вы сделали негативный прогноз, и это тоже правда. Вы предсказали, что Англия не победит, а она проиграла.

Ложный положительный результат:

Ваш прогноз положительный, но он ложный.

Вы предсказывали победу Англии, но она проиграла.

Ложноотрицательный результат:

Ваш прогноз отрицательный, и результат делает его ложным.

Вы предсказывали, что Франция не победит, но она победила.

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

Как рассчитать матрицу неточностей

Вот пошаговый процесс расчета матрицы ошибок. добыча данных:

  • Шаг 1) Во-первых, вам потребуется тестовый набор данных вместе с ожидаемыми значениями результатов.
  • Шаг 2) Спрогнозируйте все строки в тестовом наборе данных.
  • Шаг 3) Сравните ожидаемые результаты с прогнозами и подсчитайте:
    1. Сумма правильных предсказаний каждого класса.
    2. Сумма неправильных предсказаний каждого класса.

После этого эти числа организованы следующими способами:

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

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

Другие важные термины с использованием матрицы путаницы

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

  • Положительная прогностическая ценность (PPV): Это очень близко к точности. Одно существенное различие между этими двумя терминами заключается в том, что положительная прогностическая ценность учитывает распространенность. В ситуации, когда классы идеально сбалансированы, положительная прогностическая ценность совпадает с точностью.
  • Нулевая частота ошибок: Этот термин определяет, как часто ваше предсказание будет неверным, если вы всегда будете предсказывать класс большинства. Вы можете рассматривать его как базовый показатель для сравнения с вашим классификатором.
  • Оценка F: Показатель F1 представляет собой взвешенное среднее значение доли истинно положительных результатов (полноты) и точности.
  • ROC-кривая: Кривая ROC отображает зависимость истинно положительных результатов от ложноположительных результатов при различных пороговых значениях. Она также демонстрирует компромисс между чувствительностью (полнотой) и специфичностью, которая представляет собой истинно отрицательную частоту.
  • Точность: Метрика точности показывает точность положительного класса. Он измеряет, насколько вероятен прогноз положительного класса.

Формула точности: количество истинно положительных результатов, деленное на сумму истинно положительных результатов и ложноположительных результатов.

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

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

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

Метрики и формулы матрицы ошибок

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

Метрика Формула Вопрос, на который он отвечает Используйте это, когда
Точность подачи (TP + TN) / (TP + TN + FP + FN) Сколько прогнозов в целом оказались верными? Классы примерно сбалансированы.
Точность ТП / (ТП + ФП) Когда модель выдает положительный результат, как часто это оказывается правдой? Ложные тревоги обходятся дорого.
Напомним (чувствительность) ТП / (ТП + ФН) Сколько из всех реально выявленных положительных случаев удалось обнаружить? Упущенные положительные результаты обходятся дорого.
специфичность ТН / (ТН + ФП) Сколько из всех реальных негативных моментов было устранено? Отрицательный класс тоже имеет значение.
Счет F1 2 × (Точность × Полнота) / (Точность + Полнота) Каков баланс между ними? Для обоих случаев нужен один номер.

Рассмотрим спам-фильтр, протестированный на 100 электронных письмах, который выдает TP = 45, FN = 5, FP = 10 и TN = 40. Точность равна (45 + 40) / 100 = 0.85. Прецизия равна 45 / (45 + 10) = 0.82, полнота равна 45 / (45 + 5) = 0.90, а специфичность равна 40 / (40 + 10) = 0.80. Показатель F1 равен 0.86.

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

Матрица неточностей для многоклассовой классификации

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

Трехклассовая модель, сортирующая изображения на кошек, собак и кроликов, создает сетку 3×3. Если ячейка в строке «кошка», столбце «собака» содержит 12 значений, то двенадцать изображений кошек были помечены как изображения собак. Именно такой уровень детализации делает матрицу более полезной, чем оценка: она указывает конкретную пару классов, которые модель не может разделить.

Точность, полнота и F1-мера определяются для каждого класса с использованием подхода «один против всех», где рассматриваемый класс является положительным, а все остальные — отрицательными. Затем показатели для каждого класса объединяются одним из трех способов:

  • Макроэкономическое среднее: Вычисляет метрику для каждого класса независимо, затем берет невзвешенное среднее. Каждый класс имеет одинаковый вес, поэтому редкие классы не теряются.
  • Микросреднее: Перед вычислением метрики суммируются значения TP, FP и FN по всем классам. Преобладают большие классы, и для задач с одной меткой микроточность, микрополнота и точность идентичны.
  • Средневзвешенное: Усредняет оценки по классам, используя в качестве веса количество истинных экземпляров каждого класса, что позволяет визуально выявлять дисбаланс классов.

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

Как создать матрицу ошибок в Python

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

from sklearn.metrics import confusion_matrix

y_true = [1, 0, 1, 1, 0, 1, 0, 0, 1, 0]
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0]

cm = confusion_matrix(y_true, y_pred)
print(cm)

Вызов возвращает массив NumPy размером 2×2, в котором строка 0 соответствует отрицательному классу, а строка 1 — положительному классу:

[[4 1]
 [1 4]]

Считывание массива в соответствии с соглашением scikit-learn дает TN = 4 (верхний левый угол), FP = 1 (верхний правый угол), FN = 1 (нижний левый угол) и TP = 4 (нижний правый угол). Распаковка этих четырех значений в одну строку создает карту.ping явный:

tn, fp, fn, tp = confusion_matrix(y_true, y_pred).ravel()

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

from sklearn.metrics import classification_report

print(classification_report(y_true, y_pred))

Для графического представления, ConfusionMatrixDisplay.from_predictions(y_true, y_pred) Отображает ту же таблицу в виде тепловой карты с метками. Полный список аргументов, включая labels и normalize варианты, задокументированы в scikit-learn confusion_matrix referenceАналогичный этап оценки применяется и к моделям, построенным с использованием TensorFlow, потому что этот показатель зависит только от предсказанных меток.

Зачем вам нужна матрица путаницы?

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

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

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

Часто задаваемые вопросы (FAQ)

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

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

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

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

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

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

Второй пилот GitHub Черновой вариант импорта, вызова метрики и построения тепловой карты создается на основе короткого комментария. Рассматривайте черновик как отправную точку — всегда самостоятельно проверяйте порядок осей и аргумент положительной метки, поскольку транспонированная матрица инвертирует все выводы.

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

Подведем итог этой публикации следующим образом: