Кривые рабочих характеристик приемника (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 является полезной метрикой для сравнения классификаторов, ее следует использовать в сочетании с другими факторами, такими как вычислительная сложность и интерпретируемость, при выборе лучшего классификатора для конкретного приложения.

Я прочитал эту исследовательскую работу, чтобы лучше понять:



Если вам понравилось мое объяснение, пожалуйста, похлопайте этой статье 👏 и поделитесь ею со своими друзьями и приятелями по учебе 🫂

контакт: https://atharv4git.github.io/webpage/