좋은 모델을 만들려면 충분하고 균형 잡힌 데이터가 필요하지만 현실은 다르다. 희귀 질환 진단 데이터는 양성 표본이 극히 적고, 사기 거래는 전체의 0.1%이며, 어떤 이미지 클래스는 몇 장뿐이다. 그대로 두면 모델은 다수 클래스만 잘 맞히고 정작 중요한 소수 클래스를 놓친다.
데이터 증강은 기존 데이터를 변형해 새 학습 샘플을 만드는 기법이다. 새 데이터를 모으지 않고도 데이터셋의 다양성과 양을 늘려 일반화 성능을 높이고 과적합을 줄인다.
증강의 핵심 원칙은 "레이블을 바꾸지 않는 변형"이다. 고양이 사진을 좌우로 뒤집어도 여전히 고양이다. 즉 정답(레이블)은 보존하면서 입력만 다양화하는 변형만 적용해야 한다. 이를 통해 모델은 "위치·각도·밝기가 달라도 본질은 같다"는 불변성(invariance)을 학습한다.
증강이 "기존 데이터의 변형"이라면, 합성은 완전히 새로운 가상 데이터를 생성하는 쪽에 가깝다. 실데이터가 극히 부족하거나 프라이버시 때문에 실데이터를 쓸 수 없을 때 사용한다.
방법
설명
대표 용도
GAN
생성자와 판별자가 경쟁하며 사실적인 데이터를 만든다
이미지 생성, 희귀 사례 보강
시뮬레이션
물리·규칙 엔진으로 상황을 만들어 낸다
자율주행의 위험 시나리오, 로봇
합성 정형 데이터
통계 분포를 모사해 개인정보 없는 가짜 표를 만든다
프라이버시 보호, 외부 공유
합성 데이터는 강력하지만 "분포 갭(distribution gap)"의 위험이 있다. 합성 데이터가 실제 데이터 분포를 완벽히 재현하지 못하면, 거기서 학습한 모델은 실세계에서 성능이 떨어진다. 그래서 합성 데이터는 실데이터를 보완하는 용도로 쓰고, 검증은 반드시 실데이터로 해야 한다.
# SMOTE로 소수 클래스 합성 오버샘플링 (개념 예시 — imbalanced-learn)from imblearn.over_sampling import SMOTEsmote = SMOTE(random_state=42)X_balanced, y_balanced = smote.fit_resample(X_train, y_train)# 소수 클래스 샘플 사이를 보간한 합성 샘플이 추가되어 클래스 비율이 맞춰진다
단순 복제(중복으로 인한 과적합 위험)와 달리, SMOTE는 기존 소수 샘플과 그 최근접 이웃을 잇는 선 위에 새로운 점을 만든다. 덕분에 모델이 더 일반화된 결정 경계를 학습한다. 다만 노이즈가 많거나 클래스 경계가 모호한 데이터에서는 잘못된 합성 샘플을 만들 수 있어 주의가 필요하다.
리샘플링은 학습셋에만 적용해야 한다. 검증·테스트셋까지 균형을 맞추면 실제 운영 분포와 달라져 성능이 부풀려진다. 교차 검증을 쓸 때도 각 fold의 학습 부분에서만 SMOTE를 돌려야 한다.
불균형 데이터에서 accuracy는 거짓 안심을 준다. 1:999 데이터의 99.9% 정확도는 사실상 무의미하다. 대신 precision, recall, F1, PR-AUC, ROC-AUC로 소수 클래스 성능을 제대로 평가해야 한다. 특히 사기·질병처럼 소수 클래스가 중요한 문제에서는 recall과 PR-AUC가 핵심이다.
전이학습(transfer learning): 큰 데이터로 미리 학습된 모델을 가져와 마지막 층만 우리 데이터에 맞춰 다시 학습한다. 필요한 레이블 양을 크게 줄인다.
준지도학습(semi-supervised): 적은 레이블 데이터와 많은 무레이블 데이터를 함께 쓴다.
액티브 러닝: 모델이 헷갈려 하는 샘플만 골라 사람에게 레이블링을 요청한다.
약한 감독(weak supervision): 규칙·휴리스틱으로 대략적 레이블을 대량 생성한 뒤 노이즈를 감수하고 학습한다.
이 네 가지는 모두 "사람이 붙여야 할 레이블의 수를 줄인다"는 같은 목표를 다른 방향에서 공략한다. 전이학습은 모델 쪽에서, 증강은 입력 쪽에서, 액티브 러닝은 선택 쪽에서, 약한 감독은 레이블 생성 쪽에서 문제를 줄인다. 시험에서 "레이블링 비용 절감"이 나오면 이 넷 중 하나가 정답인 경우가 많다.
SageMaker Processing / Data Wrangler: 전처리 단계에서 리샘플링·증강 로직을 실행한다.
내장 알고리즘의 가중치 옵션: 예컨대 XGBoost의 scale_pos_weight로 불균형을 보정한다.
GAN 학습: SageMaker 학습 잡으로 생성 모델을 훈련해 합성 데이터를 만든다.
🎯 시나리오: "신용카드 사기 탐지 데이터가 양성 0.2%로 극도로 불균형하다. 모델이 사기를 거의 못 잡는다." → (1) SMOTE 같은 오버샘플링이나 클래스 가중치로 불균형을 보정하고, (2) accuracy 대신 recall과 PR-AUC로 평가하며, (3) 결정 임계값을 사기 탐지 쪽으로 조정한다.
내일은 준비된 데이터를 학습에 효율적으로 공급하는 방법(Pipe/File 모드, FSx for Lustre, 샤딩)을 다룬다.