Что такое F1-score и когда его использовать?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
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 рекомендуется использовать в следующих случаях:
-
Несбалансированные датасеты — когда один класс значительно преобладает над другим (например, обнаружение мошенничества, диагностика редких болезней)
-
Критичны обе ошибки — когда важны как false positives, так и false negatives:
- В медицине: пропустить болезнь (FN) и ложный диагноз (FP) одинаково плохи
- При обнаружении спама: пропустить спам и заблокировать легитимное письмо одинаково вредно
-
Нужен одиночный скор — когда нужна одна метрика вместо анализа 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, что делает её идеальной для большинства задач машинного обучения, где оба типа ошибок имеют значение.