데이터 사이언스/프로젝트

[데이터 불균형 실험노트] SMOTENC: 범주형 변수까지 공략하기

GwiYeonKim 2025. 9. 3. 15:54

SMOTE는 수치형 데이터에서 불균형 문제를 완화하는 데 효과적이다.
그러나 실제 데이터에는 범주형 변수가 함께 존재하는 경우가 많다.
이때 단순히 수치형 변수처럼 보간하면 존재하지 않는 범주 값이 생겨버리는 문제가 발생한다.

이런 한계를 보완한 기법이 바로 SMOTENC (SMOTE for Nominal and Continuous data) 이다.


🧩 SMOTENC의 기본 아이디어

  • 수치형 변수 → 기존 SMOTE와 동일하게 보간을 통해 합성한다.
  • 범주형 변수 → 가장 가까운 이웃(KNN) 중 다수결로 새로운 샘플 값을 정한다.

👉 즉, 연속형과 범주형 변수를 동시에 다룰 수 있도록 확장된 버전이라고 할 수 있다.


📊 SMOTE vs SMOTENC

기법 대상 변수 합성 방식 특징
SMOTE 수치형만 KNN 기반 선형 보간 범주형 포함 데이터에는 부적합
SMOTENC 수치형+범주형 수치형은 보간, 범주형은 다수결 처리 실제 데이터 특성 반영 가능

🧪 우리의 실험 결과

제조 기업 데이터를 대상으로 SMOTENC를 적용해보았다.
실험에 사용된 데이터는 수치형 변수와 범주형 변수가 혼합되어 있었다.

모델 기법 F1-macro PR-AUC 해석
XGBoost baseline 0.46 0.4616 기준 성능
XGBoost + SMOTENC 0.33 0.3998 성능이 개선되지 않음

👉 결과적으로 baseline 대비 성능이 하락하였다.
이는 합성된 데이터가 원본 데이터의 특성을 잘 반영하지 못했거나,
모델이 합성된 샘플에 과적합되었을 가능성을 보여준다.


🚀 다음 단계

SMOTENC는 범주형 변수를 포함한 데이터에서도 사용할 수 있다는 점에서 의미가 크다.
그러나 실제 적용에서는 성능 향상이 보장되지 않는다.
다음 글에서는 샘플링 기법 대신, 모델 내부 가중치를 조정하는 Class Weight 방법을 살펴보고자 한다.


✅ 마무리

SMOTENC는 SMOTE를 한 단계 확장한 기법으로, 범주형 변수가 포함된 현실 데이터를 다룰 때 고려할 수 있다.
그러나 우리의 실험에서는 baseline보다 성능이 낮게 나왔으며, 합성 데이터가 원본 특성을 충분히 반영하지 못했을 가능성이 있었다.

앞서 다룬 SMOTE와 달리, SMOTENC는 범주형 변수를 고려한다는 장점이 있지만 성능 향상은 보장되지 않는다.
👉 SMOTE, SMOTENC, 그리고 Class Weight 기법의 종합 비교는 5편에서 정리하고자 한다.