Показатель F1 против ROC AUC

У меня ниже оценки F1 и AUC для 2 разных случаев

Модель 1: Точность: 85,11 Напомним: 99,04 F1: 91,55 AUC: 69,94

Модель 2: Точность: 85,1 Напомним: 98,73 F1: 91,41 AUC: 71,69

Основной мотив моей проблемы - правильно предсказать положительные случаи, т.е. Уменьшить False Negative cases (FN). Должен ли я использовать оценку F1 и выбрать модель 1 или использовать AUC и выбрать модель 2. Спасибо

Ответ 1

Введение

Как правило, каждый раз, когда вы хотите сравнить ROC AUC с баллом F1, думайте об этом так, как будто вы сравниваете производительность своей модели на основе:

[Sensitivity vs (1-Specificity)] VS [Precision vs Recall]

Теперь нам нужно понять, что такое: Чувствительность, Специфичность, Точность и Вспомнить интуитивно!


Фон

Чувствительность: определяется по следующей формуле:

sensitivity formula

Говоря интуитивно, если у нас есть модель, чувствительная на 100%, это означает, что она НЕ пропустила Истинный Позитив, другими словами, было НЕТ Ложных Отрицательных (т.е. положительный результат, который помечен как отрицательный). Но есть риск иметь много ложных срабатываний!

Специфичность: определяется по следующей формуле:

specificity formula

Говоря интуитивно, если у нас есть 100% конкретная модель, это означает, что она НЕ пропустила ни одного истинного отрицания, другими словами, было НЕТ ложных положительных результатов (то есть отрицательный результат, который помечен как положительны). Но есть риск иметь много ложных негативов!

Точность: определяется по следующей формуле: Precision Formula

Говоря интуитивно, если у нас есть 100% точная модель, это означает, что она могла бы отловить все истинно положительные результаты, но было НЕТ ложно положительных результатов.

Напомним: задается по следующей формуле:

Recall Formula

Говоря интуитивно, если у нас есть модель 100% отзыва, это означает, что она НЕ пропустила Истинный Позитив, другими словами, было НЕТ Ложных Отрицательных (т.е. положительный результат, который помечены как отрицательные).

Как видите, четыре понятия очень близки друг к другу!

f1 score


Как правило,, если цена ложного отрицательного результата высока, мы хотим повысить чувствительность модели и вспомнить (что в точности соответствует их формуле) !.

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

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

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

Например, при обнаружении спама в электронной почте мы не хотим помечать/прогнозировать не спам (True Negative) как спам (False Positive). С другой стороны, неспособность пометить спам-сообщение как спам (False Negative) обходится дешевле.


Счет F1

Это дается по следующей формуле:

F1 Score Formula

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

Таким образом, мы используем показатель F1 в качестве индикатора сравнения между Точностью и Числами отзыва!


Площадь под кривой рабочих характеристик приемника (AUROC)

Он сравнивает чувствительность с (1-специфичность), другими словами, сравнивает реальный положительный уровень с ложным положительным уровнем.

area under the curve

Таким образом, чем больше AUROC, тем больше различие между истинными позитивами и истинными негативами!


AUROC vs F1 Score (заключение)

Как правило, ROC для многих различных уровней пороговых значений и, таким образом, имеет много значений F-баллов. Оценка F1 применима для любой конкретной точки на кривой ROC.

Вы можете думать об этом как о мере точности и вспоминать при определенном пороговом значении, тогда как AUC - это область под кривой ROC. Чтобы оценка F была высокой, точность и отзыв должны быть высокими.

Следовательно,, когда у вас есть дисбаланс данных между положительными и отрицательными выборками, вы всегда должны использовать F1-показатель, потому что ROC в среднем превышает все возможные пороги!


Далее читайте:

Мошенничество с кредитными картами: обработка классов с сильным дисбалансом и почему не следует использовать кривую рабочих характеристик приемника (кривая ROC), а кривую точности/отзыва следует отдавать предпочтение в ситуациях с сильным дисбалансом


EDIT

Я намеренно использовал оба термина Sensitivity и Recall, хотя они абсолютно одинаковы, просто чтобы подчеркнуть тот факт, что по соглашению в качестве инженеров ML мы, скорее всего, будем использовать термин Recall, тогда как статистики, скорее всего, будут использовать этот термин. Sensitivity, чтобы сослаться на ту же самую меру.

Ответ 2

Если вы посмотрите на определения, вы можете, чтобы и AUC, и F1-показатель оптимизировали "что-то" вместе с частью выборки, помеченной как "положительная", которая на самом деле действительно положительная.

Это "что-то" это:

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

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

Предположим, вы просматриваете данные от населения в целом, чтобы найти людей с редким заболеванием. Гораздо больше людей "отрицательных", чем "положительных", и попытка оптимизировать, насколько хорошо вы работаете с положительными и отрицательными образцами одновременно, используя AUC, не является оптимальной. Вы хотите, чтобы положительный образец включал все положительные значения, если это возможно, и вы не хотите, чтобы он был огромным из-за высокого уровня ложных срабатываний. Так что в этом случае вы используете счет F1.

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