F1-мера — сводная метрика качества классификации, среднее гармоническое точности и полноты. Применяется, когда нужен один балл для сравнения вариантов — прежде всего при дисбалансе классов и в поиске. Главное свойство: перекос в одну из сторон почти не поднимает значение, в отличие от среднего арифметического.
Как считается и почему именно гармоническое
Формула словами. F1 — это удвоенное произведение точности и полноты, делённое на их сумму. Точность 0,70 и полнота 0,60 дают 2 × 0,70 × 0,60 / 1,30 ≈ 0,65. Значение всегда лежит между точностью и полнотой и близко к меньшей из них.
Гармоническое не даёт поднять метрику перекосом. Система с точностью 1,0 и полнотой 0,04 — срабатывает идеально, но на каждом двадцать пятом случае — имеет среднее арифметическое 0,52, «прилично», и F1 около 0,08, честно. Среднее гармоническое близко к минимуму из двух значений, поэтому расти оно может только когда растут оба. Это и есть ответ на вопрос, зачем отдельная метрика вместо среднего.
F1 неявно уравнивает цену ошибок. Метрика штрафует пропуски и ложные срабатывания одинаково — для неё они равны. Реальная цена почти никогда не равна; это ограничение лечится не настройкой F1, а выбором другой метрики или раздельным отчётом.
Когда F1 уместна
Дисбаланс классов. Когда положительный класс — 1–5% потока, доля правильных ответов бесполезна: константное «нет» даёт 0,95–0,99. F1 не учитывает истинные отрицательные и потому не покупается дешёвым консерватизмом. Из каких клеток всё считается — в статье про матрицу ошибок.
Поиск и извлечение. Задачи вида «найди все релевантные фрагменты» двусторонние по природе: пользователь страдает и от пропусков, и от мусора. F1 даёт осмысленный рейтинг вариантов одной цифрой — при условии, что цена ошибок примерно симметрична.
Промежуточный скрининг. Когда из десяти конфигураций надо выбрать две для глубокой проверки, одна цифра удобнее пары. Финальное решение всё равно принимают по точности и полноте раздельно и по стоимости ошибок, а F1 — инструмент отбора.
Когда F1 вредит и что использовать вместо неё
Разная цена ошибок — главная ловушка. F1 уравнивает пропуск срочного обращения и ложную тревогу; если они стоят 10 000 и 50 рублей, оптимизация F1 приносит их в жертву непредсказуемым образом. Дешёвая замена — F-бета: F2 весит полноту выше точности (пропуски дороже), F0,5 — наоборот. Бету выбирают из отношения стоимостей: если пропуск дороже проверки примерно вчетверо, смотрят в сторону F2.
Когда лучше раздельный отчёт. Если система работает с человеком в контуре, решение задаёт операционная модель: сколько проверок выдержит смена и какой доли пропусков не допускает бизнес. Тогда в отчёт идут точность и полнота по отдельности при указанном пороге, а F1 — только сортировка кандидатов.
Когда лучше ожидаемые потери. Финальный выбор порога и модели выгодно делать прямо в деньгах: посчитать по матрице ошибок число пропусков и ложных тревог, умножить на их стоимости и сравнить суммы. Это снимает и вопрос веса, и вопрос метрики.
Macro и micro при нескольких классах
Многоклассовая задача даёт несколько пар точность–полнота. Классификатор обращений на 15 категорий имеет полноту 0,90 на «вопросе по счёту» и 0,30 на «жалобе». Свести их можно двумя способами, и они дают разные ответы.
Micro — сначала складываем события, потом делим. Все верные срабатывания всех классов делятся на все срабатывания. Частые классы доминируют: если «вопрос по счёту» — половина потока, его качество и определяет micro-F1, а деградация редких категорий почти не видна. На дисбалансе micro-F1 совпадает с долей правильных ответов и так же слепа к редким классам.
Macro — сначала считаем F1 каждого класса, потом усредняем. Редкая «жалоба» весит столько же, сколько массовый «вопрос по счёту». Macro жёстче к провалам на редких классах, поэтому для честного сравнения вариантов при дисбалансе берут его; micro оставляют как оценку среднего опыта пользователя.
Пример расхождения (иллюстративно). Восемь частых классов с F1 около 0,90 и два редких с F1 0,20 дают micro-F1 около 0,85 и macro-F1 около 0,76. Разница в девять пунктов — это и есть редкие категории, невидимые в micro; если жалоба — юридический риск, решение принимают по macro.
Почему одной цифрой систему не описать
F1 не фиксирует порог. Значение зависит от порога отсечения: один и тот же классификатор даёт F1 0,60 при пороге 0,3 и 0,75 при 0,5. Сравнивать две системы по F1 корректно только при одинаковой процедуре выбора порога — иначе сравниваются не модели, а пороги.
F1 скрывает направление ошибки. Одинаковый F1 0,70 у системы «точность 0,95 / полнота 0,56» и системы «точность 0,57 / полнота 0,93» — две разные операционные реальности: первая почти не тревожит понапрасну, вторая почти ничего не пропускает. Выбор между ними — выбор рабочей точки, а не рейтинга.
F1 усредняет по сегментам. Как любая сводная цифра, она прячет сегментные провалы; перед внедрением её считают по сегментам потока — каналам, темам, длине обращений — и докладывают размах, а не только среднее.
Типичные ошибки
Оптимизировать F1 при разной цене ошибок. Механизм: оптимизатор честно максимизирует метрику, а метрика не знает про стоимость; в отчёте успех, в эксплуатации разочарование. Лечение — F-бета с весами из стоимостей или переход к ожидаемым потерям в деньгах.
Сравнивать F1 разных систем при разных порогах и наборах. Смена набора или процедуры выбора порога меняет значение сильнее, чем реальное качество; корректное сравнение — один набор, одна процедура, зафиксированные конфигурации.
Показывать micro-F1 на дисбалансе как доказательство качества. Micro-F1 при классе-доминанте почти равен доле правильных ответов и допускает ту же дешёвую покупку — константный ответ частым классом. При дисбалансе докладывают macro-F1 и метрики ключевого редкого класса.
Гнаться за разницей в 1–2 пункта. На наборе в 100–200 вопросов такая разница — внутри шума, особенно у стохастической генерации; устойчивой считают разницу от пяти пунктов, воспроизводящуюся при повторном прогоне и на половинах набора.
Частые вопросы
Почему F1, а не среднее арифметическое точности и полноты?
Среднее арифметическое покупается перекосом: точность 1,0 и полнота 0,04 дают 0,52. Гармоническое близко к меньшей из величин, поэтому растёт только вместе с обеими. Именно это делает F1 устойчивой к «дешёвым» стратегиям.
Когда брать F2, а когда F0,5?
F2 — когда пропуск дороже ложной тревоги: срочные обращения, модерация, безопасность. F0,5 — когда дороже ложная тревога: автодействия, блокировки, решения, которые видит пользователь. Ориентир для беты — отношение стоимости пропуска к стоимости ложной тревоги.
Что выбрать — macro-F1 или micro-F1?
Для сравнения вариантов при дисбалансе — macro: он не даёт частым классам скрыть провалы редких. Micro оставляют как оценку среднего опыта пользователя. Расхождение между ними больше пяти пунктов — повод смотреть классы по отдельности.
Можно ли считать F1 для ответов LLM?
В лоб — нет: у генерации нет готового списка срабатываний. Практика — сводить задачу к проверяемым утверждениям и считать долю верных и выдуманных; для RAG это разобрано в статье про метрики качества RAG.
F1 выросла, а бизнесу стало хуже — почему?
Метрика уравняла стоимости ошибок, а в реальности они разные: оптимизация перераспределила ошибки в дешёвую для метрики и дорогую для бизнеса сторону. Считайте ожидаемые потери в деньгах при нескольких порогах и выбирайте рабочую точку по ним.
Сколько вопросов нужно, чтобы разница F1 была значимой?
Ориентир — 100–200 вопросов и разница от пяти пунктов; меньшие разницы на меньших наборах — внутри шума. Усреднение по нескольким разбиениям набора сужает разброс дешевле, чем кратный рост набора.