Як розрахувати 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?