В области машинного обучения крайне важно оценивать производительность и точность прогностических моделей. Одной из популярных оценочных метрик, используемых для этой цели, является кривая AUC-ROC. Это дает ценную информацию о том, насколько хорошо модель может различать разные классы или категории. В этом блоге мы рассмотрим кривую AUC-ROC и то, как ее можно использовать для оценки производительности моделей машинного обучения.

Что такое кривая AUC-ROC?

AUC означает Площадь под кривой, а ROC означает Рабочая характеристика приемника. Кривая ROC представляет собой графическое представление, которое сообщает нам о производительности модели классификации, отображая правильно положительные результаты в сравнении с ложно положительными результатами при различных пороговых значениях. Кривая AUC-ROC суммирует общую производительность модели по всем возможным порогам классификации.

Теперь давайте рассмотрим некоторые термины, которые помогут нам лучше понять ROC и AUC. Для этого давайте посмотрим, как выглядит матрица путаницы:

𝚃𝚛𝚞𝚎 𝙿𝚘𝚜𝚒𝚝𝚒𝚟𝚎 𝚁𝚊𝚝𝚎

Показатель истинного положительного результата, также известный как чувствительность или отзыв, представляет собой показатель производительности, используемый в задачах бинарной классификации, таких как медицинская диагностика или контроль качества. Он измеряет долю реальных положительных случаев, правильно идентифицированных классификатором или моделью.

Другими словами, TPR показывает, насколько хорошо модель может различать положительные случаи среди всех реальных положительных примеров в наборе данных. Более высокий процент истинных положительных результатов указывает на лучшую производительность модели в правильном определении положительных случаев.

𝙵𝚊𝚕𝚜𝚎 𝙿𝚘𝚜𝚒𝚝𝚒𝚟𝚎 𝚁𝚊𝚝𝚎

Коэффициент ложных срабатываний – это показатель производительности, используемый в задачах бинарной классификации. Он измеряет долю отрицательных экземпляров, которые классификатор или модель ошибочно классифицировали как положительные.

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

𝚃𝚑𝚛𝚎𝚜𝚑𝚘𝚕𝚍 𝚂𝚎𝚕𝚎𝚌𝚝𝚒𝚘𝚗

Мы знаем, что предсказание меток классов модели машинного обучения основано на оценке вероятности, полученной моделью. Однако для этого необходимо определить порог, чтобы преобразовать эти вероятности в точные предсказания класса. Решение основано на сравнении прогнозируемой вероятности с заранее заданным пороговым значением. Если прогнозируемая вероятность превышает порог, экземпляр классифицируется как положительный класс; в противном случае он классифицируется как отрицательный класс.

𝚁𝙾𝙲 𝙲𝚞𝚛𝚟𝚎

Кривая Операционная характеристика приемника (ROC) представляет собой графическое представление, иллюстрирующее производительность модели бинарной классификации. Он предоставляет ценную информацию о том, насколько хорошо модель может различать разные классы или категории.

Кривая ROC создается путем построения графика положительных результатов (TPR) от положительных результатов (FPR) при различных пороговых значениях.

Как работает кривая AUC ROC?

Более высокий FPR на кривой ROC означает большую долю ложных положительных результатов по сравнению с истинными отрицательными результатами. В то время как более высокий TPR означает большую долю истинно положительных результатов, чем ложноотрицательных результатов. Чтобы сбалансировать график, мы должны сбалансировать порог. Чем ближе кривая к прямому углу, тем точнее модель.

Чтобы лучше понять, давайте копнем глубже. Итак, возьмем два случая:

𝓒𝓪𝓼𝓮 1: когда порог слишком мал.

В этот момент Истинно положительные увеличиваются, а Ложно отрицательные уменьшаются, что приводит к увеличению Истинно положительных результатов, тогда как Ложно положительных результатов увеличивается, а уменьшение Истинно отрицательных приводит к увеличению Коэффициента ложных срабатываний. Теперь построим этот график.

Здесь мы ясно видим, что наша точка находится слишком далеко от прямого угла.

𝓒𝓪𝓼𝓮 2:когда порог слишком велик

В этот момент Истинно положительныйуменьшается, а Ложноотрицательный увеличивается, что приводит к уменьшению Истинно положительного результата, тогда как Ложноположительный результат уменьшается, а увеличение истинно отрицательного приводит к уменьшению коэффициента ложноположительного срабатывания. Теперь построим этот график.

В этом случае мы ясно видим, что наша точка находится слишком далеко от прямого угла.

Из обоих приведенных выше случаев мы можем сделать вывод, что мы должны сбалансировать наш порог, чтобы получить более точную модель.

𝙉𝙤𝙬 𝙡𝙚𝙩’𝙨 𝙪𝙣𝙙𝙚𝙧𝙨𝙩𝙖𝙣𝙙 𝙩𝙝𝙚 𝙍𝙊𝘾-𝘼𝙐𝘾 𝙘𝙪𝙧𝙫𝙚 𝙪𝙨𝙞𝙣𝙜 𝙥𝙮𝙩𝙝𝙤𝙣

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

# Models for scikit-learn
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier

# Model Evaluation
from sklearn.model_selection import train_test_split
from sklearn.metrics import roc_curve, roc_auc_score
df = pd.read_csv("pima_indians_diabetes.csv", names=  ["Pregnancies","Glucose","BloodPressure","Skinthickness","Insulin","BMI","DiabetesPedigreeFunction","age","Outcome"])

# Splitting dataset into training and testing data
X = df.drop(["Outcome","Insulin"],axis=1)
y=df[['Outcome']]
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.20)
rfc = RandomForestClassifier()
rfc.fit(X_train, y_train)

lr = LogisticRegression()
lr.fit(X_train, y_train)

# prediction probabilities
pred_proba1 = lr.predict_proba(X_test)
pred_proba2 = rfc.predict_proba(X_test)

# roc curve for models
fpr1, tpr1, threshold1 = roc_curve(y_test, pred_proba1[:,1])
fpr2, tpr2, threshold2 = roc_curve(y_test, pred_proba2[:,1])

# roc curve when FPR = TPR
random_probab = [0 for i in range(len(y_test))]
random_fpr, random_tpr, _ = roc_curve(y_test, random_probab, pos_label=1)

# auc scores
auc_score1 = roc_auc_score(y_test, pred_proba1[:,1])
auc_score2 = roc_auc_score(y_test, pred_proba2[:,1])
# plot roc curves
plt.plot(fpr1, tpr1, linestyle='--',color='orange', label='Logistic Regression')
plt.plot(fpr2, tpr2, linestyle='--',color='green', label='Random Forest Classifier')
plt.plot(random_fpr, random_tpr, linestyle='--', color='blue')
plt.title('ROC curve')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
plt.show();

Это все о кривой AUC-ROC. Я надеюсь, что вы нашли этот блог интересным, а также пониманием. Спасибо.