← Назад к вопросам
Что такое AUC?
1.0 Junior🔥 281 комментариев
#Машинное обучение#Метрики и оценка моделей
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
AUC: Area Under the ROC Curve
Определение
AUC (Area Under the Curve) — это площадь под ROC кривой (Receiver Operating Characteristic). Это метрика для оценки качества бинарной классификации, которая показывает способность модели различать два класса при различных порогах классификации.
ROC кривая
ROC кривая строится с помощью:
- X-ось: False Positive Rate (FPR) = FP / (FP + TN)
- Y-ось: True Positive Rate (TPR) = TP / (TP + FN)
Кривая получается путём изменения порога вероятности классификации от 0 до 1.
Пример построения ROC кривой
from sklearn.metrics import roc_curve, auc
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
model = LogisticRegression()
model.fit(X_train, y_train)
y_proba = model.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, y_proba)
auc_score = auc(fpr, tpr)
print(f"AUC Score: {auc_score:.4f}")
Интерпретация AUC
- AUC = 1.0 — идеальная модель
- AUC = 0.5 — случайное предположение
- AUC = 0.0 — полностью противоположно
- AUC = 0.7-0.8 — приемлемо
- AUC = 0.8-0.9 — хорошо
- AUC > 0.9 — отлично
Математическое определение
AUC — это вероятность того, что модель присвоит более высокий балл позитивному примеру, чем негативному:
def calculate_auc_manual(y_true, y_scores):
n_pos = sum(y_true == 1)
n_neg = sum(y_true == 0)
count = 0
for i in range(len(y_true)):
for j in range(len(y_true)):
if y_true[i] == 1 and y_true[j] == 0:
if y_scores[i] > y_scores[j]:
count += 1
return count / (n_pos * n_neg)
Преимущества AUC
- Устойчива к дисбалансу классов: не зависит от соотношения классов
- Пороговая независимость: оценивает при всех возможных порогах
- Ранжирование: оценивает способность правильно ранжировать примеры
- Простая интерпретация: одно число от 0 до 1
Недостатки AUC
- Не учитывает стоимость ошибок: одинаково штрафует FP и FN
- При сильном дисбалансе: может быть высокой, даже если модель слаба на меньшинстве
- Ранговая метрика: не учитывает абсолютные вероятности
Альтернативы
from sklearn.metrics import precision_recall_curve, auc
precision, recall, _ = precision_recall_curve(y_test, y_proba)
auc_pr = auc(recall, precision) # PR-AUC для дисбаланса
Когда использовать
- Бинарная классификация: основная метрика
- Дисбалансированные данные: лучше, чем Accuracy
- Сравнение моделей: ранжирование качества
- Когда порог неизвестен: оценивает при всех порогах
AUC остаётся одной из самых надёжных метрик для оценки бинарной классификации в machine learning.