[python] AUC(Area Under the Curve)

AUC는 Receiver Operating Characteristic(ROC) 곡선 아래 면적을 의미합니다. ROC 곡선은 이진 분류 모델의 성능을 평가하기 위해 사용되는 그래프로서, 이 모델의 예측 성능을 나타내는 지표입니다. AUC 값이 클수록 모델의 예측 능력이 높다고 판단할 수 있습니다.

이번 예시에서는 Python의 scikit-learn 라이브러리를 사용하여 AUC를 계산하는 방법을 알아보겠습니다.

필요한 라이브러리 설치

먼저, AUC를 계산하기 위해 필요한 scikit-learn 라이브러리를 설치해야 합니다. 다음 명령을 사용하여 설치할 수 있습니다.

pip install -U scikit-learn

데이터 준비

AUC를 계산하기 위해서는 이진 분류 모델의 예측값과 실제값을 가진 데이터가 필요합니다. 아래와 같이 예시 데이터를 만들어 보겠습니다.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# 예시 데이터 생성
X, y = make_classification(n_samples=1000, n_features=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

위 코드는 scikit-learn의 make_classification 함수를 사용하여 가상의 이진 분류 데이터를 생성한 후, 훈련용과 테스트용으로 데이터를 분할하는 과정입니다.

AUC 계산

이제 AUC를 계산해보겠습니다. scikit-learn에서는 roc_auc_score 함수를 통해 AUC를 쉽게 계산할 수 있습니다.

from sklearn.metrics import roc_auc_score

# 이진 분류 모델의 예측값 출력
y_pred = model.predict_proba(X_test)[:, 1]

# AUC 계산
auc = roc_auc_score(y_test, y_pred)
print("AUC: %.3f" % auc)

위 코드에서 model은 이진 분류 모델을 의미하며, predict_proba 함수를 통해 테스트 데이터의 예측값을 얻어옵니다. 그리고 roc_auc_score 함수를 통해 실제값 y_test와 예측값 y_pred를 비교하여 AUC 값을 계산합니다.

결과 확인

AUC 값을 확인하기 위해 위 코드를 실행하면 아래와 같은 결과가 출력됩니다.

AUC: 0.927

이렇게 계산된 AUC 값은 이진 분류 모델의 예측 능력을 평가하는 중요한 지표입니다. AUC 값이 1에 가까울수록 모델의 분류 능력이 우수하다는 의미입니다.

참고 자료

이상으로 Python을 사용하여 AUC(ROC 곡선 아래 면적)을 계산하는 방법에 대해 알아보았습니다. 다양한 분야에서 이진 분류 모델의 성능 평가에 활용되는 AUC는 유용한 지표이므로 잘 활용해보시기 바랍니다.