Booil Jung

SMOTE(Synthetic Minority Over-sampling Technique)

기초 원리부터 최신 대안까지

현실 세계의 데이터는 이상적인 형태로 존재하는 경우가 드물며, 그중에서도 클래스 불균형(Class Imbalance)은 머신러닝 모델 구축 시 마주하는 가장 보편적이면서도 근본적인 도전 과제 중 하나이다.1 클래스 불균형이란 데이터셋 내의 클래스 분포가 한쪽으로 크게 치우쳐, 하나의 클래스(다수 클래스, Majority Class)가 다른 클래스(소수 클래스, Minority Class)를 수적으로 압도하는 상태를 의미한다.2 이는 특정 분야의 예외적인 현상이 아니라, 다양한 산업 분야에서 일상적으로 발생하는 문제이다.

이러한 불균형은 여러 현실 세계의 시나리오에서 명확하게 나타난다.

이러한 데이터로 모델을 학습시킬 때 발생하는 핵심적인 문제는 모델의 편향(bias)이다. 대부분의 머신러닝 알고리즘은 전체적인 오류율(error rate)을 최소화하는 방향으로 학습을 진행한다. 따라서 데이터의 양이 압도적으로 많은 다수 클래스의 패턴에 과도하게 집중하게 되며, 이는 결과적으로 우리가 실제로 더 중요하게 탐지하고자 하는 소수 클래스에 대한 예측 성능을 현저히 저하시키는 결과를 낳는다.1

클래스 불균형 문제의 심각성은 ‘정확도의 역설(Accuracy Paradox)’이라는 개념을 통해 더욱 명확하게 이해할 수 있다.7 예를 들어, 99%가 정상(클래스 A)이고 1%가 사기(클래스 B)인 금융 거래 데이터셋이 있다고 가정해보자. 만약 어떤 모델이 모든 거래를 무조건 ‘정상’이라고만 예측한다면, 이 모델의 정확도(Accuracy)는 99%에 달하게 된다. 수치상으로는 매우 뛰어난 모델처럼 보이지만, 실제로는 단 한 건의 사기 거래도 탐지하지 못하는, 실용적으로는 아무 가치가 없는 모델이다.2 이처럼 정확도는 불균형 데이터셋에서 모델의 실제 성능을 심각하게 왜곡할 수 있으므로, 신뢰할 수 없는 평가 지표가 된다.2

이러한 평가의 함정을 피하기 위해서는 소수 클래스에 대한 모델의 성능을 정밀하게 측정할 수 있는 대안적인 지표를 도입하는 것이 필수적이다. 단순히 모델을 개선하는 것뿐만 아니라, 모델을 올바르게 평가하는 패러다임의 전환이 선행되어야 한다.

클래스 불균형 문제를 해결하기 위한 접근법은 크게 세 가지 범주로 나눌 수 있으며, SMOTE는 이 중 데이터 레벨 접근법에 속하는 대표적인 기법이다.

이러한 분류 속에서 SMOTE의 독자적인 가치는 ‘정보 생성’에 있다. 단순 오버샘플링이 정보의 중복을, 언더샘플링이 정보의 손실을 야기하는 반면, SMOTE는 기존 소수 클래스 데이터의 특성 공간 내에서 새로운 가상의 정보를 만들어냄으로써 소수 클래스의 결정 영역을 보다 풍부하고 강건하게 확장하려는 시도라는 점에서 다른 기초적인 데이터 레벨 기법들과 근본적인 차이를 보인다.


표 1: 기초적인 리샘플링 기법 비교

