Ответ
ROC-AUC (Area Under the Receiver Operating Characteristic Curve) и PR-AUC (Area Under the Precision-Recall Curve) — это метрики для оценки бинарных классификаторов, но они измеряют разные аспекты производительности модели.
| Метрика | Что оценивает | Чувствительность к дисбалансу | Типичное применение |
|---|---|---|---|
| ROC-AUC | Соотношение True Positive Rate (Recall) и False Positive Rate при варьировании порога классификации. | Низкая. Остается стабильной даже при сильном дисбалансе классов. | Общие задачи классификации, где оба класса примерно равнозначны (например, определение спама). |
| PR-AUC | Соотношение Precision (точности) и Recall (полноты). | Высокая. Резко падает, если модель плохо предсказывает редкий класс. | Задачи с сильным дисбалансом, где важен редкий класс (например, обнаружение мошенничества, медицинская диагностика). |
Почему это важно? В задачах с дисбалансом (например, 99% негативных и 1% позитивных примеров) высокий ROC-AUC может вводить в заблуждение, так как модель, всегда предсказывающая негативный класс, все равно будет иметь низкий FPR. PR-AUC в такой ситуации сразу покажет низкое качество, так как Precision для редкого класса будет нулевым.
Пример на Python:
from sklearn.metrics import roc_auc_score, average_precision_score
import numpy as np
# Имитация предсказаний модели и истинных меток
y_true = np.array([0, 1, 0, 1, 0, 0, 0, 1]) # Сильный дисбаланс
# Модель уверенно предсказывает негативный класс, но иногда ошибается с позитивным
y_scores = np.array([0.1, 0.9, 0.2, 0.8, 0.05, 0.15, 0.1, 0.7])
roc_auc = roc_auc_score(y_true, y_scores)
pr_auc = average_precision_score(y_true, y_scores)
print(f"ROC-AUC: {roc_auc:.3f}") # Может быть относительно высоким
print(f"PR-AUC: {pr_auc:.3f}") # Будет значительно ниже, что лучше отражает проблему
Вывод: Выбирайте PR-AUC, когда критически важно правильно находить объекты редкого класса и минимизировать ложные срабатывания.