Все о матрице путаницы

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

Возьмем в качестве примера нашу любимую игру Cricket. Существует Совет по крикету (ABC), который формирует команды, организует и планирует матчи турнира. На этот раз члены правления принимают безумное решение. Они объявляют, что Чак — случайный парень — станет новым судьей этого турнира. Затем они добавляют к этому, говоря, что у Чака есть только одна работа в качестве судьи - решить, является ли игрок с битой «аутом» или «не-аутом» ( Короче говоря, он должен классифицировать между 2 классы — «Not Out» или «Out»).

Все игроки, включая Чака, удивлены. Чак ничего не знает об игре. Все волнуются, а затем начинают расспрашивать правление об этом решении. Затем доска объясняет, что Чак должен пройти тренировку, где он должен посмотреть предыдущие матчи и самостоятельно изучить шаблон, например, когда игрок с битой объявляется «выбывшим» или «не выбывшим». Чак теперь немного полон надежд и соглашается посмотреть все матчи. Он внимательно наблюдает за всеми паттернами и пытается понять, когда нужно решить, «выбыл» или «не выбыл». Изучив шаблон, он чувствует, что готов к работе.

Турнир начинается, и Чак принимает решения на основе модели, которую он наблюдал и изучил.

Теперь члены правления хотят увидеть, как Чак справится с тем, чему он научился во время обучения. Они сравнивают решение Чака с решением, которое принял бы опытный судья. Они приходят с данными, как в таблице ниже. В таблице Not-Out — это положительный сценарий, который представлен как 1, Out — это негативный сценарий, который представлен как 0.

Из 10 решений, принятых Чаком, 3 были неправильными, что выделено красным. Неплохо для первого раза!!!

Давайте проверим его производительность и проанализируем последствия, посчитав «фактические и прогнозируемые» значения.

Фактическое «Не вышло» — подсчитайте количество зеленых ячеек — 3.

Фактическое «Выход» — подсчитайте количество оранжевых ячеек — 7

Предсказанный Чаком вариант «Не вышло» — подсчитайте количество желтых клеток — 4

Предсказанный Чаком «выход» — подсчитайте количество синих клеток — 6

Теперь мы можем приступить к подстановке чисел в матричной форме.

Давайте проверим, сколько «аутов» и «не-аутов» угадал Чак правильно. Мы знаем, что он принял 3 неправильных решения. Это означает, что он принял 7 правильных решений.

Правильно спрогнозировано «Не вышло» — подсчитайте количество розовых клеток — 2.

Правильно спрогнозированный «аут» — подсчитайте количество бирюзовых зеленых ячеек — 5.

После подстановки в нашу матрицу получаем:

Теперь мы готовы понять, что такое истинные положительные и истинные отрицательные стороны.

Истинные положительные результаты (TP): правильно предсказанные положительные значения — в нашем случае количество правильных решений Чака как «неверное» (розовая ячейка).

True Negatives (TN): правильно предсказанные отрицательные значения — в нашем случае количество правильных решений Чака как «Out» (Aqua Green Cell).

Давайте двигаться вперед с неправильными прогнозами.

Неправильно предсказано «Out» как «Not-Out» — подсчитайте количество красных клеток — 2.

Ошибочно предсказано «Не вышло» как «Вышло» — подсчитайте количество синих ячеек — 1.

Это завершает нашу матрицу:

Здесь мы попробуем разобраться в ложноположительных и ложноотрицательных результатах.

Ложные срабатывания (FP): ошибочно спрогнозировано как положительное значение — в нашем случае количество неправильных решений Чака, когда игрок на самом деле был «аут», но Чак решил, что он «не аут» (красный Клетка).

Ложноотрицательные (FN): ошибочно предсказано как отрицательное значение — в нашем случае, в нашем случае, количество неправильных решений Чака, когда игрок на самом деле был «не в ауте», но Чак решил, что он « Вон» («Синяя ячейка»).

Совершенно очевидно, что когда мы делаем что-то не так, мы называем это ошибкой:

Ошибки типа 1: ложные срабатывания называются ошибками типа 1.

Ошибки типа 2: ложноотрицательные результаты называются ошибками типа 2.

На рисунке ниже показана матрица путаницы, представляющая решение Чака слева, и общее представление матрицы путаницы справа:

