Какой показатель производительности следует улучшить на основе вашего проекта?

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

Вот так

Школа проводит первичное сканирование диабета с помощью машинного обучения для всех своих учеников.
Результат - диабетик (+ ve) или здоровый (-ve).

У любого студента X всего 4 случая.
Мы будем использовать следующее в качестве справочного материала позже, так что не стесняйтесь повторить - прочтите, если запутались.

  • Истинно положительный результат (TP): прогноз равен + ve, а X - диабет, мы этого хотим
  • Истинно отрицательный (TN): прогноз равен -ve, а X - исправно, мы тоже этого хотим
  • Ложноположительный (FP): прогноз + ve, X - исправное состояние, ложное срабатывание, плохое
  • Ложноотрицательный (FN): прогноз - -ve, X - диабет, наихудший

Чтобы запомнить это, есть 2 уловки

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

Прежде чем я продолжу, истинные положительные стороны и истинные отрицания всегда хороши. мы любим новости, которые приносит слово «правда». В результате остаются ложные срабатывания и ложные срабатывания.
В нашем примере ложные срабатывания - это просто ложная тревога. Во 2-м более подробном сканировании это будет исправлено. Но ложноотрицательный ярлык означает, что они думают, что они здоровы, когда это не так, что, в нашей проблеме, является наихудшим случаем из 4.
Ли FP & FN одинаково плохи, или если один из них хуже другого, зависит от вашей проблемы. Эта информация имеет большое влияние на ваш выбор показателя производительности, поэтому подумайте, прежде чем продолжить.

Какой показатель производительности выбрать?

Точность

Это соотношение правильно обозначенных предметов ко всему пулу предметов.
Точность - наиболее интуитивно понятный.
Точность отвечает на следующий вопрос: сколько учеников мы правильно отметили из всех студенты?
Точность = (TP + TN) / (TP + FP + FN + TN)
числитель: все правильно обозначены предметом ( Все истины)
знаменатель: все предметы

Точность

Точность - это отношение правильных + ve, отмеченных нашей программой, ко всем отмеченным + ve.
Точность отвечает на следующие вопросы: сколько из тех, кто мы, обозначенные как диабетики, на самом деле диабетики?
Точность = TP / (TP + FP)
числитель: + ve обозначенных диабетиков.
знаменатель: все + ve, отмеченные нашей программой (независимо от того, диабетики они или нет).

Напоминание (также известное как Чувствительность)

Вспомните, каково соотношение правильно отмеченных нашей программой плюсов ко всем диабетикам на самом деле.
Вспомните ответ на следующий вопрос: скольких из всех диабетиков мы правильно предсказываем?
Recall = TP / (TP + FN)
числитель: + ve помечены люди с диабетом.
знаменатель: все люди, страдающие диабетом (независимо от того, были ли они обнаружены по нашей программе или нет)

F1-оценка (также известная как F-Score / F-Measure)

Оценка F1 учитывает как точность, так и отзывчивость.
Это гармоническое среднее (среднее) точности и отзыва.
Оценка F1 является наилучшей, если существует какой-то баланс между точностью (p) и вспомните (r) в системе. Напротив, оценка F1 не так высока, если один показатель улучшается за счет другого.
Например, если P равно 1 и R равно 0, оценка F1 равна 0.
Оценка F1 = 2 * (Напоминание * Точность) / ( Напоминание + точность)

Специфичность

Специфичность - это правильно -ve, которое программа помечает всем, кто в действительности здорова.
Специфичность отвечает на следующий вопрос: сколько из всех здоровых людей правильно ли мы предсказали?
Специфичность = TN / (TN + FP)
числитель: -ve помечены здоровые люди.
знаменатель: все люди, которые в действительности здоровы (независимо от того, отмечены ли они + ve или -ve)

Общие замечания

Да, точность - отличный показатель, но только когда у вас есть симметричные наборы данных (количество ложных отрицательных и ложных срабатываний близко), также ложноотрицательные и ложные срабатывания одинаковые расходы.
Если стоимость ложных срабатываний и ложных срабатываний различна, то F1 - ваш спаситель. F1 лучше всего, если у вас неравномерное распределение классов.

Точность - это то, насколько вы уверены в своих истинных достоинствах, в то время как припоминание - это насколько вы уверены, что не упускаете ни одного положительного.

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

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

Выберите «Специфичность», если вы хотите охватить все истинные отрицательные моменты, что означает, что вам не нужны ложные срабатывания сигнализации и ложные срабатывания. например, вы проводите тест на наркотики, при котором все люди с положительным результатом теста немедленно отправляются в тюрьму, вы же не хотите, чтобы в тюрьму отправлялись те, кто свободен от наркотиков. Здесь недопустимы ложные срабатывания.

Итог

- Значение точности 90% означает, что 1 из каждых 10 ярлыков неверен, а 9 - правильно.
- Значение точности 80% означает, что в среднем 2 из каждых 10 учащихся, отмеченных диабетом по нашей программе, здоровы, и 8 - диабетик.
- Значение отзыва 70% означает, что 3 из каждых 10 диабетиков в действительности пропущены нашей программой, а 7 помечены как диабетики.
- Значение специфичности 60% означает, что 4 из каждых На самом деле 10 здоровых людей ошибочно признаны диабетиками, а 6 правильно обозначены как здоровые.

Матрица путаницы

Википедия объяснит это лучше меня

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

Хороший и простой способ вычисления матрицы неточностей находится здесь.

from sklearn.metrics import confusion_matrix
>>>tn, fp, fn, tp = confusion_matrix([0, 1, 0, 1], 
[1, 1, 1, 0]).ravel()
# true negatives, false positives, false negatives, true positives
>>>(tn, fp, fn, tp)
(0, 2, 1, 1)