Матрица ошибок (Confusion Matrix)

Матрица ошибок (Confusion Matrix) для оценки качества классификационных моделей

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

Структура матрицы ошибок

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

Для бинарной классификации (когда есть только два класса, например, "положительный" и "отрицательный") матрица ошибок имеет следующую структуру:

                 Предсказанный класс
                Положительный  Отрицательный
Истинный     Положительный   TP       FN
класс        Отрицательный    FP       TN

Где:

  • TP (True Positives) - количество положительных примеров, классифицированных как положительные

  • TN (True Negatives) - количество отрицательных примеров, классифицированных как отрицательные

  • FP (False Positives) - количество отрицательных примеров, ошибочно классифицированных как положительные

  • FN (False Negatives) - количество положительных примеров, ошибочно классифицированных как отрицательные

Пример матрицы ошибок

Рассмотрим задачу бинарной классификации на выявление спама в электронных письмах. Предположим, у нас есть тестовый набор из 100 писем, из которых 80 не являются спамом, а 20 - спам. Модель классифицировала эти письма следующим образом:

                 Предсказанный класс
                  Не спам  Спам
Истинный     Не спам   75     5
класс        Спам        5     15

В этой матрице:

  • 75 писем правильно классифицированы как не спам (TN)

  • 15 писем спама правильно классифицированы как спам (TP)

  • 5 писем, не являющихся спамом, ошибочно классифицированы как спам (FP)

  • 5 писем спама ошибочно классифицированы как не спам (FN)

Использование матрицы ошибок

Анализ матрицы ошибок позволяет получить ценную информацию о производительности классификационной модели:

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

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

  3. Сумма элементов в каждой строке (или столбце) дает общее количество примеров данного истинного (или предсказанного) класса.

На основе матрицы ошибок можно рассчитать другие важные метрики производительности классификатора, такие как precision, recall и F1-мера для каждого класса.

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

Вот пример кода на Python для построения и анализа матрицы ошибок классификационной модели:

from sklearn.metrics import confusion_matrix
from sklearn.metrics import ConfusionMatrixDisplay
import matplotlib.pyplot as plt

# Истинные метки
true_labels = [0, 1, 0, 1, 0, 1, 0, 0, 1, 1]

# Предсказанные метки
pred_labels = [0, 0, 0, 1, 0, 1, 1, 0, 1, 1]

# Построение матрицы ошибок
cm = confusion_matrix(true_labels, pred_labels)
print("Матрица ошибок:")
print(cm)

# Визуализация матрицы ошибок
cmd = ConfusionMatrixDisplay(cm, display_labels=['Не спам', 'Спам'])
cmd.plot(cmap='Blues')
plt.show()

Выход:

Матрица ошибок:
[[5 2]
 [1 2]]

И отобразится график матрицы ошибок:

Разберем этот пример:

  1. Мы импортируем функцию confusion_matrix из модуля sklearn.metrics для построения матрицы ошибок, а также ConfusionMatrixDisplay для визуализации.

  2. Создаем списки true_labels и pred_labels с истинными и предсказанными метками классов соответственно.

  3. Вызываем функцию confusion_matrix, передавая туда истинные метки true_labels и предсказанные метки pred_labels. Результат сохраняется в переменную cm.

  4. Выводим полученную матрицу ошибок cm.

  5. Создаем объект ConfusionMatrixDisplay с матрицей ошибок cm и метками классов ['Не спам', 'Спам'].

  6. Вызываем метод plot для визуализации матрицы ошибок с цветовой картой 'Blues'.

  7. Вызываем plt.show() для отображения графика.

В этом примере мы видим, что из 10 примеров:

  • 5 примеров "Не спам" классифицированы правильно (TN)

  • 2 примера "Не спам" ошибочно классифицированы как "Спам" (FP)

  • 1 пример "Спам" ошибочно классифицирован как "Не спам" (FN)

  • 2 примера "Спам" классифицированы правильно (TP)

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

Last updated