Матрица путаницы — это таблица, которая используется для описания эффективности модели классификации на наборе данных, для которых известны истинные значения. Он оценивает эффективность модели машинного обучения и помогает понять типы и количество ошибок, совершаемых моделью, а также дает представление о сильных и слабых сторонах модели.

  • столбцы представляют фактические значения целевой переменной.
  • Строки представляют прогнозируемые значенияцелевой переменной.

Типичная матрица путаницы состоит из четырех основных компонентов:

Истинные положительные результаты (TP):

Это случаи, когда модель правильно предсказала положительный класс. Фактическое значение положительное, прогнозируемое также положительное.

Например, если модель обучена классифицировать электронные письма как спам или не спам, и она правильно предсказывает 100 электронных писем как спам из 150 фактических спамовых писем, то TP будет равняться 100.

Истинные негативы (TN):

Это случаи, когда модель правильно предсказала отрицательный класс. Фактическое значение – Отрицательное, прогноз также – Отрицательное.

Например, если модель правильно спрогнозировала 800 писем, не являющихся спамом, из 850 фактических писем, не являющихся спамом, то TN будет равно 800.

Ложные срабатывания (FP):

Это случаи, когда модель неверно предсказала положительный класс. Прогнозируемое значение положительное, а фактическое отрицательное. Также известна как ошибка первого типа.

Например, если модель предсказывает, что 50 писем, не содержащих спам, являются спамом, то FP будет равен 50.

Ложноотрицательные результаты (FN):

Это случаи, когда модель неверно предсказала отрицательный класс. Прогнозируемое значение отрицательное, но фактическое положительное. Также известна как ошибка типа 2.

Например, если модель не смогла предсказать 20 писем со спамом из 150 фактических писем со спамом, то FN будет равно 20.

ПРИМЕЧАНИЯ:

  • Хорошей моделью является та, которая имеет высокие показатели TP и TN, в то время как низкие показатели FP и FN .
  • Если у вас есть несбалансированный набор данных, всегда лучше использовать матрицу путаницы в качестве критерия оценки для модель МЛ.

Показатели производительности/оценки

Матрицу путаницы можно использовать для расчета различных показателей производительности, таких как точность, достоверность, полнота и показатель F1, которые могут помочь в оценке эффективности модели и выявлении областей, требующих улучшения.

Точность :

Мера того, насколько правильно модель предсказывает метки классов или результаты набора образцов. Он рассчитывается как отношение количества правильных прогнозов к общему количеству прогнозов и часто выражается в процентах. Он часто используется для сбалансированных наборов данных, где классы представлены одинаково.

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

Точность :

Мера насколько точно модель предсказывает положительный класс или интересующий класс. Он рассчитывается как отношение количества истинно положительных прогнозов (т. е. выборок, правильно предсказанных как положительный класс) к общему количеству положительных прогнозов (т. е. суммы истинно положительных и ложноположительных прогнозов).

«Точность – полезная метрика в тех случаях, когда ложноположительный результат вызывает большую озабоченность, чем ложноотрицательный результат».

Например, при медицинской диагностике или обнаружении спама, где ложные срабатывания могут иметь серьезные последствия.

Напомним (чувствительность / частота истинного положительного результата):

Это мера фактических наблюдений, которые прогнозируются правильно, т. е. сколько наблюдений положительного класса фактически прогнозируются как положительные.

Он также известен как Чувствительность. Отзыв — это правильный выбор показателя оценки, когда мы хотим получить как можно больше положительных отзывов.

«Отзыв важен, когда минимизация ложноотрицательных результатов важнее, чем минимизация ложноположительных результатов».

Например, при обнаружении заболеваний или выявлении мошеннических транзакций, где ложноотрицательные результаты могут привести к упущенным возможностям или серьезным последствиям.

Специфичность (истинно отрицательный показатель):

Он отражает способность модели или классификатора точно идентифицировать истинные отрицательные случаи. Он измеряет, насколько хорошо модель может правильно идентифицировать фактически отрицательные случаи из всех действительно отрицательных случаев.

Более высокое значение специфичности указывает на то, что модель более точно определяет истинно отрицательные случаи и имеет меньшую вероятность ошибочной идентификации отрицательных случаев как положительных, что важно для обеспечения точности в некоторых приложениях.

Например, в сценарии медицинского диагноза, цель которого состоит в том, чтобы определить, есть ли у пациента определенное заболевание или нет, специфичность будет указывать, насколько хорошо модель способна правильно идентифицировать пациентов, у которых нет заболевания, избегая ложных срабатываний.

