Ответ
F1-score (F-мера) и ROC AUC — метрики для оценки бинарных классификаторов, но они измеряют разные аспекты.
F1-Score
- Что измеряет: Гармоническое среднее между Precision (точность) и Recall (полнота). Отражает баланс между ложными срабатываниями и пропущенными целями для конкретного порога классификации (обычно 0.5).
- Формула:
F1 = 2 * (Precision * Recall) / (Precision + Recall) - Когда использовать: Когда классы несбалансированы и важны оба типа ошибок. Например, в задачах поиска мошенничества (важно не пропустить мошенника — высокий Recall, и не заблокировать честного клиента — высокий Precision).
ROC AUC (Area Under the ROC Curve)
- Что измеряет: Способность модели разделять два класса (отличить положительный от отрицательного) на всех возможных порогах. Показывает, насколько модель лучше случайного угадывания.
- Диапазон: От 0 до 1. AUC = 0.5 — модель не лучше случайной, AUC = 1 — идеальное разделение.
- Когда использовать: Для общей оценки качества модели, особенно когда распределение классов в будущем может измениться или когда порог классификации не фиксирован.
Ключевое отличие: F1-score — это конкретная точка на кривой (зависит от порога). ROC AUC — это интегральная характеристика качества разделения на всех порогах (не зависит от порога).
Пример на Python:
from sklearn.metrics import f1_score, roc_auc_score
y_true = [0, 1, 1, 0, 1]
y_pred_proba = [0.1, 0.9, 0.8, 0.3, 0.65] # вероятности класса 1
# Для F1 нужны бинарные предсказания. Применяем порог 0.5
y_pred_binary = [1 if p > 0.5 else 0 for p in y_pred_proba]
f1 = f1_score(y_true, y_pred_binary) # Оценивает качество при пороге 0.5
# ROC AUC работает с вероятностями
roc_auc = roc_auc_score(y_true, y_pred_proba) # Оценивает качество разделения в целом