Ответ
ROC-AUC (Receiver Operating Characteristic — Area Under Curve) — это метрика для оценки качества бинарного классификатора, которая показывает, насколько хорошо модель разделяет два класса независимо от выбранного порога классификации.
- ROC-кривая строится, откладывая True Positive Rate (Recall) по оси Y против False Positive Rate по оси X для разных пороговых значений.
- AUC (Area Under Curve) — это площадь под ROC-кривой. Значение 0.5 соответствует случайному угадыванию, а 1.0 — идеальному разделению.
Почему это полезно? AUC оценивает способность модели к ранжированию: насколько вероятности для положительных примеров в среднем выше, чем для отрицательных. Она инвариантна к дисбалансу классов и масштабу вероятностей.
Пример расчета:
from sklearn.metrics import roc_auc_score, roc_curve
import matplotlib.pyplot as plt
y_true = [0, 1, 0, 1, 1]
y_scores = [0.1, 0.9, 0.3, 0.8, 0.65] # вероятности или score
auc = roc_auc_score(y_true, y_scores)
print(f'AUC: {auc:.3f}') # Например, 0.917
# Построение кривой
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
plt.plot(fpr, tpr, label=f'ROC curve (AUC = {auc:.2f})')
plt.plot([0, 1], [0, 1], 'k--') # Линия случайного классификатора
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
Важный нюанс: Для сильно несбалансированных данных более информативной может быть Precision-Recall AUC, так как ROC-AUC может давать оптимистичную оценку.