После написания моей серии из двух частей Мульти-классовые метрики стали проще (Часть 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).