S29L03 – ROC, AUC – 최적 임계값 계산 (유든의 방법)

html

ROC 및 AUC 마스터하기: 향상된 머신러닝 성능을 위한 임계값 최적화

머신러닝, 특히 이진 분류 작업 영역에서 모델 성능을 효과적으로 평가하는 것은 매우 중요합니다. 이 평가 과정에서 중요한 두 가지 지표는 수신자 조작 특성(ROC) 곡선과 ROC 곡선 아래 면적(AUC)입니다. 이러한 지표를 사용하여 임계값을 최적화하는 방법을 이해하면 모델의 예측 능력을 크게 향상시킬 수 있습니다. 이 종합 가이드는 ROC와 AUC에 대해 자세히 설명하고, 최적의 임계값을 계산하는 방법을 탐구하며, Weather Australia 데이터셋을 사용한 실용적인 사례 연구를 통해 불균형 데이터셋에서의 적용 가능성을 검토합니다.

목차

  1. ROC 및 AUC 소개
  2. 임계값 선택의 중요성
  3. 최적 임계값을 위한 Youden 방법
  4. 불균형 데이터셋에서 ROC의 도전 과제
  5. 사례 연구: Weather Australia 데이터셋
  6. 데이터 전처리 단계
  7. 모델 구축 및 평가
    1. K-최근접 이웃(KNN)
    2. 로지스틱 회귀
    3. 가우시안 나이브 베이즈
    4. 서포트 벡터 머신(SVM)
    5. 의사 결정 나무
    6. 랜덤 포레스트
    7. AdaBoost
    8. XGBoost
  8. 모델의 비교 분석
  9. ROC의 한계 및 대체 방법
  10. 결론

ROC 및 AUC 소개

수신자 조작 특성(ROC) 곡선은 이진 분류기의 진단 능력을 시각적으로 나타낸 그래픽 표현으로, 차별 임계값이 변할 때의 성능을 보여줍니다. 이 곡선은 다양한 임계값 설정에서 진양성률(TPR)위양성률(FPR)을 플롯합니다. ROC 곡선 아래 면적(AUC)은 모델이 양성과 음성 클래스를 구분하는 전반적인 능력을 정량화합니다.

ROC 및 AUC가 중요한 이유

  • ROC 곡선: 다양한 임계값에서 분류 모델의 성능을 시각화하는 데 도움이 됩니다.
  • AUC: 임계값과 무관하게 클래스 간 구분 능력을 요약하는 단일 스칼라 값을 제공합니다.

임계값 선택의 중요성

이진 분류에서 임계값은 인스턴스를 양성 또는 음성 클래스로 분류하기 위한 기준점입니다. 최적의 임계값을 선택하는 것은 정밀도, 재현율 및 전반적인 정확도와 같은 지표에 직접적인 영향을 미치기 때문에 매우 중요합니다.

주요 고려 사항

  • 정밀도와 재현율 사이의 균형: 문제 도메인에 따라 위양성을 최소화하거나 위음성을 최소화하는 데 우선순위를 둘 수 있습니다.
  • 비즈니스 지표에 미치는 영향: 선택된 임계값은 예측 오류의 실제 의미와 일치해야 합니다.

최적 임계값을 위한 Youden 방법

Youden의 J 통계량은 진양성률과 위양성률의 차이를 극대화하여 최적의 임계값을 결정하는 데 일반적으로 사용되는 방법입니다. 수학적으로는 다음과 같이 표현됩니다:

\[ J = \text{Sensitivity} + \text{Specificity} - 1 \]

\( J \)를 최대화하는 임계값이 최적의 임계값으로 간주됩니다.

Python에서 Youden 방법 구현

불균형 데이터셋에서 ROC의 도전 과제

ROC 곡선은 때때로 불균형 데이터셋에서 모델 성능에 대해 지나치게 긍정적인 시각을 제공할 수 있습니다. 한 클래스가 다른 클래스보다 현저히 많은 경우, AUC는 모델이 주로 다수 클래스를 정확하게 예측함으로써 높은 AUC를 달성할 수 있기 때문에 오해의 소지가 있을 수 있습니다.

완화 전략

  • 정밀-재현(PR) 곡선 사용: PR 곡선은 클래스 불균형의 경우 더 유용한 정보를 제공할 수 있습니다.
  • 재샘플링 기법: 훈련 전에 오버샘플링 또는 언더샘플링을 적용하여 데이터셋의 균형을 맞춥니다.

사례 연구: Weather Australia 데이터셋

