Кривые рабочих характеристик приемника (ROC) и показатели площади под кривой (AUC) — это две широко используемые оценочные метрики в машинном обучении, особенно в задачах классификации. Они используются для оценки эффективности бинарных классификаторов, которые представляют собой модели, предсказывающие бинарный результат (например, есть ли у пациента заболевание или нет). В этой статье мы объясним, что такое кривые ROC и показатели AUC, как они вычисляются и как их можно использовать для сравнения производительности различных классификаторов.
Что такое ROC-кривая?
Кривая ROC представляет собой графическое представление производительности бинарного классификатора при различных порогах классификации. Он отображает процент истинных положительных результатов (TPR) в сравнении с уровнем ложных срабатываний (FPR) для всех возможных пороговых значений. TPR — это доля положительных случаев, которые правильно идентифицируются классификатором (т. е. чувствительность), а FPR — это доля отрицательных случаев, которые неправильно классифицируются как положительные (т. е. 1-специфичность).
Чтобы построить кривую ROC, нам сначала нужно рассчитать TPR и FPR при разных порогах классификации. Порог классификации — это значение от 0 до 1, которое используется для преобразования непрерывного вывода классификатора в двоичный прогноз. Если результат выше порога, классификатор предсказывает положительный результат; в противном случае он предсказывает отрицательный результат. Изменяя порог, мы можем получить различные компромиссы между TPR и FPR.
Например, предположим, что у нас есть двоичный классификатор, который предсказывает, является ли электронное письмо спамом или нет. Результатом классификатора является непрерывная оценка от 0 до 1, где более высокие оценки указывают на более высокую вероятность того, что это спам. Чтобы преобразовать эту оценку в двоичный прогноз, мы можем выбрать порог (например, 0,5) и предсказать положительный результат, если оценка выше порога, и отрицательный результат в противном случае. Изменяя порог, мы можем получить разные значения TPR и FPR, которые мы можем нанести на кривую ROC.
Пример кривой ROC показан ниже:
Каждая точка на кривой соответствует определенному порогу классификации. Диагональная линия представляет собой случайный классификатор, который имеет равную вероятность предсказать положительный или отрицательный результат. Идеальный классификатор будет иметь TPR, равный 1, и FPR, равный 0, что соответствует верхнему левому углу кривой. Чем ближе кривая ROC к верхнему левому углу, тем выше производительность классификатора.
Что такое показатель AUC?
Показатель площади под кривой (AUC) — это одно числовое значение, которое суммирует общую производительность бинарного классификатора по всем возможным пороговым значениям классификации. Она равна площади под кривой ROC, отсюда и название. Показатель AUC варьируется от 0 до 1, причем более высокие значения указывают на лучшую производительность.
Оценка AUC 0,5 указывает на то, что классификатор не лучше случайного, а оценка 1 указывает на идеальную классификацию. Оценка от 0,5 до 1 указывает на то, что классификатор лучше случайного, а более высокие значения указывают на лучшую производительность.
Показатель AUC имеет несколько преимуществ по сравнению с другими показателями оценки, такими как точность или кривые точности-отзыва. Одним из преимуществ является то, что он нечувствителен к изменениям в распределении положительных и отрицательных случаев, что может повлиять на другие показатели, такие как точность. Еще одно преимущество заключается в том, что он позволяет нам напрямую сравнивать производительность разных классификаторов, даже если они имеют разные пороги классификации или дают разное количество ложноположительных и ложноотрицательных результатов.
Как рассчитывается кривая ROC?
Чтобы вычислить кривую ROC, нам сначала нужно рассчитать TPR и FPR при разных порогах классификации. TPR определяется как:
FPR = FP / (FP + TN)
где TP — количество истинно положительных результатов (т. е. положительных случаев, которые правильно классифицированы), а FN — количество ложноотрицательных результатов (т. е. положительных случаев, которые неправильно классифицированы как отрицательные). FPR определяется как:
FPR = FP / (FP + TN)
где FP — количество ложноположительных результатов (т. е. отрицательных случаев, которые неправильно классифицируются как положительные), а TN — количество истинно отрицательных результатов (т. е. отрицательных случаев, которые правильно классифицируются).
Чтобы получить TPR и FPR при разных порогах классификации, нам нужно варьировать порог и вычислять соответствующие значения TP, FP, TN и FN. Например, предположим, что у нас есть бинарный классификатор, который предсказывает, есть ли у пациента заболевание, и мы хотим построить ROC-кривую для этого классификатора. Мы можем варьировать порог классификации от 0 до 1 (например, с шагом 0,01), и для каждого порога мы можем подсчитать количество истинных положительных результатов, ложных положительных результатов, истинных отрицательных результатов и ложных отрицательных результатов на основе фактических и предсказанных меток. .
После того, как мы рассчитали TPR и FPR при разных порогах классификации, мы можем нанести их на кривую ROC. Кривая ROC представляет собой график отношения TPR (ось y) к FPR (ось x) для всех возможных порогов классификации. Кривая обычно гладкая и выпуклая, при этом верхний левый угол представляет идеальную классификацию (т. е. TPR = 1, FPR = 0), а правый нижний угол представляет случайную классификацию (т. е. TPR = FPR = 0,5).
Как рассчитывается показатель AUC?
Чтобы вычислить показатель AUC, нам нужно рассчитать площадь под кривой ROC. Один из способов сделать это — использовать численное интегрирование, которое включает в себя деление кривой ROC на маленькие трапеции и суммирование их площадей. Формула для вычисления показателя AUC с помощью численного интегрирования:
AUC = ∑[i=1 to N-1] (TPR[i+1] - TPR[i]) * (FPR[i] + FPR[i+1]) / 2
где N — общее количество порогов классификации, TPR[i] и FPR[i] — TPR и FPR на i-м пороге, а ∑ обозначает суммирование. Эта формула вычисляет площадь под кривой ROC путем суммирования площадей трапеций, образованных соседними точками на кривой.
Другой способ вычислить показатель AUC — использовать U-статистику Манна-Уитни, которая представляет собой непараметрический тест того, взяты ли две выборки из одного и того же распределения. Показатель AUC можно интерпретировать как вероятность того, что случайно выбранный положительный случай будет оценен классификатором выше, чем случайно выбранный отрицательный случай.
Как можно использовать кривые ROC и показатели AUC для сравнения классификаторов?
Кривые ROC и показатели AUC являются полезными инструментами для сравнения эффективности различных классификаторов. Один из способов их использования — построить кривые ROC нескольких классификаторов на одном графике и сравнить их оценки AUC. Классификатор с наивысшей оценкой AUC обычно считается лучшим, хотя следует учитывать и другие факторы, такие как вычислительная сложность и интерпретируемость.
Другой способ использования кривых ROC и оценок AUC — выбрать конкретную рабочую точку на кривой, которая уравновешивает компромисс между TPR и FPR для конкретного приложения. Например, в сценарии медицинского диагноза мы можем захотеть максимизировать TPR (т. е. долю пациентов с заболеванием, которым поставлен правильный диагноз), сохраняя при этом FPR (т. е. долю здоровых пациентов, которым поставлен неправильный диагноз) ниже определенного значения. порог. В этом случае мы можем выбрать порог классификации, соответствующий определенной точке на ROC-кривой, и сравнить TPR и FPR для разных классификаторов на этом пороге.
Кривые ROC и показатели AUC также можно использовать для оценки эффективности классификаторов на несбалансированных наборах данных, где один класс гораздо более распространен, чем другой. В таких наборах данных классификатор, который всегда предсказывает класс большинства (т. е. класс с большим количеством выборок), будет достигать высокой точности, но может иметь низкий TPR для класса меньшинства. Построив кривую ROC и вычислив показатель AUC, мы можем оценить производительность классификатора по всем возможным пороговым значениям классификации и сравнить его с другими классификаторами, которые могут работать лучше в классе меньшинства.
Попробуй это!
В Python вы можете использовать модуль sklearn.metrics
для расчета и построения кривой ROC и показателя AUC. Вот пример того, как его использовать:
from sklearn.metrics import roc_curve, roc_auc_score import matplotlib.pyplot as plt # assume y_true and y_score are the true labels and predicted scores, respectively fpr, tpr, thresholds = roc_curve(y_true, y_score) auc = roc_auc_score(y_true, y_score) # plot the ROC curve plt.plot(fpr, tpr, label=f'AUC = {auc:.2f}') plt.plot([0, 1], [0, 1], 'k--') plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver Operating Characteristic (ROC) Curve') plt.legend() plt.show()
В этом коде y_true
и y_score
— это истинные метки и прогнозируемые оценки соответственно. Функция roc_curve()
вычисляет FPR и TPR для разных порогов классификации и возвращает их в виде массивов. Функция roc_auc_score()
вычисляет оценку AUC с учетом массивов FPR и TPR.
Когда у вас есть массивы FPR и TPR, вы можете построить кривую ROC с помощью Matplotlib. Функция plot()
принимает массивы FPR и TPR в качестве входных данных, и вы можете использовать параметр label
, чтобы добавить показатель AUC в легенду. Функция plot()
также строит диагональную линию (т. е. линию с наклоном 1) с использованием строки формата k--
.
Наконец, вы можете настроить график с помощью функций xlabel()
, ylabel()
, title()
и legend()
, а затем вызвать show()
для отображения графика.
Заключение
Таким образом, кривые ROC и показатели AUC являются важными инструментами для оценки и сравнения производительности бинарных классификаторов. Они позволяют визуализировать компромисс между TPR и FPR при различных пороговых значениях классификации и вычисляют единую метрику, обобщающую общую производительность классификатора. Хотя оценка AUC является полезной метрикой для сравнения классификаторов, ее следует использовать в сочетании с другими факторами, такими как вычислительная сложность и интерпретируемость, при выборе лучшего классификатора для конкретного приложения.
Я прочитал эту исследовательскую работу, чтобы лучше понять:
Если вам понравилось мое объяснение, пожалуйста, похлопайте этой статье 👏 и поделитесь ею со своими друзьями и приятелями по учебе 🫂