AI VIDEO BRIEFING
불균형 데이터 처리 5가지 기법: 언더샘플링·오버샘플링·SMOTE·앙상블·포컬 로스 총정리
사기 탐지처럼 한쪽 클래스가 극단적으로 적은 불균형 데이터에서는 정확도가 무의미합니다. 언더샘플링·오버샘플링·SMOTE·앙상블·포컬 로스 다섯 기법으로 소수 클래스의 F1 점수를 끌어올리는 방법을 정리했습니다.

핵심 메시지
쉽게 이해하기
사기 탐지는 머신러닝에서 흔한 문제지만, 정상 거래 1만 건에 사기 거래가 1건뿐인 식으로 데이터가 극단적으로 불균형한 경우가 많다. 이때는 무조건 "사기가 아니다"라고만 답하는 엉터리 함수도 99%의 정확도를 얻는다. 정작 알고 싶은 사기를 전혀 못 잡는데도 정확도는 높게 나오므로, 불균형 데이터에서 정확도는 사실상 무의미하다.
첫 번째 해법은 언더샘플링으로, 다수 클래스에서 무작위로 일부만 골라 소수 클래스 수에 맞춘다. 다만 많은 데이터를 버리게 된다는 단점이 있다. 두 번째는 오버샘플링으로, 소수 클래스를 여러 번 복제해 수를 늘린다. 단순 복제라 한계가 있다.
세 번째가 SMOTE(합성 소수 오버샘플링 기법)다. 기존 샘플을 그대로 복사하는 대신 K-최근접 이웃 알고리즘으로 새로운 합성 샘플을 만들어 내기 때문에 단순 복제보다 낫다. 파이썬에서는 imblearn 라이브러리로 사용할 수 있다.
네 번째는 앙상블로, 다수 클래스를 여러 배치로 나누고 각 배치를 소수 클래스와 합쳐 여러 모델을 만든 뒤 랜덤 포레스트처럼 다수결로 예측을 모은다. 다섯 번째는 포컬 로스로, 다수 클래스에 패널티를 주고 소수 클래스에 가중치를 더 주는 특수한 손실 함수다. 고객 이탈, 기기 고장, 암 예측 등이 불균형 데이터의 대표 사례다.
실습에서는 고객 이탈 예측 노트북으로 다섯 기법을 비교한다. 데이터를 나눌 때 stratify 옵션으로 학습·검증 세트의 클래스 비율을 맞추는 것이 중요하다. 원래 0.53에 불과하던 소수 클래스 F1 점수가 언더샘플링·오버샘플링을 거쳐 SMOTE에서 약 0.81까지 올랐고, 발표자는 이 사례에서는 SMOTE가 가장 잘 작동했다고 정리한다. 다만 머신러닝은 정답이 정해진 것이 아니라 여러 기법을 직접 시도해 봐야 한다는 점도 강조한다.
주요 인사이트
- 정확도는 불균형 데이터에서 모델을 속이기 쉬운 지표다. 소수 클래스의 정밀도·재현율·F1 점수를 함께 봐야 진짜 성능이 보인다.
- SMOTE는 단순 복제와 달리 새로운 합성 샘플을 만들어 내므로, 같은 데이터를 반복 학습하는 과적합 위험을 줄여 준다.
- train_test_split의 stratify 옵션은 학습과 검증 세트 양쪽에 클래스가 고르게 들어가도록 보장해, 평가가 한쪽으로 치우치는 것을 막는다.
- 어떤 기법이 항상 최고인 것은 아니다. 영상에서도 SMOTE는 효과적이었지만 앙상블은 그저 그랬고 포컬 로스는 오히려 점수를 떨어뜨려, 직접 비교해 보는 과정이 필요함을 보여준다.
자주 묻는 질문
불균형 데이터에서 정확도를 믿으면 안 되는 이유는?
정상이 99%인 데이터라면 무조건 정상이라고만 답해도 정확도가 99%로 나오지만, 정작 잡아야 할 소수 클래스(사기 등)는 전혀 못 잡습니다. 그래서 클래스별 F1 점수를 봐야 합니다.
SMOTE는 단순 오버샘플링과 무엇이 다른가요?
단순 오버샘플링은 기존 소수 클래스 샘플을 그대로 복제하지만, SMOTE는 K-최근접 이웃 알고리즘으로 새로운 합성 샘플을 생성합니다. 그래서 같은 데이터를 반복하는 단순 복제보다 더 낫습니다.
실습에서 성능은 얼마나 개선됐나요?
고객 이탈 예측에서 소수 클래스의 F1 점수가 원래 약 0.53이었는데, SMOTE를 적용하자 약 0.81까지 향상됐습니다. 전체 정확도는 78%로 비슷하게 유지됐습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