Теперь, когда у нас есть матрица путаницы, мы можем рассчитать показатели производительности Чака, ответив на приведенные ниже вопросы.

1) Насколько точным был Чак, решая, был ли игрок «не в ауте» или «в ауте»?

Он был точен в 7 из 10 раз. Следовательно, его оценка Точность составляет 7/10 = 0,7 или 70 %.

Точность = (TP+TN) / Всего

2) Насколько неточен был Чак, решая, был ли игрок «не в ауте» или «в ауте»?

Он был неточен в 3 из 10 раз. Следовательно, его оценка Ошибочная классификация составляет 3/10 = 0,3 или 30 %.

Ошибочная классификация = (FP+FN) / Всего

3)Сколько раз Чак правильно решал, что игрок «не аут» из всех объявленных им «не аутов».

Чак был прав 2 раза из 4, что он решил, что игрок «Не-аут». Следовательно, его показатель точности составляет 2/4 = 0,5 или 50 %.

Точность = TP / (TP+FP)

4) Сколько раз Чак правильно решал, что игрок «не аут» из всех фактических «не аутов»?

Чак был прав в 2 случаях из 3, когда игрок на самом деле был «не проигравшим». Следовательно, его оценка Чувствительность/Запоминание составляет 2/3 = 0,6 или 60 %.

Отзыв = TP / (TP+FN)

5) Сколько раз Чак правильно решал, что игрок «аут» из всех фактических «аутов»?

Чак правильно решил 5 раз из 7, что игрок на самом деле «аут». Следовательно, его показатель специфичностисоставляет 5/7 = 0,7 или 70 %.

Специфичность = TN / (FP+TN)

Давайте используем Python scikit-learn для создания матрицы путаницы и расчета показателей производительности:

#Code snippet used for this example :
from sklearn.metrics import accuracy_score ,confusion_matrix ,precision_score , recall_score , ConfusionMatrixDisplay
import matplotlib.pyplot as plt
#Data collected by the board
Experienced_umpire = [1, 1, 0, 1, 0, 0, 0, 0, 0, 0]
Chuck = [1, 0, 0, 1, 0, 0, 1, 0, 1, 0]
#Plotting Confusion Matrix
fig, ax = plt.subplots(1,1,figsize=(7,4))
results = confusion_matrix(Chuck, Experienced_umpire , labels=[1,0])
cm_display = ConfusionMatrixDisplay(results, display_labels=['Not-out','Out']).plot(values_format=".0f",ax=ax)
ax.set_xlabel("Experienced Umpire's Decision")
ax.set_ylabel("Chuck's Decision")
plt.show()
#Printing Performance Metrix
print("Accuracy Score  : ", accuracy_score(Experienced_umpire, Chuck))
print("Precision Score : ", precision_score(Experienced_umpire, Chuck))
print("Recall Score    : ", recall_score(Experienced_umpire, Chuck))

Балл подсчитан. Что теперь делать Чаку? Он должен попытаться увеличить свою производительность. Три неверных прогноза, которые он сделал, очень плохо повлияют на команды. Ему следует попытаться увеличить точность. Точность будет повышаться за счет увеличения истинно положительных или истинно отрицательных результатов. Это означает, что количество ложноположительных или ложноотрицательных результатов должно быть уменьшено.

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

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

Чак, объявляющий «Not-Out» как «Out», должен быть уменьшен или наоборот

В нашем сценарии сокращение обоих может быть важным. Но объявление Чаком «не-аут» как «аут» могло бы иметь большее влияние. Поэтому Чаку следует больше сосредоточиться на снижении числа ложноотрицательных результатов, т. е. на повышении балла отзыва.

Краткий обзор жаргона:

Истинные положительные результаты (TP): правильно предсказанные положительные значения.

Истинно отрицательные значения (TN): правильно предсказанные отрицательные значения.

Ложные срабатывания (TP): ошибочно предсказанные положительные значения.

Ложноотрицательные (TN): ошибочно предсказанные отрицательные значения.

Точность = (TP+TN) / Всего

Ошибочная классификация = (FP+FN) / Всего

Точность = TP / (TP+FP)

Чувствительность/отзыв = TP / (TP+FN)

Специфичность = TN / (FP+TN)

Вот так…. это объяснение утверждения -

«Матрица путаницы — это таблица, в которой обобщается эффективность алгоритма классификации».

Приятного обучения!!!!!