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

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

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

Эта статья преследует следующие цели:
1. Что такое матрица неточностей и зачем она нужна.
2. Как рассчитать матрицу неточностей для задачи классификации двух классов на примере «кошка-собака». .
3. Как создать матрицу неточностей в Python и R.
4. Резюме и интуиция по различным параметрам: точность, отзыв, точность и специфичность

1. Матрица неточностей:

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

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

2. Рассчитайте матрицу неточностей:

Возьмем пример:

Всего у нас 10 кошек и собак, и наша модель предсказывает, кошка это или нет.

Фактические значения = [собака, кошка, собака, кошка, собака, собака, кошка, собака, кошка, собака]
Прогнозируемые значения = ['собака', 'собака', 'собака', 'кошка', 'собака', 'собака', 'кошка', 'кошка', 'кошка', 'кошка']

Помните, что мы описываем прогнозируемые значения как положительные / отрицательные, а фактические значения - как истинные / ложные.

Определение терминов:
Истинно-положительный: вы предсказали положительный результат, и это правда. Вы предсказали, что животное - это кошка, и это действительно так.

Истинно-отрицательный: вы предсказали отрицательный результат, и это правда. Вы предсказали, что животное не кошка, и на самом деле это не кошка (это собака).

Ложноположительный результат (ошибка типа 1): вы предсказали положительный результат, но он неверен. Вы предсказали, что животное - кошка, но на самом деле это не так (это собака).

Ложноотрицательный результат (ошибка типа 2): вы предсказали отрицательный результат, но он неверен. Вы предсказали, что животное не кошка, но это действительно так.

Точность классификации:
Точность классификации определяется соотношением:

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

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

Помните: Предварительная оценка имеет в знаменателе предварительный результат.

Оценка F или F1:
Трудно сравнить две модели с разной точностью и отзывчивостью. Чтобы сделать их сопоставимыми, мы используем F-Score. Это гармоническое средство точности и вспоминания. По сравнению со средним арифметическим, среднее гармоническое больше наказывает крайние значения. F-оценка должна быть высокой.

Специфичность
. Специфичность определяет долю правильно идентифицированных фактических негативов.

Пример интерпретации матрицы ошибок:
Давайте рассчитаем матрицу ошибок, используя приведенный выше пример с кошками и собаками:

Точность классификации:
Точность = (TP + TN) / (TP + TN + FP + FN) = (3 + 4) / (3 + 4 + 2 + 1) = 0,70.

Напоминание: напоминание дает нам представление о том, когда это на самом деле «да» и как часто оно предсказывает «да».
Напоминание = TP / (TP + FN) = 3 / (3 + 1) = 0,75

Точность: точность сообщает нам, когда она предсказывает "да" и как часто она оказывается правильной.
Точность = TP / (TP + FP) = 3 / (3 + 2) = 0,60

Оценка F:
Оценка F = (2 * Отзыв * Точность) / (Отзыв + Предъявление) = (2 * 0,75 * 0,60) / (0,75 + 0,60) = 0,67

Специфичность:
Специфичность = TN / (TN + FP) = 4 / (4 + 2) = 0,67.

3. Создайте матрицу путаницы в Python & R

Давайте воспользуемся кодами Python и R, чтобы понять приведенный выше пример собаки и кошки, который даст вам лучшее понимание того, что вы узнали о матрице путаницы на данный момент.

PYTHON: сначала возьмем код Python, чтобы создать матрицу путаницы. Мы должны импортировать модуль матрицы путаницы из библиотеки sklearn, которая помогает нам сгенерировать матрицу путаницы.

Ниже представлена ​​реализация приведенного выше объяснения на языке Python:

OUTPUT ->
Confusion Matrix :
[[3 1]
 [2 4]]
Accuracy Score : 0.7
Classification Report : 
        precision    recall  f1-score   support
cat       0.60      0.75      0.67         4
dog       0.80      0.67      0.73         6
micro avg          0.70      0.70      0.70        10
macro avg          0.70      0.71      0.70        10
weighted avg       0.72      0.70      0.70        10

R: Давайте теперь воспользуемся кодом R, чтобы создать матрицу путаницы. Мы будем использовать библиотеку каретки в R для вычисления матрицы путаницы.

OUTPUT ->
Confusion Matrix and Statistics
             Reference
Prediction   0 1
           0 4 1
           1 2 3
Accuracy : 0.7 
95% CI : (0.3475, 0.9333)
No Information Rate : 0.6 
P-Value [Acc > NIR] : 0.3823
Kappa : 0.4
Mcnemar's Test P-Value : 1.0000
Sensitivity : 0.6667 
Specificity : 0.7500 
Pos Pred Value : 0.8000 
Neg Pred Value : 0.6000 
Prevalence : 0.6000 
Detection Rate : 0.4000 
Detection Prevalence : 0.5000 
Balanced Accuracy : 0.7083
'Positive' Class : 0

4. Резюме:

  • Точность - это то, насколько вы уверены в своих истинных достоинствах. Вспомните, насколько вы уверены в том, что не упускаете никаких положительных моментов.
  • Выберите Отзыв, если появление ложноотрицательных результатов недопустимо / недопустимо. Например, в случае диабета вы предпочли бы иметь несколько дополнительных ложных срабатываний (ложных тревог), а не сохранять некоторые ложноотрицательные результаты.
  • Выберите Точность, если вы хотите быть более уверены в своих истинных положительных результатах. Например, в случае спама, вы бы предпочли иметь несколько спам-писем в вашем почтовом ящике, а не несколько обычных писем в вашем ящике для спама. Прежде чем мы поместим его в ящик для спама, вы хотите быть уверены в том, что электронное письмо X является спамом.
  • Выберите Специфичность, если вы хотите охватить все истинные негативы, т. Е. это означает, что мы не хотим ложных срабатываний или ложных срабатываний. Например, в случае теста на наркотики, при котором все люди с положительным результатом теста немедленно попадут в тюрьму, вы не захотите, чтобы кто-то без наркотиков попадал в тюрьму.

Можно сделать вывод, что:

  • Значение точности 70% означает, что идентификация 3 из каждых 10 кошек неверна, а 7 - верны.
  • Значение точности 60% означает, что на этикетке 4 из каждых 10 кошек не указана кошка (т.е. собака), а 6 - кошки.
  • Значение отзыва 70% означает, что 3 из каждых 10 кошек на самом деле пропущены нашей моделью, а 7 правильно определены как кошки.
  • Значение специфичности 60% означает, что 4 из каждых 10 собак (т. Е. Не кошек) на самом деле неправильно помечены как кошки, а 6 правильно помечены как собаки.

Если у вас есть какие-либо комментарии или вопросы, не стесняйтесь оставлять свои отзывы ниже. Для получения дополнительных статей посетите KeytoDataSicence. Вы всегда можете связаться со мной в LinkedIn.