В Части I книги Мультиклассовые метрики стали проще я объяснил точность и отзывчивость, а также то, как их вычислить для мультикласса классификатор. В этом посте я расскажу о другом популярном показателе эффективности, F1-score или, скорее, F1-score s, поскольку существует как минимум 3 варианта . Я объясню, почему используются оценки F1 и как их рассчитывать в условиях нескольких классов.

Но сначала, БОЛЬШОЕ ПРЕДУПРЕЖДЕНИЕ: баллы F1 широко используются в качестве метрики, но часто это неправильный способ сравнения классификаторов. Вы часто будете замечать их в научных статьях, где исследователи используют более высокий балл F1 как «доказательство» того, что их модель лучше, чем модель с более низким баллом. Однако более высокий показатель F1 не обязательно означает лучший классификатор. Используйте с осторожностью и оценивайте результаты F1 с недоверием! Подробнее об этом позже.

Как и в части I, я начну с простой настройки двоичной классификации. Напоминаем: вот матрица путаницы, созданная с помощью нашего бинарного классификатора для фотографий собак. Показатели точности и отзывчивости, рассчитанные нами в предыдущей части, составили 83,3% и 71,4% соответственно.

Как правило, мы предпочитаем классификаторы с более высокой точностью и оценками отзыва. Однако существует компромисс между точностью и отзывом: при настройке классификатора повышение оценки точности часто приводит к снижению оценки отзыва, и наоборот - бесплатного обеда нет.

Теперь представьте, что у вас есть два классификатора - классификатор A и классификатор B - каждый со своей точностью и отзывчивостью. У одного лучший показатель отзыва, у другого - более высокая точность. Мы хотели бы сказать кое-что об их относительной эффективности. Другими словами, мы хотели бы суммировать производительность моделей в единую метрику. Вот где используется оценка F1. Это способ объединить точность и запоминание в одно число. F1-оценка вычисляется с использованием среднего («среднего»), но не обычного среднего арифметического. Он использует гармоническое среднее, которое дается этой простой формулой:

F1-оценка = 2 × (точность × отзыв) / (точность + отзыв)

В приведенном выше примере оценка F1 нашего двоичного классификатора:

F1-балл = 2 × (83,3% × 71,4%) / (83,3% + 71,4%) = 76,9%

Подобно среднему арифметическому, оценка F1 всегда будет где-то посередине между точностью и отзывчивостью. Но он ведет себя иначе: оценка F1 дает больший вес меньшим числам. Например, если точность составляет 100%, а отзыв - 0%, оценка F1 будет равна 0%, а не 50%. Или, например, предположим, что классификатор A имеет точность = отзыв = 80%, а классификатор B имеет точность = 60%, отзыв = 100%. С арифметической точки зрения среднее значение точности и отзыва одинаково для обеих моделей. Но когда мы используем формулу гармонического среднего значения F1, оценка для классификатора A будет 80%, а для классификатора B только 75%. Низкая оценка точности модели B снизила ее оценку F1.

Теперь, когда мы знаем, как вычислить F1-оценку для бинарного классификатора, давайте вернемся к нашему примеру с несколькими классами из части I. Быстрое напоминание: у нас есть 3 класса (Кот, Рыба, Курица) и соответствующая матрица путаницы для нашего классификатора. :

Теперь мы хотим вычислить оценку F1. Как мы это делаем?

Помните, что оценка F1 зависит от точности и запоминания. А в части I мы уже узнали, как вычислить точность и отзыв для каждого класса. Вот краткое изложение точности и запоминания для наших трех классов:

С помощью приведенной выше формулы мы теперь можем вычислить F1-оценку для каждого класса. Например, оценка F1 для кошки:

F1-балл (Кошка) = 2 × (30,8% × 66,7%) / (30,8% + 66,7%) = 42,1%

То же самое и с Рыбой и Курицей. Теперь у нас есть полные оценки F1 для каждого класса:

Следующим шагом является объединение оценок F1 для каждого класса в единое число - общую оценку F1 классификатора. Есть несколько способов сделать это. Начнем с самого простого: среднего арифметического оценок F1 для каждого класса. Это называется усредненной по макросам F1-оценкой или для краткости макро-F1 и вычисляется как простое арифметическое среднее наших оценок F1 для каждого класса:

Макро-F1 = (42,1% + 30,8% + 66,7%) / 3 = 46,5%

Аналогичным образом мы также можем вычислить усредненную по макросу точность и усредненное по макросу отзыв:

Макроточность = (31% + 67% + 67%) / 3 = 54,7%

Макро-отзыв = (67% + 20% + 67%) / 3 = 51,1%

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

