데이터 불균형 해결의 정석: SMOTE 오버샘플링 vs 언더샘플링 완벽 비교 및 실무 가이드

썸네일

데이터 분석의 보이지 않는 함정: 데이터 불균형(Data Imbalance)의 실체

머신러닝과 데이터 사이언스 프로젝트를 진행하다 보면, 모델의 학습 결과가 수치상으로는 완벽해 보이지만 실제 현장에서는 전혀 쓸모없는 모델이 되는 경우를 종종 마주하게 됩니다. 훈련 데이터셋에서의 정확도(Accuracy)가 99%를 상회하는데도 불구하고, 정작 중요한 이상 징후나 타겟 고객을 전혀 예측하지 못하는 상황입니다. 이는 바로 '데이터 불균형(Data Imbalance)' 문제입니다.

예를 들어, 신용카드 사기 탐지 시스템을 구축한다고 가정해 봅시다. 전체 수백만 건의 거래 내역 중 정상 거래가 99.9%를 차지하고, 실제 사기 거래(Fraud)는 단 0.1%에 불과할 수 있습니다. 이때 모델이 모든 거래를 무조건 '정상'이라고 예측하기만 해도, 이 모델의 정확도는 99.9%가 됩니다. 하지만 이 모델은 사기 거래를 단 하나도 잡아내지 못하므로 비즈니스적으로는 가치가 '0'에 수렴합니다. 이러한 현상을 우리는 '정확도의 역설(Accuracy Paradox)'이라고 부릅니다.

성공적인 머신러닝 모델 구축을 위해서는 이러한 클래스 간의 비율 차이를 극복하고, 소수 클래스(Minority Class)의 패턴을 모델이 명확히 학습할 수 있도록 돕는 데이터 불균형 해결 과정이 필수적입니다. 오늘은 이 문제를 해결하는 양대 산맥인 언더샘플링(Undersampling)오버샘플링(Oversampling), 그리고 그중에서도 가장 강력한 성능을 자랑하는 SMOTE 기법에 대해 심층적으로 분석해 보겠습니다.


1. 다이어트로 몸을 가볍게: 언더샘플링(Undersampling)의 전략

언더샘플링의 개념과 핵심 원리

언더샘플링은 압도적으로 많은 다수 클래스(Majority Class)의 데이터를 소수 클래스의 수에 맞춰 무작위로 삭제하거나 특정 기준에 따라 제거하여 비율을 맞추는 기법입니다. 마치 다이어트를 통해 몸을 가볍게 만드는 것과 유사합니다. 데이터의 총량이 줄어들기 때문에, 수집된 데이터가 수백만 건 이상으로 방대하여 학습 시간이 너무 오래 걸릴 때 매우 효율적인 대안이 될 수 있습니다.

언더샘플링의 명과 암

  • 장점: 데이터셋의 크기가 획기적으로 줄어들어 학습 속도가 매우 빨라집니다. 또한, 모델이 다수 클래스에 과도하게 편향되는 것을 막고, 계산 비용을 절감할 수 있어 하드웨어 리소스가 제한적인 환경에서 유리합니다.
  • 단점: 가장 치명적인 단점은 '정보의 손실(Information Loss)'입니다. 다수 클래스의 데이터를 제거하는 과정에서, 모델이 데이터를 분류하는 데 필수적인 중요 패턴이나 결정 경계(Decision Boundary)를 형성하는 정보까지 삭제될 위험이 있습니다. 이는 모델이 전체적인 데이터 분포를 이해하지 못하게 하여 일반화 성능을 떨어뜨리는 원인이 됩니다.

단순함을 넘어선 기법: Tomek Links와 ENN

단순 무작위 제거(Random Undersampling)가 가진 정보 손실의 위험을 최소화하고 데이터의 품질을 높이기 위해 다음과 같은 정교한 기법들이 사용됩니다. * Tomek Links: 서로 다른 클래스인 두 데이터가 아주 가까이 붙어 있을 때, 다수 클래스의 데이터를 제거하여 클래스 간의 경계를 명확하게 만듭니다. 이는 결정 경계를 뚜렷하게 하여 분류 성능을 높이는 데 기여합니다. * ENN (Edited Nearest Neighbors): 다수 클래스 데이터 중, 주변 이웃들과 클래스가 다른(즉, 소수 클래스 영역에 침범해 있거나 노이즈로 의심되는) 데이터를 제거하여 데이터셋의 순도를 높입니다.


