Python에서 auc(곡선 아래 영역)를 계산하는 방법
로지스틱 회귀는 응답 변수가 이진일 때 회귀 모델을 맞추는 데 사용하는 통계 방법입니다.
로지스틱 회귀 모델이 데이터 세트에 얼마나 잘 맞는지 평가하기 위해 다음 두 가지 측정항목을 살펴볼 수 있습니다.
- 민감도: 결과가 실제로 긍정적일 때 모델이 관찰에 대한 긍정적인 결과를 예측할 확률입니다. 이를 ‘진양성률’이라고도 합니다.
- 특이성: 결과가 실제로 부정적일 때 모델이 관찰에 대해 부정적인 결과를 예측할 확률입니다. 이를 ‘진음성률’이라고도 합니다.
이 두 가지 측정값을 시각화하는 한 가지 방법은 “수신기 작동 특성” 곡선을 나타내는 ROC 곡선을 만드는 것입니다.
y축을 따라 민감도를, x축을 따라 (1 – 특이도)를 표시하는 그래프입니다.
데이터 분류에서 로지스틱 회귀 모델의 효율성을 정량화하는 한 가지 방법은 “곡선 아래 영역”을 의미하는 AUC를 계산하는 것입니다.
AUC가 1에 가까울수록 모델이 더 좋습니다.
다음 단계별 예제에서는 Python에서 로지스틱 회귀 모델에 대한 AUC를 계산하는 방법을 보여줍니다.
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/Statorials/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 점수에 대한 추가 정보를 제공합니다.