При усреднении макро-F1 мы дали равные веса каждому классу. Нам не нужно этого делать: в средневзвешенной F1-оценке или взвешенной-F1 мы взвешиваем F1-оценку каждого класса по количеству выборок. из этого класса. В нашем случае у нас всего 25 образцов: 6 кошек, 10 рыб и 9 кур. Таким образом, взвешенная оценка F1 рассчитывается следующим образом:

Взвешенное значение F1 = (6 × 42,1% + 10 × 30,8% + 9 × 66,7%) / 25 = 46,4%

Точно так же мы можем вычислить взвешенную точность и взвешенный отзыв:

Взвешенная точность = (6 × 30,8% + 10 × 66,7% + 9 × 66,7%) / 25 = 58,1%

Взвешенная запоминаемость = (6 × 66,7% + 10 × 20,0% + 9 × 66,7%) / 25 = 48,0%

Последний вариант - это микро-средний балл F1 или микро-F1. Чтобы вычислить микро-F1, мы сначала вычисляем микро-усредненную точность и микро-усредненную отзыв по всем выборкам, а затем объединяем их. Как мы «усредняем на микроуровне»? Мы просто смотрим на все образцы вместе. Помните, что точность - это доля истинных положительных результатов от прогнозируемых положительных результатов (TP / (TP + FP)). В случае с несколькими классами мы считаем все правильно спрогнозированные образцы истинно положительными. Давайте еще раз посмотрим на нашу матрицу путаницы:

Было 4 + 2 + 6 образцов, которые были правильно предсказаны (зеленые ячейки по диагонали), всего TP = 12. Теперь нам нужно вычислить количество ложных срабатываний. Поскольку мы смотрим на все классы вместе, каждая ошибка предсказания является ложноположительной для предсказанного класса. Например, если образец Cat был предсказан как рыба, этот образец является ложноположительным для рыбы. Таким образом, общее количество ложных срабатываний - это общее количество ошибок прогнозирования, которое мы можем найти, суммируя все недиагональные ячейки (то есть розовые ячейки). В нашем случае это FP = 6 + 3 + 1 + 0 + 1 + 2 = 13. Таким образом, наша точность составляет 12 / (12 + 13) = 48,0%.

Следует вспомнить, что представляет собой долю истинных положительных результатов от фактических положительных результатов (TP / (TP + FN)). ТП, как и раньше: 4 + 2 + 6 = 12. Как подсчитать количество ложных отрицательных результатов? В нашем предыдущем примере, если выборка Cat была предсказана как рыба, эта выборка является ложноотрицательной для Cat. В более широком смысле, каждая ошибка прогнозирования (X ошибочно классифицируется как Y) является ложным положительным результатом для Y и ложноотрицательным значением для X. Таким образом, общее количество ложноотрицательных результатов снова является общим количеством ошибок прогнозирования (т. Е. Розовыми ячейками). , поэтому отзыв - это то же самое, что и точность: 48,0%.

Поскольку в случае микро-усреднения точность = отзыв, они также равны своему среднему гармоническому значению. Другими словами, в случае с микро-F1:

микро-F1 = микро-точность = микро-отзыв

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

микро-F1 = микро-точность = микро-отзыв = точность

Ранее я упоминал, что баллы F1 следует использовать с осторожностью. Почему? Хотя они действительно удобны для быстрого высокоуровневого сравнения, их главный недостаток состоит в том, что они придают равное значение точности и отзыву. Как объяснил выдающийся статистик Дэвид Хэнд, относительное значение, придаваемое точности и полноте, должно быть одним из аспектов проблемы. Отнесение больного к категории здоровых требует иных затрат, чем отнесение здорового человека к категории больных, и это должно отражаться в том, как используются веса и затраты для выбора наилучшего классификатора для конкретной проблемы, которую вы пытаетесь решить. Это верно для бинарных классификаторов, и проблема усугубляется при вычислении мультиклассовых оценок F1, таких как макро-, взвешенные или микро-оценки F1. В случае с несколькими классами разные ошибки прогнозирования имеют разное значение. Прогнозирование X как Y, вероятно, будет иметь другие затраты, чем прогнозирование Z как W и т. Д. Стандартные оценки F1 не принимают во внимание какие-либо знания предметной области.

Наконец, давайте еще раз посмотрим на наш скрипт и результаты работы Python sk-learn.

Вот снова результат скрипта. Две нижние строки показывают усредненную по макросам и средневзвешенную точность, отзыв и оценку F1. Также вычисляется точность (48,0%), которая равна баллу микро-F1.

На этом я завершаю свое краткое введение в мультиклассовые метрики, состоящее из двух частей.

Я надеюсь, что эти сообщения были вам полезны.

Продолжить Часть III: Оценка Каппы