앞선 글에서 우리는 불균형 데이터를 다루는 세 가지 방법을 살펴보았다.
- SMOTE: 소수 클래스 데이터를 합성하여 분포를 균형 있게 맞추는 방법
- SMOTENC: 범주형 변수까지 고려할 수 있는 확장 기법
- Class Weight: 데이터는 그대로 두고 모델의 손실 함수에 가중치를 주는 방법
이번 글에서는 이 세 가지 기법을 실험 결과와 함께 종합적으로 비교하고,
실무에서 어떤 기준으로 선택하면 좋을지 가이드를 정리하고자 한다.
📊 실험 결과 종합 비교
| 모델 | 기법 | F1-macro | PR-AUC | 해석 |
|---|---|---|---|---|
| XGBoost | baseline | 0.46 | 0.4616 | 기준 성능 |
| XGBoost | + SMOTE | 0.39 | 0.4050 | 합성 데이터 효과 미미, 성능 하락 발생 |
| XGBoost | + SMOTENC | 0.33 | 0.3998 | 범주형 변수 고려했으나 성능 크게 하락 |
| XGBoost | + class_weight | 0.42 | 0.4567 | baseline 대비 근소한 하락, 성능 개선 효과 제한적 |

위 그래프는 XGBoost 모델을 기준으로 각 기법 적용 전후의 성능을 비교한 결과이다.
왼쪽은 F1-macro, 오른쪽은 PR-AUC 지표를 나타낸다.
- baseline이 가장 안정적인 성능을 보였다.
- SMOTE와 SMOTENC는 두 지표 모두에서 성능이 하락하였다.
- class_weight는 baseline보다는 낮았지만, SMOTE/SMOTENC보다는 상대적으로 나은 결과를 보였다.
🔍 기법별 특징 정리
| 기법 | 장점 | 단점 | 적합한 상황 |
|---|---|---|---|
| SMOTE | 소수 클래스 데이터 확장, 단순/직관 | 합성 데이터 과적합 위험, 계산량 증가 | 수치형 데이터에서 시도해볼 만하다 |
| SMOTENC | 범주형 변수까지 고려 가능 | 성능 보장 어려움, 데이터 특성 민감 | 범주형+수치형 혼합 데이터 |
| Class Weight | 적용이 간단, 데이터 손실 없음 | 성능 개선 제한적, 극단적 불균형에 취약 | baseline 비교용, 빠른 실험 |
🚀 실무에서의 가이드
- 범주형 변수가 중요할 때 → SMOTENC 고려 (단, 성능 변화는 주의)
- 빠르게 baseline을 확인하고 싶을 때 → Class Weight 활용
- 중요 사건을 놓치면 안 되는 문제(예: 보안, 의료) → 샘플링 + 모델 가중치 조합, Ensemble 기법 추가 검토
✅ 마무리
이번 시리즈에서는 불균형 데이터 문제를 다루는 여러 기법을 실험하고 정리하였다.
실험 결과, 어떤 기법도 무조건적인 성능 향상을 보장하지 않는다는 점을 확인하였다.
불균형 데이터는 데이터 특성, 모델 특성, 문제의 맥락에 따라 접근법을 달리해야 한다.
👉 결국 중요한 것은, 여러 기법을 실험하고 상황에 맞는 최적의 전략을 선택하는 것이다.
'데이터 사이언스 > 프로젝트' 카테고리의 다른 글
| [아이펠톤 프로젝트 회고] 누설자속 데이터 기반 교정 시점 예측 (0) | 2025.09.19 |
|---|---|
| [데이터 불균형 실험노트] Class Weight: 가볍게 적용해 본 균형 잡기 승부 (1) | 2025.09.03 |
| [데이터 불균형 실험노트] SMOTENC: 범주형 변수까지 공략하기 (0) | 2025.09.03 |
| [데이터 불균형 실험노트] SMOTE: 합성 데이터로 불균형을 돌파하다 (0) | 2025.09.03 |
| [데이터 불균형 실험노트] 불균형 데이터란? Accuracy의 함정을 격파하기 (0) | 2025.09.03 |