Матрица ошибок (confusion matrix) — это таблица, которая показывает, как модель классификации отнесла объекты каждого истинного класса к предсказанным классам. Она позволяет увидеть не только общую долю ошибок, но и какие именно классы модель путает.

Структура для бинарной классификации

Обычно строки — истинные классы, столбцы — предсказанные (в scikit-learn именно так):

Предсказан «положительный»Предсказан «отрицательный»
Истинно «положительный»TP (True Positive)FN (False Negative)
Истинно «отрицательный»FP (False Positive)TN (True Negative)
  • TP — верно предсказан положительный класс.
  • TN — верно предсказан отрицательный класс.
  • FP — ложное срабатывание (ошибка I рода): модель сказала «да», а на самом деле «нет».
  • FN — пропуск (ошибка II рода): модель сказала «нет», а на самом деле «да».

Для многоклассовой классификации

Матрица размером , где — число классов.
Элемент на пересечении строки и столбца — сколько объектов истинного класса было предсказано как класс .
Диагональ — правильные ответы, всё вне диагонали — ошибки.

Какие метрики из неё выводятся

  • Accuracy = — общая доля правильных ответов.
  • Precision = — точность: насколько можно доверять положительным предсказаниям.
  • Recall (полнота) = — какую долю реальных положительных объектов модель нашла.
  • Specificity = — какую долю реальных отрицательных объектов модель верно отклонила.
  • F1-мера (F1-score) = — баланс точности и полноты.

Зачем нужна

  • Показывает асимметрию ошибок: например, при диагностике болезни пропустить больного (FN) опаснее, чем ложная тревога (FP).
  • Помогает при дисбалансе классов: accuracy может быть 95%, но если редкий класс предсказывается плохо, матрица это покажет.
  • Позволяет понять, какие классы путаются между собой.

Пример

Пусть 100 писем, из них 10 спам. Модель:

  • 8 спам-писем верно отнесла к спаму (TP = 8),
  • 2 спам-письма пропустила (FN = 2),
  • 5 обычных писем назвала спамом (FP = 5),
  • 85 обычных писем верно отнесла к обычным (TN = 85).

Матрица:

Предсказан спамПредсказано не спам
Спам82
Не спам585

Accuracy = , но Precision = , Recall = . То есть модель часто ошибается с ложными срабатываниями.

В Python (scikit-learn)

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
 
cm = confusion_matrix(y_true, y_pred)
print(cm)
 
# Визуализация
disp = ConfusionMatrixDisplay(confusion_matrix=cm, display_labels=model.classes_)
disp.plot()

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