Як розрахувати auc (площу під кривою) у python


Логістична регресія – це статистичний метод, який ми використовуємо для підгонки регресійної моделі, коли змінна відповіді є двійковою.

Щоб оцінити, наскільки модель логістичної регресії відповідає набору даних, ми можемо розглянути такі два показники:

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

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

Це графік, який відображає чутливість по осі y та (1 – специфічність) по осі x.

Одним із способів кількісної оцінки ефективності моделі логістичної регресії для класифікації даних є обчислення 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?

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *