F1 score: баланс precision и recall в классификации

Когда модель классификации обучена, возникает главный вопрос: насколько хорошо она работает? Доля верных ответов (accuracy) обманчива на несбалансированных данных, поэтому на сцену выходит метрика F1 score - компромисс между точностью и полнотой. Она сводит две конкурирующие характеристики precision и recall в одно число и не даёт модели «жульничать», игнорируя редкий, но важный класс. Разберём, как устроена F1-мера, почему в её основе лежит гармоническое среднее и в каких задачах без неё не обойтись.
Что такое precision и recall
Любая бинарная классификация порождает четыре исхода: истинно-положительные , ложно-положительные , истинно-отрицательные и ложно-отрицательные . Точность (precision) отвечает на вопрос «насколько можно доверять положительному прогнозу модели»:
Полнота (recall, она же чувствительность) измеряет, какую долю реальных положительных объектов модель сумела поймать:
Эти два показателя тянут в разные стороны. Если модель помечает положительным классом всё подряд, recall стремится к единице, но precision падает. Если она крайне осторожна и срабатывает лишь при полной уверенности, precision растёт, а recall проседает. Метрика F1 score нужна именно для того, чтобы оценить этот баланс одним числом.
Прежде чем углубляться в формулы, попробуйте посчитать F1 на своих числах - введите TP, FP, FN или готовые precision и recall, и разберём результат пошагово.
Формула F1 score через гармоническое среднее
F1-мера определяется как гармоническое среднее точности и полноты:
Подставив определения precision и recall, можно выразить F1 score напрямую через элементы матрицы ошибок:
Почему именно гармоническое, а не привычное арифметическое среднее? Гармоническое среднее ближе к меньшему из двух значений и резко штрафует дисбаланс. Если precision , а recall , арифметическое среднее даёт обнадёживающие , тогда как F1 . Метрика честно сообщает, что модель почти не находит нужные объекты. Достичь высокого F1 score можно только тогда, когда и точность, и полнота одновременно высоки.
Когда F1 лучше, чем accuracy
Доля верных ответов считается как и хорошо работает на сбалансированных классах. Но представьте задачу выявления мошеннических транзакций, где доля мошенничества - 1%. Модель, которая всегда предсказывает «честная транзакция», даст accuracy 99% и при этом не поймает ни одного мошенника: recall , а значит и F1 score . Именно поэтому метрика F1 незаменима при сильном дисбалансе классов - она опирается только на положительный класс и не вознаграждает за тривиальное угадывание большинства.
Если стоимость пропуска (FN) и ложной тревоги (FP) сильно различается, чистая F1 может вводить в заблуждение - она считает их равнозначными. Тогда переходите к взвешенной версии.
F-beta: смещение баланса в нужную сторону
F1 - частный случай более общей -меры, где параметр задаёт относительный вес полноты по сравнению с точностью:
При получаем классическую F1 score с равным балансом. При (F2-мера) полнота важнее в два раза - это уместно в медицинском скрининге, где пропустить больного дороже, чем перестраховаться. При (F0.5-мера) важнее точность - например, в рекомендательных системах, где ложная рекомендация раздражает пользователя. Так F-beta превращает жёсткий баланс precision и recall в управляемый.
Усреднение F1 для многоклассовой задачи
Когда классов больше двух, F1-меру считают для каждого класса отдельно, а затем агрегируют. Используют три схемы:
- Macro-F1 - простое среднее F1 по всем классам; каждый класс равноправен независимо от размера, что подчёркивает качество на редких классах.
- Micro-F1 - сначала суммируют , , по всем классам, потом считают единый F1; крупные классы доминируют, а результат совпадает с глобальной accuracy в однометочной задаче.
- Weighted-F1 - среднее F1 с весами по числу объектов каждого класса; компромисс между двумя предыдущими.
Выбор схемы напрямую влияет на интерпретацию: macro покажет проблемы с редкими категориями, micro - общую массовую точность. Например, если в датасете три класса с F1 , и , то macro-F1 даст и громко сообщит о провале на третьем классе, тогда как micro-F1, где доминируют первые два многочисленных класса, может остаться около и замаскировать проблему. Поэтому в отчётах часто приводят сразу обе метрики. Если вы уже разбираетесь с надёжностью оценок, полезно сопоставить это с тем, как ведёт себя состоятельная оценка параметра при росте выборки.
Связь с ROC и порогом классификации
Большинство моделей выдают не метку, а вероятность принадлежности к положительному классу. Меняя порог отсечения, мы двигаемся по кривой precision-recall: понижение порога повышает recall ценой precision. F1 score удобно использовать для подбора оптимального порога - берут то значение, при котором F1 максимальна. На практике строят кривую precision-recall по валидационной выборке, вычисляют F1 в каждой точке и фиксируют порог с пиком. В отличие от ROC-AUC, метрика precision-recall и производная от неё F1 чувствительнее к дисбалансу, потому что не учитывают истинно-отрицательные , которых на перекошенных данных подавляющее большинство.
Стоит помнить и о принципиальном ограничении: F1 score - это точечная оценка для одного конкретного порога, тогда как площадь под precision-recall кривой (PR-AUC) описывает поведение модели сразу на всём диапазоне порогов. Если задача допускает гибкую настройку порога под бизнес-условия, разумнее сначала смотреть на PR-AUC, а уже затем фиксировать рабочую точку и отчитываться по F1 в ней. Так метрика F1 становится не самоцелью, а финальным срезом качества выбранного режима работы классификатора.
Частые ошибки
- Сравнивают F1 score модели с accuracy и делают вывод, что «метрика стала хуже» - это разные шкалы, сравнивать нужно однотипные показатели.
- Считают arithmetic mean от precision и recall, называя это F1; правильное среднее - гармоническое, оно строго не больше арифметического.
- Применяют micro-F1 на сильно несбалансированных данных и удивляются, что редкий класс «не виден» - для него нужен macro-F1.
- Оптимизируют F1 при фиксированном пороге 0.5, хотя оптимальный порог почти всегда другой и его надо подбирать по валидации.
- Забывают, что при формула даёт деление на ноль; такой случай нужно обрабатывать как .
FAQ
Может ли F1 score быть больше точности или полноты? Нет. Гармоническое среднее всегда лежит между меньшим и большим из значений и не превосходит их арифметического среднего, поэтому F1 не может быть выше максимума из precision и recall.
Чем F1 отличается от ROC-AUC? ROC-AUC оценивает ранжирующую способность модели по всем порогам и учитывает , а F1 фиксирует один порог и игнорирует , из-за чего лучше отражает качество на редком положительном классе.
Какое значение F1 считается хорошим? Универсального порога нет: F1 интерпретируют относительно базовой линии и специфики задачи. На сбалансированных данных часто хорошо, но при экстремальном дисбалансе и может быть отличным результатом.
Коротко
Метрика F1 score - это гармоническое среднее precision и recall, объединяющее точность и полноту в одно число и резко штрафующее перекос между ними. Она незаменима на несбалансированных классах, где accuracy лжёт, а её обобщение F-beta позволяет смещать баланс в сторону полноты или точности. В многоклассовых задачах F1 усредняют через macro, micro или weighted схемы, и тот же показатель служит критерием подбора оптимального порога классификации.
Читайте также

Алгоритм Рабина-Карпа: поиск подстроки за O(n+m)
Разбираем алгоритм Рабина-Карпа: как полиномиальный хеш и скользящее окно ускоряют поиск подстроки до O(n+m) в среднем, почему бывают ложные совпадения и при чём тут плагиат.

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

Модель Гордона: рост дивидендов и цена акции
Модель Гордона (Gordon Growth Model) оценивает справедливую стоимость акции через дивиденды с постоянным темпом роста. Формула, вывод, расчёт, ставка дисконтирования и ошибки.