기법 (Technique) 메커니즘 (Mechanism) 주요 장점 (Primary Advantage) 주요 단점 (Primary Disadvantage)
단순 무작위 언더샘플링 다수 클래스에서 무작위로 샘플을 제거하여 데이터 균형을 맞춤 데이터셋 크기 감소로 인한 학습 시간 단축 및 계산 효율성 증대 다수 클래스에 포함된 잠재적으로 유용한 정보의 손실 가능성 11
단순 무작위 오버샘플링 소수 클래스에서 무작위로 샘플을 선택하여 복제함 정보 손실이 없으며, 소수 클래스의 대표성을 강화함 새로운 정보를 추가하지 않고 동일한 샘플을 반복하여 과적합(overfitting) 위험이 매우 높음 11
SMOTE 소수 클래스 샘플과 그 이웃을 기반으로 새로운 합성(synthetic) 샘플을 생성함 과적합 위험을 완화하면서 소수 클래스의 데이터 다양성을 증가시킴 14 노이즈 증폭, 클래스 경계 모호화, 원본 데이터 분포 왜곡 등의 잠재적 위험 존재 14

SMOTE(Synthetic Minority Over-sampling Technique)의 핵심 원리는 기존의 소수 클래스 데이터를 단순히 복제하는 것이 아니라, 이들 사이를 보간(interpolate)하여 새로운 합성 데이터를 생성하는 것이다.1 이 과정을 통해 소수 클래스의 특징 공간(feature space)을 더 넓고 조밀하게 채워, 분류 모델이 소수 클래스를 인식할 수 있는 더 명확한 결정 경계(decision boundary)를 학습하도록 돕는 것을 목표로 한다.18

SMOTE 알고리즘의 작동 방식은 다음과 같은 단계별 절차로 분해할 수 있다.8

  1. 오버샘플링 양($N$) 설정: 먼저, 얼마나 많은 수의 합성 샘플을 생성할지 결정한다. 일반적으로 소수 클래스의 데이터 수가 다수 클래스와 동일해지는 1:1 비율을 목표로 설정하지만, 이는 문제의 특성에 따라 조정될 수 있는 하이퍼파라미터이다.16

  2. 소수 클래스 샘플 선택: 생성하고자 하는 합성 샘플의 수만큼 다음 과정을 반복한다. 먼저, 전체 소수 클래스 데이터 집합에서 하나의 데이터 포인트 $x_i$를 무작위로 선택한다. 이 데이터 포인트는 새로운 합성 샘플을 생성하기 위한 ‘기준점’이 된다.

  3. K-최근접 이웃(K-Nearest Neighbors) 탐색: 기준점 $x_i$에 대해, 특징 공간상에서 가장 가까운 $k$개의 이웃 데이터 포인트를 찾는다. 이때 거리는 일반적으로 유클리드 거리(Euclidean distance)를 사용하며, 중요한 점은 이웃을 찾을 때 오직 소수 클래스에 속한 데이터 포인트들 중에서만 탐색한다는 것이다.19

  4. 이웃 선택: 3단계에서 찾은 $k$개의 이웃 중에서 하나를 무작위로 선택한다. 이 이웃을 $x_{nn}$이라고 지칭한다.

  5. 선형 보간을 통한 합성: 기준점 $x_i$와 선택된 이웃 $x_{nn}$을 잇는 가상의 선분을 생성하고, 이 선분 위의 임의의 한 점을 새로운 합성 샘플 $x_{new}$로 생성한다. 이 과정은 다음의 수식으로 표현된다. \(x_\text{new}=x_i+λ \times (x_{nn}−x_i)\) 여기서 λ는 0과 1 사이의 균등 분포에서 추출된 임의의 난수이다. 만약 $λ=0$이면 새로운 샘플은 기준점 $x_i$와 동일하고, $λ=1$이면 이웃 $x_{nn}$과 동일해진다. $0<λ<1$의 값은 두 점을 잇는 벡터 위의 한 점을 의미하게 되어, 두 원본 데이터의 특성을 혼합한 새로운 샘플이 만들어진다.19

  6. 반복: 위 2~5단계를 목표한 오버샘플링 양 $N$에 도달할 때까지 반복하여, 생성된 합성 샘플들을 기존 데이터셋에 추가한다.

SMOTE 알고리즘의 성능과 생성되는 데이터의 특성은 하이퍼파라미터인 이웃의 수, 즉 $k$값에 크게 의존한다.21

