После написания моей серии из двух частей Мульти-классовые метрики стали проще (Часть I, Часть II) я получил обнадеживающие и полезные отзывы от читателей, в том числе аплодисменты, исправление опечаток и т. Д. Итак, сначала , большое спасибо всем, кто откликнулся! В частности, одно электронное письмо пришло от любопытного читателя (пожелавшего остаться анонимным, поэтому я буду называть этого читателя Энигмой) и инициировало расследование того, как вычисляется усредненный по макросам показатель F1. вычислено . Это привело меня к довольно удивительной кроличьей норе, которую я описываю в этой статье. Итог: существует более одной оценки макро-F1; а специалисты по данным в основном используют все, что есть в их программном пакете, не задумываясь об этом.
Напомним, что Часть II объясняет, как рассчитать оценку макро-F1: это среднее значение оценок F1 для каждого класса. Другими словами, вы сначала вычисляете точность и отзыв для каждого класса для всех классов, затем объединяете эти пары для вычисления оценок F1 для каждого класса и, наконец, используете среднее арифметическое этих оценок F1 для каждого класса в качестве макро-F1. счет. В примере, приведенном в Части II, баллы F1 для классов Кошка, Рыба и Курица составляют 42,1%, 30,8% и 66,7% соответственно, и, таким образом, макро-показатель F1 составляет:
Макро-F1 = (42,1% + 30,8% + 66,7%) / 3 = 46,5%
Но, судя по всему, не все так просто. В электронном письме «Enigma» содержала ссылку на широко цитируемую статью, в которой макро-показатель F1 определялся совершенно по-другому: сначала вычисляются усредненная по макросам точность и усредненная по макросам отзыв. Затем среднее гармоническое значение этих двух показателей вычисляется как окончательная макро-F1-оценка. В нашем примере макроточность и макро-отзыв:
Макроточность = (31% + 67% + 67%) / 3 = 54,7%
Макро-отзыв = (67% + 20% + 67%) / 3 = 51,1%
Таким образом, используя второй метод, который я обозначил звездочкой (*):
Макро-F1 * = 2 × (54,7% × 51,1%) / (54,7% + 51,1%) = 52,8%
Как видите, значения Macro-F1 и Macro-F1 * сильно различаются: 46,5% против 52,8%.
Macro-F1 и Macro-F1 * измеряют две разные вещи. Так какой из них является «истинным» макро-счетом F1? Макро-F1 или Макро-F1 *? Читать дальше.
Ссылка, которую прислала мне Enigma, - это Систематический анализ показателей эффективности для задач классификации Марины Соколовой и Гая Лапалме [Ссылка 1]. По данным Google Scholar, эта статья имеет около 2000 цитирований.
Вот определение Macro F1-score из статьи Соколовой:
(Обратите внимание, что l - это количество классов, а M - для макроса. Кроме того, β - это параметр, который можно использовать для настройки относительной важности точности и отзыва. β = 1 придает одинаковый вес точности и отзывчивости, и это то, что я все время использовал в своих сообщениях.)
Действительно, как видно из отрывка из вышеприведенной статьи, в статье Соколова используется расчет Макро-F1 *, а не Макро-F1.
Напротив, в других источниках используется расчет Macro-F1. Широко цитируется статья Янга и др. Пересмотр методов категоризации текста 1999 г. [2]. На момент написания статьи, согласно Google Scholar, у статьи было 3695 цитирований. Вот соответствующая выдержка из статьи:
В параграфе упоминается, что в некоторых случаях использовалось макро-усредненное F1 [15]. Ссылка [15] относится к статье 1996 года Алгоритмы обучения для линейных текстовых классификаторов Льюиса и др. [Ссылка 3], где авторы прямо заявляют, что Среднее F1 - это среднее значение F1 для всех классов.
Вернемся к нашему вопросу: следует ли использовать Macro-F1 или Macro-F1 *? Оба они пытаются суммировать точность каждого класса и вспоминать значения в одно число, но по-разному. В отсутствие реальной проблемы, специфичной для предметной области, когда для каждого типа ошибки определена стоимость, обобщение производительности модели с использованием любой из метрик обеспечивает простой, но в некоторой степени расплывчатый способ сравнения моделей. При развертывании реальной системы эти числа, вероятно, будут неподходящими, и вам нужно будет предоставить свою собственную метрику, основанную на текущей бизнес-проблеме. В этом смысле обе метрики имеют один и тот же недостаток. Важно помнить, что при сравнении моделей используйте одну и ту же метрику.
Что касается того, что популярнее: если историю пишут победители, то - нравится вам это или нет - метрики определяются программными пакетами. Библиотека Python sklearn - самый популярный пакет машинного обучения, который предоставляет функцию sklearn.metrics.f1_score
, которая вычисляет Macro-F1 (а не Macro-F1 *). Таким образом, большинство специалистов по обработке данных и исследователей используют функцию библиотеки Python для вычисления Macro-F1, обычно не задумываясь, - точно так же, как я делал это до того, как электронное письмо от Enigma попало в мой почтовый ящик.
Обновление (18 декабря 2019 г.): я получил электронное письмо от Юри Опитца, который недавно стал соавтором статьи по этой теме, с интересными результатами. В частности, авторы рекомендуют использовать Macro-F1, а не Macro-F1 *, поскольку он менее чувствителен к распределению типов ошибок. Я рекомендую проверить газету; см. [Ссылка 4] в конце этого сообщения.
Ссылки
[Ссылка 1] Соколова, Марина и Гай Лапальм. « Систематический анализ показателей эффективности для классификационных задач .» Обработка информации и управление 45.4 (2009): 427–437.
[Ссылка 2] Ян, Имин и Синь Лю. « Пересмотр методов категоризации текста .» СИГИР. Vol. 99. №8. 1999 г.
[Ссылка 3] Льюис, Дэвид Д. и др. « Алгоритмы обучения линейных текстовых классификаторов .» СИГИР. Vol. 96. 1996.
[Ссылка 3] Льюис, Дэвид Д. и др. « Алгоритмы обучения линейных текстовых классификаторов .» СИГИР. Vol. 96. 1996.
[Ссылка 4] Опиц, Юри и Себастьян Берст. Макро F1 и Макро F1. »препринт arXiv arXiv: 1911.03347 (2019).