Встречается на 20% собеседований по Data Engineer

Что такое 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:

python
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 варианты.
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы