Матрица ошибок (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).
Матрица:
| Предсказан спам | Предсказано не спам | |
|---|---|---|
| Спам | 8 | 2 |
| Не спам | 5 | 85 |
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()Матрица ошибок — базовый инструмент оценки классификатора, который дополняет числовые метрики и делает ошибки модели наглядными.