$k$값은 사용자가 직접 설정해야 하며, 일반적으로 5가 기본값으로 사용된다.8

$k$값의 선택은 생성되는 합성 샘플의 국소성(locality)과 일반성(generality) 사이의 균형을 조절하는 중요한 역할을 한다.

이러한 $k$의 역할은 KNN 분류 알고리즘에서 $k$가 결정 경계의 복잡도를 조절하는 원리와 직접적으로 연결된다. KNN에서 작은 $k$는 복잡하고 구불구불한 결정 경계를, 큰 $k$는 부드럽고 단순한 결정 경계를 만드는 것처럼, SMOTE에서도 $k$는 생성되는 합성 데이터 분포의 ‘복잡도’를 조절하는 레버 역할을 한다. 따라서 $k$값의 설정은 단순히 파라미터를 튜닝하는 것을 넘어, 생성될 데이터의 편향-분산 트레이드오프(bias-variance tradeoff)를 근본적으로 결정하는 행위로 이해해야 한다.

SMOTE의 작동 원리는 확률적 분포를 학습하는 통계적 모델링이 아니라, “특징 공간상에서 가까운 것들은 서로 관련이 있다”는 단순한 기하학적 휴리스틱(geometric heuristic)에 기반한다. 이는 SMOTE의 모든 장단점을 이해하는 핵심적인 열쇠이다. 선형 보간이라는 기하학적 가정은 SMOTE가 범주형 데이터에 직접 적용되기 어렵고, 클래스 경계가 복잡할 때 왜 문제를 일으키는지를 설명해준다.

파이썬 환경에서 SMOTE를 적용할 때 가장 표준적으로 사용되는 도구는 imbalanced-learn (또는 imblearn) 라이브러리이다.8

SMOTE를 적용할 때 가장 중요한 실용적 지침은 데이터 유출(data leakage)을 방지하는 것이다. SMOTE는 반드시 훈련 데이터(training data)에만 적용하고 학습(fit)되어야 한다. 만약 전체 데이터셋에 SMOTE를 적용한 후 훈련/테스트 데이터로 분리하면, 테스트 데이터에 훈련 데이터의 정보가 합성 샘플을 통해 누출된 상태가 된다. 이는 모델의 성능을 비현실적으로 과대평가하게 만드는 심각한 오류이므로, 반드시 교차 검증(cross-validation) 파이프라인 내에서 또는 훈련-테스트 분리 후에 훈련 데이터에만 fit_resample 메소드를 적용해야 한다.20

# imbalanced-learn을 사용한 SMOTE 적용 예시
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import classification_report
from imblearn.over_sampling import SMOTE

# 1. 불균형 데이터셋 생성
X, y = make_classification(n_classes=2, class_sep=2,
                           weights=[0.95, 0.05], n_informative=3,
                           n_redundant=1, flip_y=0,
                           n_features=20, n_clusters_per_class=1,
                           n_samples=1000, random_state=10)

# 2. 훈련/테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. SMOTE 적용 (훈련 데이터에만!)
smote = SMOTE(random_state=42)
X_train_resampled, y_train_resampled = smote.fit_resample(X_train, y_train)

# 4. 리샘플링된 데이터로 모델 학습
model = LogisticRegression(solver='liblinear')
model.fit(X_train_resampled, y_train_resampled)

# 5. 원본 테스트 데이터로 성능 평가
y_pred = model.predict(X_test)
print(classification_report(y_test, y_pred))

SMOTE가 어떻게 작동하는지에 대한 이해를 바탕으로, 이제는 SMOTE가 ‘얼마나 잘’ 작동하는지를 비판적으로 평가할 차례이다. 이 섹션에서는 SMOTE의 명확한 장점과 함께, 그 이면에 존재하는 심각한 단점과 사용을 둘러싼 논쟁들을 심도 있게 다룬다.

