На основе каких данных вычисляется ROC AUC?

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

Ответ

ROC AUC (Area Under the Receiver Operating Characteristic Curve) вычисляется на основе предсказанных вероятностей принадлежности к положительному классу и истинных бинарных меток (0 или 1).

Ключевые моменты:

  • Вход: Вектор вероятностей y_score (например, [0.1, 0.9, 0.8, 0.3, 0.7]) и вектор истинных меток y_true (например, [0, 1, 1, 0, 1]).
  • Процесс: Метрика оценивает способность модели ранжировать объекты — вероятность для реально положительных объектов должна быть выше, чем для отрицательных. AUC — это площадь под кривой, которая строится по точкам (FPR, TPR) при варьировании порога классификации.
  • Интерпретация:
    • AUC = 1.0: Идеальное разделение.
    • AUC = 0.5: Модель не лучше случайного угадывания.
    • AUC < 0.5: Модель работает хуже случайной (но можно инвертировать предсказания).

Пример вычисления с помощью scikit-learn:

from sklearn.metrics import roc_auc_score

y_true = [0, 1, 1, 0, 1]
y_scores = [0.1, 0.9, 0.8, 0.3, 0.7] # Вероятности класса 1

auc_score = roc_auc_score(y_true, y_scores)
print(f"ROC AUC: {auc_score:.3f}") # Пример вывода: 0.833

Важно: ROC AUC оценивает качество ранжирования, а не конкретные предсказания, и может быть оптимистичной для сильно несбалансированных данных, где важна точность предсказания миноритарного класса.