Что такое F1-Score?

«Что такое F1-Score?» — вопрос из категории Метрики и функции потерь, который задают на 44% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

F1-Score — это метрика для оценки бинарной классификации, которая объединяет Precision (точность) и Recall (полноту) в одно число. Это гармоническое среднее, которое особенно полезно при работе с несбалансированными классами, где accuracy может вводить в заблуждение.

Формула: F1 = 2 * (Precision * Recall) / (Precision + Recall)

Почему это важно?

  • Баланс: F1 не позволяет жертвовать одним показателем (например, Recall) ради другого (Precision).
  • Несбалансированные данные: Если у вас 95% объектов одного класса и 5% другого, модель, всегда предсказывающая мажоритарный класс, будет иметь accuracy 95%, но F1-Score для миноритарного класса будет 0.

Пример расчета в Python:

from sklearn.metrics import f1_score

y_true = [0, 1, 1, 0, 1, 1, 0]  # Фактические метки
# Модель пропустила один положительный случай (второй) и сделала одну ложную тревогу (последний)
y_pred = [0, 0, 1, 0, 1, 1, 1]

score = f1_score(y_true, y_pred)
print(f"F1-Score: {score:.4f}")  # Output: F1-Score: 0.6667

Варианты для многоклассовой классификации:

  • macro: Усредняет F1 для каждого класса без учета дисбаланса.
  • micro: Глобально подсчитывает TP, FP, FN и вычисляет общий F1.
  • weighted: Усредняет F1 по классам с весом, равным поддержке класса (количеству истинных экземпляров).