Что такое F1-Score
F1-Score — это метрика качества классификации, которая объединяет precision и recall в одну оценку через гармоническое среднее. Она особенно полезна при несбалансированных классах, так как учитывает и полноту, и точность, в отличие от accuracy, которая может вводить в заблуждение при редких положительных классах.
Как это работает
F1-Score вычисляется по формуле:
F1 = 2 * (precision * recall) / (precision + recall)
где:
- precision (точность) — доля верно предсказанных положительных объектов среди всех объектов, отнесённых моделью к положительному классу:
TP / (TP + FP). - recall (полнота) — доля верно предсказанных положительных объектов среди всех реально положительных объектов:
TP / (TP + FN).
Гармоническое среднее, в отличие от арифметического, штрафует за сильный дисбаланс между precision и recall. Если одна из метрик близка к нулю, F1 также стремится к нулю, даже если вторая метрика высокая.
Пример на Python
В библиотеке sklearn метрика реализована в функции f1_score:
from sklearn.metrics import f1_score
y_true = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 0, 1]
# Вычисляем F1 для бинарной классификации
print(f1_score(y_true, y_pred)) # 0.666...Здесь модель правильно предсказала два из трёх положительных объектов (recall = 2/3) и два из трёх предсказанных положительных объектов действительно положительные (precision = 2/3), поэтому F1 = 0.666.
Подводные камни
- Не учитывает истинно отрицательные случаи (TN). F1 полностью игнорирует TN, поэтому она не подходит для задач, где важна корректная классификация отрицательного класса (например, детекция спама, где большинство писем — не спам).
- Чувствительность к дисбалансу классов. В отличие от accuracy, F1 не будет высокой, если модель просто предсказывает все объекты как большинство. Это делает её предпочтительной метрикой для задач с редким положительным классом.
- Мультиклассовая классификация. Для задач с более чем двумя классами используют варианты:
- macro — среднее F1 по каждому классу, без учёта размера класса;
- micro — глобальный подсчёт TP, FP, FN по всем классам;
- weighted — среднее F1, взвешенное по количеству объектов каждого класса.
Когда использовать
F1-Score выбирают, когда:
- классы несбалансированы, и accuracy неинформативна;
- важны и precision, и recall, и нет приоритета одного над другим;
- нужно сравнивать модели в задачах с редкими событиями (медицинская диагностика, поиск аномалий, детекция мошенничества).
Если же критически важна одна из метрик (например, в медицинском скрининге важнее не пропустить болезнь — выше recall), лучше использовать именно её, а не F1.
Коротко
- F1 — гармоническое среднее precision и recall, формула:
2 * (precision * recall) / (precision + recall). - Полезна при несбалансированных классах, так как учитывает оба показателя.
- Не учитывает TN, поэтому не подходит для задач, где важна точность отрицательного класса.
- Для мультиклассовой классификации есть macro, micro и weighted варианты.