F1-счет

  • Показатель F1 представляет собой гармоническое среднее значение точности и полноты и представляет собой сбалансированный показатель, объединяющий оба показателя.
  • Это хороший выбор, когда точность и полнота одинаково важны, и помогает найти компромисс между точностью и полнотой.
  • Оценка F1 часто используется при неравномерном распределении классов или несбалансированности классов и предоставляет одно значение, которое обобщает производительность модели.

Если ваша низкая точность, F1 низкая и если отзыв низкий снова ваш низкий балл F1.

Бывают случаи, когда нет четкого различия между тем, точность важнее или полнота. Мы объединяем их!

F-показатель должен быть высоким (в идеале 1).

Суть:

  • Точность – лучший показатель для сбалансированных данных.
  • Если ложноположительный результат гораздо важнее, используйте Precision.
  • Всякий раз, когда False Negative гораздо важнее, используйте Отзыв.
  • Оценка F1 используется, когда важны ложноотрицательные и ложноположительные результаты.
  • F1-Score – лучший показатель для несбалансированных данных.
  • Идеальное значение для точности, точности, отзыва (чувствительности), специфичности, оценки F1будет 1,0 (или 100%).

ИСХОДНЫЙ КОД :

Матрица путаницы для бинарной классификации:

import pandas as pd, numpy as np,  matp
lotlib.pyplot as plt, seaborn as sns
from sklearn.metrics import confusion_matrix, classification_report, accuracy_score, precision_score, recall_score, f1_score

# Extract predicted labels and true labels from DataFrame
y_pred = df_output["predicted_label"]
y_true = df_output["true_label"]

# Create a confusion matrix
cm = confusion_matrix(y_true,
                      y_pred)

# Plot confusion matrix using seaborn
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, cmap="Blues", fmt="d", cbar=False)
plt.xlabel('Predicted Labels')
plt.ylabel('True Labels')
plt.title('Confusion Matrix')
plt.show()


# Calculate accuracy
accuracy = accuracy_score(y_true,y_pred)

# Calculate precision, recall, and F1-score
precision = precision_score(y_true, y_pred, average='weighted')
recall = recall_score(y_true, y_pred, average='weighted')
f1 = f1_score(y_true, y_pred, average='weighted')

# Print evaluation metrics
print("Accuracy: {:.4f}".format(accuracy))
print("Precision: {:.4f}".format(precision))
print("Recall: {:.4f}".format(recall))
print("F1-score: {:.4f}".format(f1))

# Create a classification report
report = classification_report(y_true, y_pred)
# Print classification report
print("Classification Report:\n", report)

Матрица путаницы для многоклассовой классификации:

import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.metrics import confusion_matrix

# Generate a sample confusion matrix (replace with your own data)
cm = confusion_matrix(y_true, y_pred)

# Define the class labels
class_labels = ['Class 1', 'Class 2', 'Class 3', 'Class 4']

# Create a heatmap of the confusion matrix with values inside it
fig, ax = plt.subplots(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', cbar=False, ax=ax)
ax.set_xlabel('Predicted Label', fontsize=12)
ax.set_ylabel('True Label', fontsize=12)
ax.set_xticklabels(class_labels, rotation=45, ha='right', fontsize=10)
ax.set_yticklabels(class_labels, rotation=0, ha='right', fontsize=10)
ax.set_title('Confusion Matrix', fontsize=14)
plt.tight_layout()
plt.show()

# Create a classification report
report = classification_report(y_true, y_pred)
print("Classification Report:\n", report)

Матрица путаницы в табличной форме:

import numpy as np
from sklearn.metrics import confusion_matrix
from tabulate import tabulate

# Generate a sample confusion matrix (replace with your own data)
cm = confusion_matrix(y_true, y_pred)

# Define the class labels
class_labels = ['Class 1', 'Class 2', 'Class 3', 'Class 4']

# Convert confusion matrix to a list of lists
cm_list = cm.tolist()

# Add class labels as the first row and column
cm_list.insert(0, class_labels)
for i in range(len(cm_list)):
    cm_list[i].insert(0, class_labels[i])

# Print the confusion matrix as a table with lines around it
print(tabulate(cm_list, headers='firstrow', tablefmt='grid'))

Надеемся, что этот блог помог вам лучше понять матрицу путаницы. Если вам понравилось, поддержите аплодисментами. Счастливого обучения… :)