ROC, AUC 및 임계값 최적화 개념을 설명하기 위해 Weather Australia 데이터셋을 분석해 보겠습니다. 이 데이터셋은 내일 비가 올지 여부를 다양한 기상 매개변수를 기반으로 예측하는 이진 분류 문제입니다.

데이터셋 개요

  • 특징: 온도, 습도, 풍속 등 다양한 기상 관련 지표를 포함합니다.
  • 클래스: 내일 비가 오는 "Yes"와 비가 오지 않는 "No".
  • 불균형: 약 76% "No" 클래스와 22% "Yes" 클래스.

데이터 전처리 단계

모델 평가의 신뢰성을 보장하기 위해 적절한 데이터 전처리는 필수적입니다.

관련 단계

  1. 결측 데이터 처리:
    • 수치형 특징: 평균 전략을 사용하여 대체했습니다.
    • 범주형 특징: 가장 빈번한 전략을 사용하여 대체했습니다.
  2. 범주형 변수 인코딩:
    • 레이블 인코딩: 이진 또는 높은 기수의 범주형 변수에 사용됩니다.
    • 원-핫 인코딩: 낮은 기수의 범주형 변수에 사용됩니다.
  3. 특징 선택:
    • SelectKBest카이제곱(Chi-Squared) 테스트를 사용하여 상위 10개 특징을 선택했습니다.
  4. 특징 스케일링:
    • 특징 값을 정규화하기 위해 표준화를 적용했습니다.

Python 구현 스니펫

모델 구축 및 평가

다양한 머신러닝 알고리즘을 활용하면 다양한 시나리오에서 모델 성능에 대한 포괄적인 이해를 제공할 수 있습니다. 아래에서는 여러 모델, 구현 및 ROC와 AUC를 사용한 평가 지표를 살펴봅니다.

K-최근접 이웃(KNN)

개요: KNN은 새로운 인스턴스를 가장 가까운 이웃의 다수 라벨을 기반으로 분류하는 단순한 인스턴스 기반 학습 알고리즘입니다.

성능 지표:

  • 정확도: 85.9%
  • AUC: 79.9%
  • 최적 임계값: 0.333

관찰 사항:

  • 최적 임계값은 기본 0.5에 비해 정확도를 약간 감소시킵니다.
  • 최적 임계값을 사용할 때 두 클래스 모두의 정밀도가 향상됩니다.

로지스틱 회귀

개요: 로지스틱 회귀는 하나 이상의 예측 변수를 기반으로 이진 결과의 확률을 예측하는 통계 모델입니다.

성능 지표:

  • 정확도: 87.2%
  • AUC: 88.4%
  • 최적 임계값: 0.132

관찰 사항:

  • KNN에 비해 더 높은 AUC를 달성합니다.
  • 더 낮은 임계값으로 정밀도가 크게 향상되어 양성 클래스에 대한 민감도가 높아집니다.

가우시안 나이브 베이즈

개요: 가우시안 나이브 베이즈는 특징 간의 독립성을 가정하고 수치형 특징에 대해 가우시안 분포를 가정하여 베이즈 정리를 적용합니다.

성능 지표:

  • 정확도: 83.1%
  • AUC: 0.884
  • 최적 임계값: 0.132

관찰 사항:

  • 로지스틱 회귀와 비교할 만한 AUC를 가집니다.
  • 양성 클래스에 대해 더 나은 정밀도를 나타내지만 재현율은 낮습니다.

서포트 벡터 머신(SVM)

개요: SVM은 특성 공간에서 클래스를 분리하는 최적의 초평면을 찾는 감독 학습 모델입니다.

성능 지표:

  • 정확도: 87.65%
  • AUC: 85.4%
  • 최적 임계값: 0.144

관찰 사항:

  • 높은 정확도와 준수한 AUC를 보입니다.
  • 임계값 최적화 후 정밀도와 재현율의 균형이 맞춰집니다.

의사 결정 나무

개요: 의사 결정 나무는 특성 값을 기반으로 특성 공간을 영역으로 분할하여 각 노드에서 결정을 내려 예측을 수행합니다.

성능 지표:

  • 정확도: 82.35%
  • AUC: 0.716
  • 최적 임계값: 1.0

관찰 사항:

  • 낮은 AUC는 클래스 간 구분 능력이 떨어짐을 나타냅니다.
  • 최적 임계값이 1.0이라는 것은 모델이 다수 클래스를 예측하는 데 편향되어 있음을 시사합니다.

랜덤 포레스트

개요: 랜덤 포레스트는 여러 개의 의사 결정 나무를 구축하고 그 결과를 집계하여 정확도와 안정성을 향상시키는 앙상블 학습 방법입니다.

