Почему confusion matrix часто объясняет модель лучше, чем одно итоговое число
Когда мы смотрим только на accuracy, F1 или recall, легко потерять структуру ошибок. Confusion matrix полезна именно тем, что раскладывает ошибку по клеткам. Она показывает, что модель делает с каждым типом объекта: кого распознает правильно, кого путает, кого пропускает, где слишком часто тревожится. Это превращает оценку качества из абстрактной цифры в наблюдаемое поведение модели.
Для практики это очень важно. Две модели с одинаковой accuracy могут быть устроены совершенно по-разному. Одна почти не пропускает положительный класс, но часто дает ложные тревоги. Другая, наоборот, осторожна и молчит там, где лучше было бы сработать. Без confusion matrix этого различия просто не видно.
Как читать четыре клетки матрицы
True Positive — это правильное обнаружение положительного класса. False Positive — ложная тревога. True Negative — правильное распознавание отрицательного случая. False Negative — пропущенный положительный объект. В каждой задаче цена этих клеток разная. Поэтому confusion matrix всегда читается вместе с контекстом, а не сама по себе.
$$ Accuracy = \frac{TP + TN}{TP + TN + FP + FN} $$Даже привычная accuracy напрямую собирается из клеток confusion matrix. Но сама матрица полезнее, потому что позволяет увидеть, где именно рождаются ошибки.
TP— true positives, верно найденные положительные объектыTN— true negatives, верно распознанные отрицательные объектыFP— false positives, ложные тревогиFN— false negatives, пропущенные положительные объекты
Эта формула хороша тем, что показывает ограничение accuracy: она суммирует правильные ответы, но не рассказывает об их структуре. А именно структура в реальной задаче часто важнее всего.
Как использовать матрицу ошибок в диагностике
Если растет число false positives, возможно, модель слишком агрессивна или порог слишком низок. Если много false negatives, модель недочувствительна к положительному классу. Если проблема асимметрична по сегментам, возможно, нужно смотреть на качество по группам, а не только в целом по выборке. Матрица ошибок — это не просто визуализация, а вход в корректирующее действие.
from sklearn.metrics import confusion_matrix # строим матрицу ошибок по реальным и предсказанным ответам
y_true = [1, 0, 1, 1, 0, 0, 1, 0] # реальные классы объектов
y_pred = [1, 0, 1, 0, 0, 1, 1, 0] # предсказания модели после порогового решения
cm = confusion_matrix(y_true, y_pred) # получаем четыре клетки ошибки в виде матрицы
print(cm) # печатаем матрицу, чтобы увидеть структуру ошибокЕсли привыкнуть читать модель через confusion matrix, качество начинает восприниматься намного глубже. Ты уже не спрашиваешь только «насколько хорошо в среднем?», а задаешь более взрослый вопрос: «какие именно ошибки делает система и готовы ли мы с ними жить?».