ROC-кривая

Что измеряет

Definition

ROC-кривая показывает, как меняется соотношение между true positive rate и false positive rate бинарного классификатора при изменении порога принятия решения.

ROC расшифровывается как Receiver Operating Characteristic.

ROC-кривая используется для анализа бинарных классификаторов, которые выдают не только класс, но и score:

  • вероятность положительного класса;
  • расстояние до разделяющей границы;
  • confidence score;
  • decision function.

Главная идея: классификатор можно сделать более строгим или более мягким, меняя threshold. ROC-кривая показывает поведение модели при разных thresholds.

Формула

ROC-кривая строится по двум величинам.

True Positive Rate

True Positive Rate, TPR, или recall положительного класса:

TPR показывает, какую долю настоящих положительных объектов модель нашла.

False Positive Rate

False Positive Rate, FPR:

FPR показывает, какую долю настоящих отрицательных объектов модель ошибочно назвала положительными.

На ROC-графике:

  • ось X — FPR;
  • ось Y — TPR.

Каждая точка на кривой соответствует одному threshold.

ROC-AUC

ROC-AUC — площадь под ROC-кривой:

Интерпретация:

  • — идеальное ранжирование;
  • — примерно случайное угадывание;
  • — хуже случайного, возможно, score направлен наоборот.

Интуиция

Представим модель, которая выдаёт вероятность положительного класса.

Если threshold высокий, например 0.9, модель будет редко говорить «положительный класс». Тогда:

  • false positives будет мало;
  • но часть настоящих positives будет пропущена;
  • FPR низкий;
  • TPR тоже может быть не очень высоким.

Если threshold низкий, например 0.1, модель будет часто говорить «положительный класс». Тогда:

  • она найдёт почти все positives;
  • но ошибочно захватит много negatives;
  • TPR высокий;
  • FPR тоже высокий.

ROC-кривая показывает весь диапазон таких компромиссов.

Хорошая модель располагает положительные объекты выше отрицательных по score. Поэтому её ROC-кривая идёт ближе к верхнему левому углу.

Как интерпретировать

Главные ориентиры:

  • чем выше ROC-кривая, тем лучше;
  • верхний левый угол — идеальная область;
  • диагональ от до соответствует случайному классификатору;
  • ROC-AUC измеряет качество ранжирования положительных объектов выше отрицательных.

Пример интерпретации ROC-AUC:

ROC-AUCИнтерпретация
0.5Случайное качество
0.6–0.7Слабое качество
0.7–0.8Умеренное качество
0.8–0.9Хорошее качество
0.9–1.0Очень хорошее качество

Важно: эти границы условные. В реальной задаче качество нужно оценивать с учётом стоимости ошибок и предметной области.

ROC-AUC не выбирает threshold. Он оценивает, насколько хорошо модель ранжирует объекты.

Когда использовать

ROC-кривую стоит использовать, когда:

  • задача бинарной классификации;
  • модель выдаёт score или вероятность;
  • нужно сравнить модели без фиксации threshold;
  • классы не слишком экстремально несбалансированы;
  • важен общий trade-off между TPR и FPR;
  • нужно понять, как модель ведёт себя при разных порогах.

Типичные случаи:

  • сравнение логистической регрессии, SVM и случайного леса;
  • оценка медицинского классификатора;
  • скоринговые модели;
  • бинарная классификация материалов или экспериментов;
  • предварительный анализ качества ранжирования.

Когда метрика обманывает

ROC-AUC может вводить в заблуждение при сильном дисбалансе классов.

Например, если положительный класс очень редкий, модель может иметь высокий ROC-AUC, но при выбранном threshold давать слишком много false positives.

Причина: FPR считается относительно всех отрицательных объектов:

Если отрицательных объектов очень много, даже небольшой FPR может означать большое абсолютное число ложных срабатываний.

В задачах с редким положительным классом часто полезнее смотреть:

  • precision;
  • recall;
  • F1-score;
  • PR-AUC;
  • confusion matrix при конкретном threshold.

ROC-AUC также может быть не лучшей метрикой, если:

  • важен конкретный рабочий threshold;
  • разные типы ошибок имеют разную стоимость;
  • вероятности должны быть хорошо откалиброваны;
  • положительный класс очень редкий;
  • нужна интерпретация качества в терминах precision.

Связанные метрики

Связанные метрики и инструменты:

МетрикаЧто показывает
AccuracyДолю правильных ответов
PrecisionДолю правильных среди предсказанных positives
Recall / TPRДолю найденных настоящих positives
FPRДолю ошибочно поднятых negatives
F1-scoreБаланс precision и recall
PR-AUCПлощадь под precision-recall curve
Confusion matrixПолную таблицу TP, FP, TN, FN

Подробнее: Метрики качества классификаторов.

ROC-кривая особенно связана с recall и false positive rate, а PR-кривая — с precision и recall.

Минимальный пример

from sklearn.metrics import roc_auc_score, roc_curve
 
y_true = [0, 0, 1, 1]
y_score = [0.1, 0.4, 0.35, 0.8]
 
auc = roc_auc_score(y_true, y_score)
fpr, tpr, thresholds = roc_curve(y_true, y_score)
 
print("AUC:", auc)
print("FPR:", fpr)
print("TPR:", tpr)
print("thresholds:", thresholds)

В этом примере y_score — не итоговые классы, а score модели для положительного класса. ROC строится именно по score, потому что нужно проверить разные thresholds.

Связанные понятия

Что знать перед этим

Связанные заметки