모델링을 하다보면 라벨 비율이 한쪽으로 치우친 불균형 데이터를 자주 마주하게 된다.
예를 들어 전체 데이터의 95%가 '0'이고 5%만 '1'이라면, 모델은 대부분의 경우 0이라고 예측해도 정확도가 높게 나올 것이다. 하지만 실제로 중요한 건 소수 클래스, 즉 1을 놓치지 않고 잘 맞추는 능력이다.
이럴 때 사용할 수 있는 대표적인 방법이 SMOTE, ADASYN, 그리고 Class Weight이다.
1. SMOTE
SMOTE는 Synthetic Minority Over-sampling Technique의 약자로, 소수 클래스 근처의 데이터를 보간해서 새로운 샘플을 만들어내는 방식이다. 즉, 단순히 데이터를 복제하는 것이 아니라 원본 데이터와 유사한 새로운 데이터를 생성해 클래스 비율을 맞춘다.
데이터가 적고 경계가 단순한 경우에 특히 유용하지만, 노이즈까지 함께 복제될 수 있어 과적합 위험이 있다는 점은 주의해야 한다.
2. ADASYN
ADASYN은 SMOTE보다 한 단계 발전된 기법이다.
데이터 분포를 살펴보면 어떤 영역은 분류가 쉽고, 어떤 영역은 경계가 복잡하다. ADASYN은 이런 복잡한 영역, 즉 분류가 어려운 부분에서 더 많은 샘플을 생성해 모델이 경계를 더 세밀하게 학습하도록 돕는다.
덕분에 복잡한 패턴을 다루는 데 강하지만, 이상치 근처에 잘못된 가짜 샘플이 만들어질 수 있다는 단점이 있다.
3. Class Weight
Class Weight은 데이터를 늘리지 않고 학습 과정에서 손실 함수에 가중치를 부여하는 방식이다. 소수 클래스의 오류에 더 큰 패널티를 주어 모델이 해당 클래스를 더 신중하게 예측하도록 유도한다.
이 방법은 데이터가 많고 오버샘플링을 하기 부담스러운 상황에서 특히 효과적이다. 다만 클래스 비율이 극단적으로 치우친 경우에는 효과가 제한적일 수 있다.
'ML' 카테고리의 다른 글
| 운영 환경에서 ML 모델 검증하기 (1) | 2025.09.07 |
|---|---|
| 코드 작성 시 주의 사항 (0) | 2025.07.31 |
| MySQL 함수 정리 (3) | 2025.07.30 |
| 파일 불러오기 (1) | 2025.07.29 |
| 파이썬 라이브러리 설치 여부 및 버전 확인 (0) | 2025.07.28 |