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 схемы, и тот же показатель служит критерием подбора оптимального порога классификации.
Читайте также

Алгоритм AdaBoost: как слабые классификаторы дают сильный
Алгоритм AdaBoost простыми словами: адаптивный бустинг, перевзвешивание объектов, формула веса классификатора, итоговый ансамбль и разбор шага на примере с формулами.

Функция активации softmax: формула и расчёт
Функция активации softmax простыми словами: как из логитов получить вероятности классов, как вывести формулу, зачем нужна температура и численная устойчивость, где ошибаются студенты.

Абстрактный класс и интерфейс: в чём отличие
Абстрактный класс и интерфейс: чем отличаются в ООП, когда наследовать поведение, а когда задавать контракт, как выбрать на примерах Java, C# и Python.

Алгоритм CatBoost: бустинг с обработкой категорий
Алгоритм CatBoost простыми словами: упорядоченный бустинг против сдвига прогноза, кодирование категориальных признаков через ordered target statistics, симметричные деревья и разбор типовых задач.

Алгоритм консенсуса Raft: как кластер выбирает лидера
Алгоритм консенсуса Raft простыми словами: роли лидера и последователей, выборы по таймауту, репликация журнала, фиксация записи большинством и сравнение с Paxos.

Алгоритм LightGBM: быстрый градиентный бустинг
Алгоритм LightGBM простыми словами: рост дерева по листьям против роста по уровням, гистограммы признаков, GOSS и EFB, настройка num_leaves и learning rate, борьба с переобучением и разбор задач.