Как рассчитать точность прогноза, используя матрицу ошибок?


Точность прогноза (Accuracy) — это одна из ключевых метрик для оценки качества классификационной модели. Она показывает, насколько правильно модель классифицировала примеры по отношению ко всем предсказаниям. Рассчитывается она на основе матрицы ошибок (confusion matrix).

📊 Что такое матрица ошибок?

Матрица ошибок (confusion matrix) — таблица, которая показывает сравнение между реальными метками классов и предсказанными моделью. Применяется для классификации. Простейший вариант — для бинарной классификации (2 класса):

Предсказано: Положит. Предсказано: Отрицат.
Факт: Положит. TP (True Positive) FN (False Negative)
--- --- ---
Факт: Отрицат. FP (False Positive) TN (True Negative)
--- --- ---

▪ Обозначения:

  • TP — модель правильно предсказала положительный класс;

  • TN — модель правильно предсказала отрицательный класс;

  • FP — ложноположительное: модель ошибочно предсказала положительный, но на самом деле класс отрицательный;

  • FN — ложноотрицательное: модель ошибочно предсказала отрицательный, но на самом деле класс положительный.

📌 Формула точности (Accuracy)

Accuracy = (TP + TN) / (TP + TN + FP + FN)

То есть, доля правильных предсказаний от общего количества наблюдений.

📘 Пример расчёта

Допустим, у нас есть матрица ошибок:

Предсказано: 1 Предсказано: 0
Факт: 1 TP = 70 FN = 10
--- --- ---
Факт: 0 FP = 5 TN = 115
--- --- ---

Вычислим:

  • Число верных предсказаний: TP + TN = 70 + 115 = 185

  • Общее число наблюдений: 70 + 10 + 5 + 115 = 200

Accuracy = 185 / 200 = 0.925 или 92.5%

🧠 Как использовать для многоклассовой классификации?

В случае многоклассовой классификации (более 2-х классов), матрица становится квадратной N x N, где N — количество классов.

Точность рассчитывается аналогично:

Accuracy = (Сумма всех правильно классифицированных наблюдений) / (Общее количество наблюдений)

\= (сумма элементов главной диагонали) / (сумма всех элементов матрицы)

Пример для 3 классов:

Пр. A Пр. B Пр. C
Факт: A 50 2 3
--- --- --- ---
Факт: B 4 40 6
--- --- --- ---
Факт: C 1 3 41
--- --- --- ---

Тогда:

  • Главная диагональ: 50 + 40 + 41 = 131

  • Сумма всех: 50+2+3+4+40+6+1+3+41 = 150

Accuracy = 131 / 150  0.873 (87.3%)

⚠ Ограничения метрики Accuracy

Хотя точность легко интерпретировать, она не всегда отражает реальное качество модели, особенно в случае дисбаланса классов.

Пример:

  • Если 95% классов — это класс 0, модель, которая всегда предсказывает 0, будет иметь 95% точности, но не будет распознавать класс 1 вообще.

В таких случаях важны и другие метрики, например:

  • **Precision
    **
  • **Recall
    **
  • **F1-score
    **
  • **ROC AUC
    **

📌 Вспомогательные функции в Python (scikit-learn)

from sklearn.metrics import accuracy_score, confusion_matrix
y_true = \[0, 1, 1, 0, 1\]
y_pred = \[0, 0, 1, 0, 1\]
print(accuracy_score(y_true, y_pred)) # Вернёт точность
print(confusion_matrix(y_true, y_pred)) # Покажет матрицу ошибок

📎 Выводы из матрицы ошибок:

  • Accuracy говорит о доле правильных ответов.

  • Матрица ошибок даёт подробную информацию о типах ошибок.

  • Для несбалансированных данных лучше использовать дополнительные метрики.