Матрица ошибок
Матрица ошибок - это один из самых полезных инструментов для оценки качества моделей машинного обучения в задачах классификации. Она позволяет наглядно увидеть, насколько хорошо модель предсказывает целевую переменную и какие ошибки допускает.
Что такое матрица ошибок
Матрица ошибок - это таблица, которая используется для описания эффективности модели классификации на тестовом наборе данных, для которого известны истинные значения классов. Она сравнивает фактические целевые значения с теми, которые предсказала модель.
Матрица ошибок состоит из 4 значений:
- True Positives (TP) - верно классифицированные положительные примеры
- True Negatives (TN) - верно классифицированные отрицательные примеры
- False Positives (FP) - отрицательные примеры, ошибочно классифицированные как положительные
- False Negatives (FN) - положительные примеры, ошибочно классифицированные как отрицательные
Пример матрицы ошибок
Допустим, у нас есть модель, которая предсказывает, болен ли пациент диабетом (1) или здоров (0). Матрица ошибок для этой модели может выглядеть так:
[[50, 10],
[5, 100]]
Здесь значения матрицы интерпретируются следующим образом:
- 50 пациентов верно классифицированы как здоровые (TN)
- 10 больных ошибочно классифицированы как здоровые (FN)
- 5 здоровых ошибочно классифицированы как больные (FP)
- 100 больных верно классифицированы как больные (TP)
Вычисление метрик на основе матрицы ошибок
Имея матрицу ошибок, мы можем рассчитать ряд полезных метрик:
- Точность (Accuracy) = (TP + TN) / (TP + TN + FP + FN)
- Прецизионность (Precision) = TP / (TP + FP)
- Полнота (Recall) = TP / (TP + FN)
- F1-мера = 2 * (Precision * Recall) / (Precision + Recall)
Реализуем расчет этих метрик на Python:
from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score
y_true = [1, 0, 1, 1, 0, 1, 0, 0, 0, 1] # истинные значения
y_pred = [1, 0, 1, 0, 0, 1, 1, 0, 1, 0] # предсказанные значения
cm = confusion_matrix(y_true, y_pred)
print(cm)
# [[3 2]
# [2 3]]
accuracy = accuracy_score(y_true, y_pred)
precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)
print(f"Accuracy: {accuracy:.2f}") # 0.60
print(f"Precision: {precision:.2f}") # 0.60
print(f"Recall: {recall:.2f}") # 0.60
print(f"F1 score: {f1:.2f}") # 0.60
Визуализация матрицы ошибок
Для лучшего понимания матрицы ошибок ее можно визуализировать с помощью библиотеки Seaborn:
import seaborn as sns
import matplotlib.pyplot as plt
sns.heatmap(cm, annot=True, cmap='Blues', fmt='g')
plt.xlabel('Predicted')
plt.ylabel('Actual')
plt.show()
Матрица ошибок - очень полезный инструмент для оценки качества моделей классификации. Она дает четкое представление о том, какие ошибки допускает модель и позволяет рассчитать важные метрики. Визуализация матрицы ошибок помогает лучше понять ее структуру.
Надеюсь, эта статья была полезна для вас! Пишите в комментариях, используете ли вы матрицы ошибок в своих ML проектах.