SMOTE가 데이터 불균형 문제 해결을 위한 표준적인 도구 중 하나로 널리 채택된 데에는 몇 가지 명확한 이유가 있다.

SMOTE는 강력한 도구이지만, 그 메커니즘의 단순성에서 비롯되는 여러 가지 내재적 한계와 위험을 안고 있다. 이러한 단점들을 이해하지 못하고 맹목적으로 사용할 경우, 오히려 모델 성능을 저하시키는 결과를 초래할 수 있다.

SMOTE의 한계는 특히 의료와 같이 예측의 결과가 매우 중요한 고위험(high-stakes) 분야에서 더욱 심각한 논쟁을 불러일으킨다. 이 분야에서는 모델의 예측 정확도뿐만 아니라, 예측의 근거가 되는 ‘해석 가능성’과 ‘신뢰성’이 절대적으로 중요하기 때문이다. 의료 분야의 비판은 SMOTE가 생성한 데이터의 임상적 타당성(clinical validity)에 대한 근본적인 의문을 제기한다.28

이러한 비판은 데이터 과학자에게 중요한 시사점을 던진다. 통계적 성능과 특정 분야의 전문 지식(domain knowledge) 사이에는 심각한 긴장 관계가 존재할 수 있다. 데이터 과학자는 F1-점수나 AUC가 향상되었다는 이유로 ‘더 좋은 모델’이라고 판단할 수 있지만, 해당 분야의 전문가(예: 의사)는 그 모델의 예측 근거가 비상식적이라는 이유로 모델 자체를 거부할 수 있다. 따라서 의료 진단과 같은 고위험 분야에서 SMOTE를 사용할 때는, 정량적인 성능 지표 검증을 넘어, 반드시 해당 분야 전문가와의 질적 검토를 통해 모델의 논리적 타당성을 확보하는 과정이 수반되어야 한다.

앞서 논의된 원본 SMOTE의 명백한 한계들을 극복하기 위해, 머신러닝 연구 커뮤니티는 더 정교하고 목표 지향적인 여러 변종 알고리즘들을 개발해왔다. 이러한 진화의 과정은 SMOTE가 ‘맹목적인’ 생성기에서 점차 ‘지능적인’ 생성기로 발전해가는 역사라고 할 수 있다.


표 2: SMOTE와 주요 변종 기법 심층 비교

구분 SMOTE (원본) Borderline-SMOTE ADASYN
핵심 아이디어 소수 클래스 내 샘플들 간의 선형 보간을 통해 합성 데이터 생성 클래스 경계선에 위치한 ‘위험한’ 소수 샘플에 집중하여 데이터 생성 학습하기 어려운(주변에 다수 클래스가 많은) 소수 샘플에 더 많은 데이터를 적응적으로 생성
생성 기반이 되는 샘플 모든 소수 클래스 샘플 중 무작위로 선택 이웃의 절반 이상이 다수 클래스인 ‘Danger’ 샘플에만 한정 29 모든 소수 클래스 샘플을 사용하되, 주변 다수 클래스 비율에 따라 생성량을 차등 분배 29
주요 장점/해결 문제 과적합 완화 및 데이터 다양성 확보 경계면을 명확히 하고, 노이즈 및 안전 영역에 대한 불필요한 생성을 방지 학습이 어려운 경계 영역에 생성 노력을 집중하여 분류 성능을 동적으로 최적화

이론적 논의를 넘어, SMOTE가 실제 산업 현장에서 어떻게 활용되고 구체적으로 어떤 성과를 내는지 정량적인 사례 연구를 통해 살펴본다. 이를 통해 SMOTE의 실용적 가치와 적용 시 고려해야 할 점들을 파악할 수 있다.


표 3: 산업별 사례 연구의 정량적 성능 향상 요약

