Как рассчитать AUC (площадь под кривой) в Python


Логистическая регрессия — это статистический метод, который мы используем для подбора модели регрессии, когда переменная отклика является бинарной.

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

  • Чувствительность: вероятность того, что модель предсказывает положительный результат для наблюдения, когда результат действительно положительный. Это также называется «истинно положительным показателем».
  • Специфичность: вероятность того, что модель предсказывает отрицательный результат для наблюдения, когда результат действительно отрицательный. Это также называется «истинной отрицательной ставкой».

Один из способов визуализировать эти две метрики — создать кривую ROC , которая означает кривую «рабочей характеристики приемника».

Это график, отображающий чувствительность по оси ординат и (1 — специфичность) по оси абсцисс.

Одним из способов количественной оценки того, насколько хорошо модель логистической регрессии справляется с классификацией данных, является вычисление AUC , что означает «площадь под кривой».

Чем ближе AUC к 1, тем лучше модель.

В следующем пошаговом примере показано, как рассчитать AUC для модели логистической регрессии в Python.

Шаг 1: Импорт пакетов

Во-первых, мы импортируем пакеты, необходимые для выполнения логистической регрессии в Python:

import pandas as pd
import numpy as np
from sklearn. model_selection import train_test_split
from sklearn. linear_model import LogisticRegression
from sklearn import metrics

Шаг 2: Подберите модель логистической регрессии

Далее мы импортируем набор данных и подгоним к нему модель логистической регрессии:

#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/default.csv"
data = pd.read_csv (url)

#define the predictor variables and the response variable
X = data[['student', 'balance', 'income']]
y = data['default']

#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size= 0.3 ,random_state= 0 ) 

#instantiate the model
log_regression = LogisticRegression()

#fit the model using the training data
log_regression. fit (X_train,y_train)

Шаг 3: Рассчитайте AUC

Мы можем использовать функцию metrics.roc_auc_score() для расчета AUC модели:

#use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]

#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)

#print AUC score
print(auc)

0.5602104030579559

AUC (площадь под кривой) для этой конкретной модели составляет 0,5602 .

Напомним, что модель с показателем AUC, равным 0,5 , ничем не лучше модели, выполняющей случайное угадывание.

Таким образом, в большинстве случаев модель с показателем AUC 0,5602 будет считаться плохой при классификации наблюдений по правильным классам.

Дополнительные ресурсы

Следующие руководства предлагают дополнительную информацию о кривых ROC и оценках AUC:

Как интерпретировать кривую ROC (с примерами)
Что считается хорошей оценкой AUC?

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.