Area Under the Curve (AUC)
AUC сводит ROC-кривую к одному значению от 0 до 1: вероятности того, что классификатор поставит случайный положительный пример выше случайного отрицательного. ROC AUC и PR AUC, с кодом.
Площадь под кривой (AUC) — это метрика, которая обобщает, насколько хорошо бинарный классификатор разделяет два класса при всех возможных порогах принятия решения. В машинном обучении под AUC почти всегда подразумевают площадь под ROC-кривой (характеристикой работы приёмника), которую также обозначают ROC AUC или AUROC. Её значение равно вероятности того, что модель присвоит случайно выбранному положительному примеру более высокую оценку, чем случайно выбранному отрицательному. AUC 1,0 означает, что все положительные примеры имеют более высокие оценки, чем отрицательные; 0,5 — что ранжирование не лучше случайного; значения ниже 0,5 — что ранжирование инвертировано. Поскольку AUC зависит только от порядка оценок, она позволяет оценить модель до выбора порога, поэтому эта метрика стала стандартной для медицинских диагностических моделей, кредитного скоринга и обнаружения мошенничества.
Как рассчитывается AUC#
На ROC-кривой истинно положительная доля, то есть полнота, откладывается по вертикальной оси, а доля ложно положительных результатов — по горизонтальной. Последняя показывает долю отрицательных примеров, ошибочно помеченных как положительные. При этом порог принятия решения перемещается от самой высокой оценки к самой низкой. Порог выше всех оценок не помечает ничего и соответствует точке (0, 0); порог ниже всех оценок помечает всё и соответствует точке (1, 1). AUC — это площадь под линией, соединяющей все промежуточные точки; обычно её вычисляют методом трапеций.
То же значение можно получить подсчётом пар. Если сравнить каждый положительный пример с каждым отрицательным и начислять каждой паре 1, когда положительный пример ранжируется выше, 0,5 при равенстве и 0 в остальных случаях, получится та же ROC AUC. Статистики называют эту величину нормированной U-статистикой Манна — Уитни, а медицинские исследователи — коэффициентом конкордации или c-статистикой. Команды, оценивающие кредитные риски, часто вместо этого приводят коэффициент Джини, равный 2 × AUC − 1.
Попарное представление объясняет основные свойства AUC. Любое преобразование, сохраняющее порядок оценок, например возведение вероятностей в квадрат или применение температурного масштабирования к логитам бинарного классификатора, не меняет AUC. Поэтому у модели может быть отличная AUC, но плохо откалиброванные вероятности. Для оценки калибровки нужна отдельная метрика, например оценка Брайера.
ROC AUC и PR AUC на несбалансированных данных#
ROC AUC не зависит от соотношения классов, поскольку истинно положительная доля рассчитывается только по положительным примерам, а доля ложно положительных результатов — только по отрицательным. Это свойство становится слабым местом, когда положительные примеры редки. Если положителен 1 пример из 100, доля ложно положительных результатов в 5% даёт примерно пять ложных срабатываний на каждый реальный положительный пример, почти не влияя на ROC-кривую. Площадь под кривой «точность — полнота» (PR AUC), обычно обобщаемая средней точностью (AP), показывает точность в зависимости от полноты и явно отражает ложные срабатывания. Поэтому она информативнее ROC-кривой для несбалансированных данных. Скрипт ниже для scikit-learn оценивает одну модель обоими способами:
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import average_precision_score, roc_auc_score
from sklearn.model_selection import train_test_split
# Imbalanced binary problem: 1 positive per 100 samples
X, y = make_classification(n_samples=20_000, weights=[0.99], flip_y=0, random_state=0)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, stratify=y, random_state=0)
# Score the test set with a simple classifier
model = LogisticRegression(max_iter=1000).fit(X_train, y_train)
scores = model.predict_proba(X_test)[:, 1]
# The same scores summarized by the areas under two different curves
print(f"Positives in test set: {y_test.sum()} of {len(y_test)}")
print(f"ROC AUC: {roc_auc_score(y_test, scores):.3f}")
print(f"PR AUC (average precision): {average_precision_score(y_test, scores):.3f}")На 100 положительных примерах из 10 000 тестовых примеров модель достигает ROC AUC 0,911, но её средняя точность составляет всего 0,462. У этих двух показателей разные базовые значения: случайное ранжирование даёт ROC AUC 0,5 независимо от баланса классов, а его средняя точность равна доле положительных примеров — в этом случае 0,01.
Многоклассовая AUC и обнаружение объектов#
ROC AUC определена для двух классов. Для большего числа классов функция roc_auc_score в scikit-learn усредняет AUC по схеме «один против всех», где каждый класс сравнивается со всеми остальными, или по схеме «один против одного» для каждой пары классов, используя макроусреднение или усреднение с весами, пропорциональными распространённости классов.
Для обнаружения объектов нельзя использовать ROC-кривые, поскольку отрицательными примерами становятся все положения боксов, не содержащие объектов, — фактически неограниченное множество, для которого невозможно осмысленно определить долю ложно положительных результатов. В метриках обнаружения вместо этого используют площади под кривыми «точность — полнота». При валидации YOLO26 в Ultralytics рассчитывает среднюю точность каждого класса как площадь под огибающей кривой «точность — полнота», выбранную по 101 точке полноты, как при оценке COCO, а затем усредняет эти площади, получая среднюю точность по всем классам (mAP) при порогах IoU от 0,50 до 0,95.
AUC и смежные понятия#
- Точность: Измеряет долю правильных предсказаний при одном пороге и может казаться отличной на несбалансированных данных, даже если модель пропускает все положительные примеры. AUC измеряет качество ранжирования при всех порогах.
- F1-мера: Объединяет точность и полноту при одном пороге, оценивая одну рабочую точку, тогда как AUC обобщает показатели для всех порогов.
- Матрица ошибок: Подсчитывает истинно и ложно положительные, а также истинно и ложно отрицательные результаты при одном пороге. Каждая точка ROC-кривой представляет одну матрицу ошибок в виде пары долей.
- Средняя точность: Площадь под кривой «точность — полнота»; обычно её используют для обобщения результатов, когда положительные примеры редки. Это основной компонент mAP.
- Частичная AUC: Площадь в ограниченном диапазоне доли ложно положительных результатов, например от 0 до 0,1. Её используют, когда допустимы только низкие показатели ложных срабатываний, например в масштабных программах скрининга, где каждое ложное срабатывание ведёт к последующему обследованию.










