[python] scikit-learn을 활용한 AUC-ROC 평가

이 포스트에서는 scikit-learn 라이브러리를 사용하여 AUC-ROC(Area Under the Receiver Operating Characteristic Curve)를 계산하는 방법에 대해 살펴보겠습니다. AUC-ROC는 분류 모델의 성능을 평가하는 지표 중 하나로, 이진 분류 모델의 예측 성능을 평가하는 데 자주 사용됩니다.

AUC-ROC란?

AUC-ROC는 분류 모델의 예측 성능을 평가하기 위한 그래프인 ROC 곡선의 아래 면적을 나타냅니다. ROC 곡선은 이진 분류 모델에서 임계값을 변화시키면서 진짜 양성 비율(TPR, True Positive Rate)과 거짓 양성 비율(FPR, False Positive Rate) 사이의 관계를 시각적으로 표현한 곡선입니다. AUC-ROC가 1에 가까울수록 분류 모델의 예측 성능이 우수하다고 할 수 있습니다.

예제 코드

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score

# 예제 데이터 생성
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 훈련 데이터와 테스트 데이터로 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 로지스틱 회귀 모델 학습
model = LogisticRegression()
model.fit(X_train, y_train)

# 예측 확률 계산
y_pred_proba = model.predict_proba(X_test)[:, 1]

# AUC-ROC 계산
auc_roc = roc_auc_score(y_test, y_pred_proba)

print(f"AUC-ROC: {auc_roc}")

위의 예제 코드에서는 make_classification 함수를 사용하여 가상의 데이터를 생성하고, train_test_split 함수를 사용하여 데이터를 훈련 데이터와 테스트 데이터로 분리합니다. 그 후, LogisticRegression 클래스를 사용하여 로지스틱 회귀 모델을 학습시키고, predict_proba 메서드를 사용하여 예측 확률을 계산합니다. 마지막으로, roc_auc_score 함수를 사용하여 AUC-ROC를 계산하고 출력합니다.

참고 자료