← Назад к вопросам

Что такое F1-score и когда его использовать?

1.2 Junior🔥 221 комментариев
#Метрики и оценка моделей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

F1-score: определение и применение

F1-score — это гармоническое среднее между precision (точностью) и recall (полнотой). Это одна из наиболее важных метрик для оценки качества классификационных моделей, особенно когда классы в данных несбалансированы.

Формула

F1 = 2 * (Precision * Recall) / (Precision + Recall)

Где:

  • Precision = TP / (TP + FP) — доля верно классифицированных позитивных примеров
  • Recall = TP / (TP + FN) — доля выявленных позитивных примеров
  • TP (True Positive) — верные позитивные предсказания
  • FP (False Positive) — ошибочные позитивные предсказания
  • FN (False Negative) — пропущенные позитивные примеры

Когда использовать F1-score

F1-score рекомендуется использовать в следующих случаях:

  1. Несбалансированные датасеты — когда один класс значительно преобладает над другим (например, обнаружение мошенничества, диагностика редких болезней)

  2. Критичны обе ошибки — когда важны как false positives, так и false negatives:

    • В медицине: пропустить болезнь (FN) и ложный диагноз (FP) одинаково плохи
    • При обнаружении спама: пропустить спам и заблокировать легитимное письмо одинаково вредно
  3. Нужен одиночный скор — когда нужна одна метрика вместо анализа precision и recall отдельно

Когда НЕ использовать

  • Сбалансированные классы — используй accuracy (точность)
  • Асимметричные требования — если FP важнее FN, используй precision; если важнее выявить все случаи, используй recall
  • Регрессионные задачи — используй MAE, RMSE, R²

Практический пример

from sklearn.metrics import f1_score, precision_score, recall_score

y_true = [1, 0, 1, 1, 0, 1, 0, 1]
y_pred = [1, 0, 1, 0, 0, 1, 0, 0]

precision = precision_score(y_true, y_pred)
recall = recall_score(y_true, y_pred)
f1 = f1_score(y_true, y_pred)

print(f"Precision: {precision:.2f}")
print(f"Recall: {recall:.2f}")
print(f"F1-score: {f1:.2f}")

Взвешенный F1-score

Для мультиклассовой классификации используй weighted F1-score — усредняет F1 каждого класса с весом, соответствующим его частоте:

f1_weighted = f1_score(y_true, y_pred, average=weighted)

Выводы

F1-score — это универсальная метрика для классификации с несбалансированными классами. Она балансирует precision и recall, что делает её идеальной для большинства задач машинного обучения, где оба типа ошибок имеют значение.

Что такое F1-score и когда его использовать? | PrepBro