EssayAI
Блог
Блог
Математика и алгоритмы

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

30 апреля 2026Время чтения: 7 минут
#f1 score#precision#recall#классификация#метрики качества
F1 score: баланс precision и recall в классификации

Когда модель классификации обучена, возникает главный вопрос: насколько хорошо она работает? Доля верных ответов (accuracy) обманчива на несбалансированных данных, поэтому на сцену выходит метрика F1 score - компромисс между точностью и полнотой. Она сводит две конкурирующие характеристики precision и recall в одно число и не даёт модели «жульничать», игнорируя редкий, но важный класс. Разберём, как устроена F1-мера, почему в её основе лежит гармоническое среднее и в каких задачах без неё не обойтись.

Что такое precision и recall

Любая бинарная классификация порождает четыре исхода: истинно-положительные TPTP, ложно-положительные FPFP, истинно-отрицательные TNTN и ложно-отрицательные FNFN. Точность (precision) отвечает на вопрос «насколько можно доверять положительному прогнозу модели»:

Precision=TPTP+FP.\text{Precision} = \frac{TP}{TP + FP}.

Полнота (recall, она же чувствительность) измеряет, какую долю реальных положительных объектов модель сумела поймать:

Recall=TPTP+FN.\text{Recall} = \frac{TP}{TP + FN}.

Эти два показателя тянут в разные стороны. Если модель помечает положительным классом всё подряд, recall стремится к единице, но precision падает. Если она крайне осторожна и срабатывает лишь при полной уверенности, precision растёт, а recall проседает. Метрика F1 score нужна именно для того, чтобы оценить этот баланс одним числом.

Прежде чем углубляться в формулы, попробуйте посчитать F1 на своих числах - введите TP, FP, FN или готовые precision и recall, и разберём результат пошагово.

Формула F1 score через гармоническое среднее

F1-мера определяется как гармоническое среднее точности и полноты:

F1=2PrecisionRecallPrecision+Recall.F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}.

Подставив определения precision и recall, можно выразить F1 score напрямую через элементы матрицы ошибок:

F1=2TP2TP+FP+FN.F_1 = \frac{2\,TP}{2\,TP + FP + FN}.

Почему именно гармоническое, а не привычное арифметическое среднее? Гармоническое среднее H=2aba+bH = \frac{2ab}{a+b} ближе к меньшему из двух значений и резко штрафует дисбаланс. Если precision =0.9= 0.9, а recall =0.1= 0.1, арифметическое среднее даёт обнадёживающие 0.50.5, тогда как F1 =20.90.11.0=0.18= 2 \cdot \frac{0.9 \cdot 0.1}{1.0} = 0.18. Метрика честно сообщает, что модель почти не находит нужные объекты. Достичь высокого F1 score можно только тогда, когда и точность, и полнота одновременно высоки.

Когда F1 лучше, чем accuracy

Доля верных ответов считается как TP+TNTP+TN+FP+FN\frac{TP + TN}{TP + TN + FP + FN} и хорошо работает на сбалансированных классах. Но представьте задачу выявления мошеннических транзакций, где доля мошенничества - 1%. Модель, которая всегда предсказывает «честная транзакция», даст accuracy 99% и при этом не поймает ни одного мошенника: recall =0= 0, а значит и F1 score =0= 0. Именно поэтому метрика F1 незаменима при сильном дисбалансе классов - она опирается только на положительный класс и не вознаграждает за тривиальное угадывание большинства.

Если стоимость пропуска (FN) и ложной тревоги (FP) сильно различается, чистая F1 может вводить в заблуждение - она считает их равнозначными. Тогда переходите к взвешенной версии.

F-beta: смещение баланса в нужную сторону

F1 - частный случай более общей FβF_\beta-меры, где параметр β\beta задаёт относительный вес полноты по сравнению с точностью:

