Что такое ROC-AUC · Data Scientist — JobPilot

Что такое ROC-AUC

Data Scientist · 46%
Вопрос 1395 / #
Пример ответа

Коротко: ROC-AUC — это метрика для оценки качества бинарных классификаторов, которую я часто использовал в задачах машинного обучения. Она показывает, насколько хорошо модель различает классы, и её значение от 0 до 1, где 1 — идеальное разделение.

Ключевые идеи:
  • ROC-кривая строится по точкам True Positive Rate (TPR) и False Positive Rate (FPR) при разных порогах классификации.
  • AUC (Area Under Curve) — площадь под ROC-кривой, количественная мера: AUC=0.5 — случайный классификатор, AUC=1 — идеальный.
  • ROC-AUC инвариантна к дисбалансу классов и порогу классификации, что делает её устойчивой для сравнения моделей.
Пример: В проекте по прогнозированию оттока клиентов я сравнивал логистическую регрессию и случайный лес: у первой AUC=0.85, у второй AUC=0.92, что показало лучшую разделяющую способность случайного леса.
Пример вычисления ROC-AUC с использованием scikit-learn для бинарной классификации
python
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# Генерация синтетических данных
X, y = make_classification(n_samples=1000, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# Обучение модели
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# Предсказание вероятностей для положительного класса
y_pred_proba = model.predict_proba(X_test)[:, 1]

# Вычисление ROC-кривой и AUC
fpr, tpr, thresholds = roc_curve(y_test, y_pred_proba)
roc_auc = auc(fpr, tpr)

# Построение графика ROC-кривой
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC curve (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--', label='Random Classifier')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic (ROC) Curve')
plt.legend(loc='lower right')
plt.show()

print(f'AUC: {roc_auc:.3f}')
Вопросы для интервьюера:
  • В каких случаях ROC-AUC может вводить в заблуждение?При сильном дисбалансе классов ROC-AUC может оставаться высокой, даже если модель плохо предсказывает меньший класс; в таких случаях лучше использовать Precision-Recall AUC.
  • Как интерпретировать AUC=0.7?AUC=0.7 означает, что модель на 70% лучше случайного классификатора (AUC=0.5) в разделении классов; это умеренное качество, пригодное для многих приложений, но может требовать улучшений.
Практический совет (на неделю):
  1. Используйте ROC-AUC для сравнения моделей на сбалансированных данных, но дополняйте её другими метриками, такими как F1-score или Precision-Recall, при дисбалансе.
  2. Визуализируйте ROC-кривые для нескольких моделей на одном графике, чтобы наглядно оценить их производительность и выбрать оптимальный порог классификации.
Data Scientist
Общий
46%
Навигация
Расскажи о себе
Следующий: Какие знаешь метрики регрессии
Предыдущий: Расскажи о себе

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.