2. 데이터를 증식하여 학습 효과 극대화: 오버샘플링(Oversampling)

오버샘플링이 필요한 순간

오버샘플링은 소수 클래스의 데이터를 복제하거나 생성하여 다수 클래스의 수만큼 늘리는 방식입니다. 언더샘플링과 달리 정보의 손실이 없다는 것이 가장 큰 장점이며, 데이터의 절대적인 양이 부족한 대부분의 머신러닝 문제에서 언더샘플링보다 더 나은 성능을 보여주는 경우가 많습니다.

단순 무작위 오버샘플링(Random Oversampling)의 한계

가장 직관적인 방법은 소수 클래스의 데이터를 있는 그대로 복사해서 붙여넣는 것입니다. 하지만 이 방법은 '과적합(Overfitting)'이라는 심각한 부작용을 초래합니다. 모델이 똑같은 데이터를 반복해서 학습하게 되면서, 소수 클래스의 특정 데이터 포인트에만 지나치게 적응하게 됩니다. 결과적으로 훈련 데이터에 대해서는 완벽하게 동작하지만, 새로운 실전 데이터에 대해서는 예측력이 현저히 떨어지는 모델이 만들어집니다.


3. 오버샘플링의 혁명: SMOTE (Synthetic Minority Over-sampling Technique)

단순 복제가 가져오는 과적합의 한계를 극복하기 위해 등장한 것이 바로 SMOTE입니다. SMOTE는 데이터를 단순히 복사하는 것이 아니라, 기존 데이터들 사이의 규칙성을 찾아 새로운 '가짜(Synthetic)' 데이터를 생성하는 알고리즘입니다. 이는 데이터 공간을 수학적으로 채워나가는 방식입니다.

SMOTE의 작동 원리 (Step-by-Step)

SMOTE는 다음과 같은 정교한 기하학적 과정을 통해 데이터를 생성합니다. 1. 기준점 선정: 소수 클래스 데이터 중 하나를 임의로 선택합니다(기준 벡터 $X$). 2. 이웃 탐색: 선택된 데이터와 가장 가까운 이웃(K-Nearest Neighbors, 보통 K=5)들을 찾습니다. 3. 벡터 계산: 선택된 데이터와 이웃 데이터 사이의 차이(벡터)를 계산하여 연결선을 그립니다. 4. 데이터 생성: 0과 1 사이의 무작위 값($\lambda$)을 곱해 두 데이터 사이의 선분 위에 새로운 데이터를 생성합니다. * 수식: New Sample = $X$ + $\lambda$ $ imes$ ($X_{neighbor}$ - $X$)

SMOTE의 강력한 장점

SMOTE의 가장 큰 강점은 과적합을 방지하면서 데이터의 분포를 효과적으로 확장한다는 점입니다. 단순히 점을 겹치게 찍는 것이 아니라, 데이터의 분포 공간을 채워주는 방식이므로 모델이 소수 클래스의 특징을 더 일반화(Generalization)하여 학습할 수 있게 돕습니다. 이는 결정 경계를 더 부드럽고 넓게 확장하는 효과를 가져옵니다.

SMOTE 사용 시 주의사항: 노이즈의 증폭

하지만 SMOTE가 만능 해결사는 아닙니다. 노이즈 데이터(이상치)까지 증식시킬 위험이 존재합니다. 만약 소수 클래스 데이터 중 일부가 다수 클래스 영역에 잘못 위치해 있다면(노이즈), SMOTE는 그 주변에 더 많은 잘못된 데이터를 생성하여 모델을 혼란스럽게 할 수 있습니다. 이를 보완하기 위해 경계선 근처의 데이터만 샘플링하는 Borderline-SMOTE나, 학습이 어려운 데이터에 가중치를 두는 ADASYN 같은 변형 알고리즘이 실무에서 자주 사용됩니다.