산업 분야 주요 평가 지표 SMOTE 미적용 시 성능 SMOTE 적용 시 성능 핵심 시사점
금융 (사기 탐지) 재현율, F1-점수 매우 낮음 (소수 클래스 무시 경향) 유의미하게 향상 31 희소하지만 치명적인 이벤트를 탐지하는 모델의 능력을 강화함.
제조업 (반도체 불량) 기하 평균 (GM) 72% (알고리즘 간 성능 편차 큼) 72% 이상으로 크게 향상 (1:1 비율에서 최적) 6 최적의 샘플링 비율이 존재하며, 과도한 증강은 해로울 수 있음. 모델 성능을 안정화시킴.
의료 (당뇨병 진단) AUC SVM: 0.598, LR: 0.613 SVM: 0.991, LR: 0.987 32 소수 클래스(환자)에 대한 모델의 판별 능력을 극적으로 향상시켜 진단의 신뢰도를 높임.

SMOTE와 그 변종들이 데이터 불균형 문제에 대한 강력한 해법을 제공했지만, 연구의 흐름은 더 정교하고 강력한 딥러닝 기반의 생성 모델로 향하고 있다. 이 섹션에서는 SMOTE의 대안으로 떠오르는 생성적 적대 신경망(GAN)과 변이형 오토인코더(VAE)를 살펴보고, 이들의 이론적 우월성과 실용적 한계를 비판적으로 비교 분석한다.

이론적인 우월성에도 불구하고, 딥러닝 생성 모델(DGM)들이 실제 불균형 데이터 문제, 특히 테이블 데이터 환경에서 SMOTE를 압도하는 경우는 생각보다 드물다는 것이 여러 연구를 통해 밝혀지고 있다. 이는 이론과 현실 사이의 중요한 괴리를 보여준다.

결론적으로, SMOTE를 DGM으로 완전히 대체하는 것이 아니라, 각자의 강점을 융합하는 하이브리드 방식이 오버샘플링 기술의 미래 방향이 될 가능성이 높다.


표 4: 오버샘플링을 위한 SMOTE 대 생성 모델 전략 비교

구분 SMOTE 계열 기법 생성 모델 (GANs/VAEs)
기본 메커니즘 기존 샘플 간의 기하학적 선형 보간 데이터의 잠재적 확률 분포 학습 및 샘플링
생성 데이터의 현실성 낮음-중간 (선형 가정에 의존, 인공적 패턴 생성 가능) 높음 (복잡한 비선형 분포 및 상관관계 포착 가능)
계산 복잡성 낮음 (상대적으로 빠르고 간단함) 매우 높음 (대규모 신경망 학습 필요, 많은 시간 소요)
데이터 요구량 낮음 (소수의 샘플만으로도 작동 가능) 높음 (효과적인 학습을 위해 상당한 양의 데이터 필요) 47
최적 적용 환경 테이블 데이터, 데이터셋 크기가 작거나 중간일 때, 빠르고 강건한 베이스라인이 필요할 때 이미지/텍스트 데이터, 매우 복잡한 데이터 분포, 데이터 현실성이 중요하고 계산 자원이 충분할 때

본 보고서는 SMOTE의 기본 원리부터 시작하여, 그 메커니즘, 장단점, 진화 과정, 그리고 최신 대안 기술과의 비교를 통해 다각적인 고찰을 수행했다. 이를 종합하여 데이터 과학 실무자를 위한 구체적인 권장 사항과 불균형 학습 분야의 미래를 조망하며 결론을 맺는다.

클래스 불균형 문제는 여전히 머신러닝 분야의 활발한 연구 주제이며, SMOTE는 그 역사에서 중요한 이정표를 제시했다. 앞으로 이 분야는 다음과 같은 방향으로 발전할 것으로 전망된다.

결론적으로, SMOTE는 데이터 불균형 문제를 해결하기 위한 기초적이면서도 여전히 실용적인 도구이다. 그러나 그 한계를 명확히 인지하고, 문제의 특성과 맥락에 맞는 더 정교하고 지능적인 하이브리드 솔루션을 탐색하는 것이 현대 데이터 과학자에게 요구되는 역량이라 할 수 있다.