Fβ=(1+β2)PrecisionRecallβ2Precision+Recall.F_\beta = (1 + \beta^2) \cdot \frac{\text{Precision} \cdot \text{Recall}}{\beta^2 \cdot \text{Precision} + \text{Recall}}.

При β=1\beta = 1 получаем классическую F1 score с равным балансом. При β=2\beta = 2 (F2-мера) полнота важнее в два раза - это уместно в медицинском скрининге, где пропустить больного дороже, чем перестраховаться. При β=0.5\beta = 0.5 (F0.5-мера) важнее точность - например, в рекомендательных системах, где ложная рекомендация раздражает пользователя. Так F-beta превращает жёсткий баланс precision и recall в управляемый.

Усреднение F1 для многоклассовой задачи

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

  • Macro-F1 - простое среднее F1 по всем классам; каждый класс равноправен независимо от размера, что подчёркивает качество на редких классах.
  • Micro-F1 - сначала суммируют TPTP, FPFP, FNFN по всем классам, потом считают единый F1; крупные классы доминируют, а результат совпадает с глобальной accuracy в однометочной задаче.
  • Weighted-F1 - среднее F1 с весами по числу объектов каждого класса; компромисс между двумя предыдущими.

Выбор схемы напрямую влияет на интерпретацию: macro покажет проблемы с редкими категориями, micro - общую массовую точность. Например, если в датасете три класса с F1 =0.9= 0.9, 0.90.9 и 0.20.2, то macro-F1 даст 0.67\approx 0.67 и громко сообщит о провале на третьем классе, тогда как micro-F1, где доминируют первые два многочисленных класса, может остаться около 0.880.88 и замаскировать проблему. Поэтому в отчётах часто приводят сразу обе метрики. Если вы уже разбираетесь с надёжностью оценок, полезно сопоставить это с тем, как ведёт себя состоятельная оценка параметра при росте выборки.

Связь с ROC и порогом классификации

Большинство моделей выдают не метку, а вероятность принадлежности к положительному классу. Меняя порог отсечения, мы двигаемся по кривой precision-recall: понижение порога повышает recall ценой precision. F1 score удобно использовать для подбора оптимального порога - берут то значение, при котором F1 максимальна. На практике строят кривую precision-recall по валидационной выборке, вычисляют F1 в каждой точке и фиксируют порог с пиком. В отличие от ROC-AUC, метрика precision-recall и производная от неё F1 чувствительнее к дисбалансу, потому что не учитывают истинно-отрицательные TNTN, которых на перекошенных данных подавляющее большинство.

Стоит помнить и о принципиальном ограничении: 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, хотя оптимальный порог почти всегда другой и его надо подбирать по валидации.
  • Забывают, что при Precision=Recall=0\text{Precision} = \text{Recall} = 0 формула даёт деление на ноль; такой случай нужно обрабатывать как F1=0F_1 = 0.

FAQ

Может ли F1 score быть больше точности или полноты? Нет. Гармоническое среднее всегда лежит между меньшим и большим из значений и не превосходит их арифметического среднего, поэтому F1 не может быть выше максимума из precision и recall.

Чем F1 отличается от ROC-AUC? ROC-AUC оценивает ранжирующую способность модели по всем порогам и учитывает TNTN, а F1 фиксирует один порог и игнорирует TNTN, из-за чего лучше отражает качество на редком положительном классе.

Какое значение F1 считается хорошим? Универсального порога нет: F1 интерпретируют относительно базовой линии и специфики задачи. На сбалансированных данных 0.80.8 часто хорошо, но при экстремальном дисбалансе и 0.40.4 может быть отличным результатом.

Коротко

Метрика F1 score - это гармоническое среднее precision и recall, объединяющее точность и полноту в одно число и резко штрафующее перекос между ними. Она незаменима на несбалансированных классах, где accuracy лжёт, а её обобщение F-beta позволяет смещать баланс в сторону полноты или точности. В многоклассовых задачах F1 усредняют через macro, micro или weighted схемы, и тот же показатель служит критерием подбора оптимального порога классификации.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также