[python] ROC 곡선(Receiver Operating Characteristic Curve)

ROC 곡선은 이진 분류 모델의 성능을 평가하는 데 사용되는 도구입니다. 이는 분류 임계값의 변화에 따른 모델의 민감도와 특이도를 시각화하는 방법입니다. ROC 곡선 아래의 면적을 AUC(Area Under the Curve)라고 하며, AUC의 값이 클수록 모델의 성능이 좋다고 판단할 수 있습니다.

ROC 곡선 그리기

다음은 Python에서 ROC 곡선을 그리는 방법입니다.

import matplotlib.pyplot as plt
from sklearn.metrics import plot_roc_curve

def plot_roc(y_true, y_score):
    # y_true: 실제 클래스 레이블
    # y_score: 모델의 확률 예측값
    
    # ROC 곡선 그리기
    plt.figure(figsize=(8, 6))
    ax = plt.gca()
    roc_auc = plot_roc_curve(model, X_test, y_test, ax=ax)
    
    # 그래프 꾸미기
    plt.plot([0, 1], [0, 1], color='navy', linestyle='--', lw=2)
    plt.title('Receiver Operating Characteristic Curve')
    plt.xlabel('False Positive Rate (1 - Specificity)')
    plt.ylabel('True Positive Rate (Sensitivity)')
    plt.legend(loc='lower right')
    
    plt.show()

위의 코드에서 y_true는 실제 클래스 레이블을, y_score는 모델의 확률 예측값을 가리킵니다. model, X_test, y_test는 각각 이미 학습된 분류 모델, 테스트 데이터의 특성 값, 테스트 데이터의 클래스 레이블을 나타냅니다.

plot_roc_curve 함수를 사용하여 ROC 곡선을 그릴 수 있으며, 이를 통해 모델의 성능을 시각화할 수 있습니다.

결론

ROC 곡선은 이진 분류 모델의 성능을 평가하고 시각화하는 방법 중 하나입니다. AUC 값은 모델의 성능을 나타내는 지표로 사용되며, 높을수록 모델의 성능이 우수하다는 것을 의미합니다. ROC 곡선을 활용하여 모델의 분류 성능을 평가하고 비교할 수 있습니다.