4. 실전 가이드: 언더샘플링 vs SMOTE, 무엇을 선택해야 할까?

데이터 불균형 해결을 위한 기법 선택은 데이터의 특성, 양, 그리고 비즈니스 목적에 따라 유연하게 달라져야 합니다. 다음은 실무적인 선택 가이드입니다.

  • 데이터의 양이 100만 건 이상으로 매우 방대할 때: 언더샘플링을 우선 고려하세요. 학습 시간을 획기적으로 줄일 수 있으며, 충분한 데이터가 있다면 정보 손실의 위험이 상대적으로 적습니다. 다수 클래스의 중복된 정보를 제거하는 효과도 있습니다.
  • 데이터의 양이 적고(수천~수만 건), 정보 손실이 우려될 때: SMOTE 오버샘플링이 정답입니다. 적은 데이터를 최대한 활용하여 모델의 학습 기회를 늘려야 합니다. 특히 의료 데이터나 제조 공정 데이터처럼 데이터 수집 비용이 높은 경우 필수적입니다.
  • 데이터의 분포가 복잡하고 노이즈가 많을 때: 하이브리드 샘플링(Hybrid Sampling)을 강력 추천합니다. SMOTE로 데이터를 늘려 소수 클래스의 영역을 확보한 후, Tomek Links나 ENN으로 경계면의 노이즈를 정리하는 방식(예: SMOTE + ENN)이 단일 기법보다 훨씬 높은 성능을 보이는 경우가 많습니다.

5. 성능 평가의 기준을 바꿔라: 정확도(Accuracy)를 버려라

어떤 샘플링 기법을 적용하더라도, 성능 평가 지표를 잘못 선택하면 모든 노력이 수포로 돌아갑니다. 불균형 데이터를 다룰 때는 절대 정확도(Accuracy)만 보고 판단해서는 안 됩니다.

반드시 다음 지표들을 종합적으로 확인하여 모델의 실질적인 가치를 증명해야 합니다. * 정밀도(Precision): 모델이 True(사기/불량)라고 예측한 것 중 실제 True의 비율입니다. 오탐(False Positive)을 줄이는 것이 중요할 때 봅니다. * 재현율(Recall/Sensitivity): 실제 True인 것 중 모델이 True라고 예측한 비율입니다. 암 진단이나 사기 탐지처럼 실제 타겟을 놓치지 않는 것이 치명적으로 중요할 때 가장 핵심적인 지표입니다. * F1-Score: 정밀도와 재현율의 조화 평균으로, 두 지표가 균형을 이룰 때 높은 값을 가집니다. 불균형 데이터셋 평가의 표준 지표로 쓰입니다. * ROC-AUC: 임계값(Threshold) 변화에 따른 모델의 성능 안정성을 나타내며, 클래스 분포에 상관없이 모델의 우수성을 평가하기 좋습니다.


결론: 데이터의 특성에 맞는 전략적 접근이 필요

데이터 불균형 해결은 머신러닝 모델의 성능을 결정짓는 핵심 전처리 과정입니다. 단순히 라이브러리를 가져다 쓰는 것에 그치지 않고, 언더샘플링의 정보 손실 위험과 SMOTE의 과적합 및 노이즈 증폭 가능성을 명확히 이해하고 적용해야 합니다.

현업에서는 SMOTE와 언더샘플링을 결합한 복합적인 방법을 시도하거나, 데이터 자체를 늘리기 위한 추가 수집을 병행하는 등 유연한 사고가 필요합니다. 여러분의 데이터가 가진 불균형의 원인을 파악하고, 최적의 기법을 적용하여 데이터 속에 숨겨진 '소수'의 목소리까지 놓치지 않는 정교한 모델을 구축하시기 바랍니다.

신고하기

쿠팡 다이나믹 배너

×

※ 본 페이지는 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정 수수료를 제공받을 수 있습니다.

이미지alt태그 입력