Как рассчитать точность прогноза, используя матрицу ошибок?
Точность прогноза (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 говорит о доле правильных ответов.
-
Матрица ошибок даёт подробную информацию о типах ошибок.
-
Для несбалансированных данных лучше использовать дополнительные метрики.