성능 지표:

  • 정확도: 87.25%
  • AUC: 0.876
  • 최적 임계값: 0.221

관찰 사항:

  • 높은 AUC와 정확도는 강력한 성능을 나타냅니다.
  • 임계값 최적화를 통해 양성 클래스에 대한 재현율이 향상됩니다.

AdaBoost

개요: AdaBoost는 여러 약한 학습기를 결합하여 이전에 잘못 분류된 인스턴스에 집중함으로써 강력한 분류기를 형성하는 앙상블 기법입니다.

성능 지표:

  • 정확도: 87.25%
  • AUC: 0.881
  • 최적 임계값: 0.491

관찰 사항:

  • 최적화 후 정밀도와 재현율의 균형이 맞춰집니다.
  • 양성 클래스의 정밀도가 약간 증가합니다.

XGBoost

개요: XGBoost는 구조화/표 형식 데이터에서 효율성과 성능으로 잘 알려진 강력한 그래디언트 부스팅 프레임워크입니다.

성능 지표:

  • 정확도: 87.15%
  • AUC: 0.879
  • 최적 임계값: 0.186

관찰 사항:

  • 높은 AUC와 정확도를 보입니다.
  • 임계값을 낮추어 양성 클래스의 정밀도가 향상됩니다.

모델의 비교 분석

다양한 지표를 통해 모델을 분석하면 각 모델의 강점과 개선이 필요한 영역에 대한 통찰을 얻을 수 있습니다:

모델 정확도 AUC 최적 임계값 정밀도 (양성) 재현율 (양성)
KNN 85.9% 0.799 0.333 0.76 0.41
로지스틱 회귀 87.2% 0.884 0.132 0.86 0.43
Gaussian NB 83.1% 0.884 0.132 0.86 0.43
SVM 87.65% 0.854 0.144 0.73 0.58
의사 결정 나무 82.35% 0.716 1.0 0.55 0.53
랜덤 포레스트 87.25% 0.876 0.221 0.73 0.53
AdaBoost 87.25% 0.881 0.491 0.84 0.46
XGBoost 87.15% 0.879 0.186 0.76 0.53

주요 시사점:

  • 로지스틱 회귀와 가우시안 나이브 베이즈는 가장 높은 AUC를 보여 강력한 구분 능력을 나타냅니다.
  • 의사 결정 나무는 낮은 AUC와 편향된 임계값으로 성능이 저조합니다.
  • 랜덤 포레스트, AdaBoost, XGBoost와 같은 앙상블 방법은 임계값 최적화 후 정밀도와 재현율의 균형이 맞춰져 강력한 성능을 입증합니다.
  • SVM는 높은 정확도와 준수한 AUC 사이의 균형을 유지합니다.

ROC의 한계 및 대체 방법

ROC와 AUC는 모델 평가를 위한 매우 유용한 도구이지만, 특히 불균형 데이터셋의 경우 한계가 있습니다.

한계

  • 오해의 소지가 있는 AUC 값: 불균형 데이터셋에서는 높은 AUC가 모델이 주로 다수 클래스를 예측함으로써 기만적일 수 있습니다.
  • 임계값에 대한 비민감성: ROC 곡선은 모든 가능한 임계값을 평가하므로 특정 임계값이 필요한 실제 응용에서는 실용적이지 않을 수 있습니다.

대안

  • 정밀-재현(PR) 곡선: 클래스 불균형 시나리오에서 더 유익하며 정밀도와 재현율 간의 상충 관계에 중점을 둡니다.
  • F1 점수: 정밀도와 재현율의 균형을 맞추어 둘 다를 고려한 단일 지표를 제공합니다.

결론

이진 분류 작업에서 모델 성능을 최적화하려면 ROC와 AUC와 같은 평가 지표에 대한 세밀한 이해가 필요합니다. Youden의 J와 같은 방법을 사용하여 임계값을 신중하게 선택하고 데이터셋의 불균형을 염두에 둠으로써 실무자는 모델의 예측 정확성과 신뢰성을 크게 향상시킬 수 있습니다. Weather Australia 데이터셋을 활용한 실용적인 사례 연구를 통해 이 가이드는 강력한 머신러닝 솔루션을 개발하는 데 있어 포괄적인 모델 평가와 임계값 최적화의 중요성을 강조합니다.


키워드: ROC 곡선, AUC, 임계값 최적화, 이진 분류, Youden 방법, 불균형 데이터셋, 머신러닝 모델 평가, 로지스틱 회귀, KNN, 랜덤 포레스트, AdaBoost, XGBoost, 정밀-재현 곡선.

Share your love