환자 1,000명 중 암 환자가 20명뿐인 데이터로 모델을 만들었는데 정확도가 98%라면 훌륭한 모델일까? 안타깝게도 “모두 정상”이라고만 답해도 98%가 나온다. 사기 탐지, 불량 검출, 질병 진단처럼 찾아야 하는 쪽이 드문 문제에서 흔히 생기는 함정이다. 빅데이터분석기사 분류 모델링과 정보관리기술사 인공지능 영역에서 불균형 데이터 처리 기법은 반복해서 다뤄진다.
1,000건 중 정상 980건(98%), 이상 20건(2%)인 데이터를 가정하자. 모든 입력을 정상으로 예측하면 정확도는 980÷1,000=98%다. 하지만 이상을 하나도 찾지 못하므로 재현율(Recall)은 0%다. 그래서 불균형 데이터에서는 정확도 대신 재현율, 정밀도, F1, PR-AUC 같은 지표를 함께 본다.
| 기법 | 원리 | 장점 | 한계 |
|---|---|---|---|
| 랜덤 언더샘플링 | 다수 클래스 표본을 덜어냄 | 간단하고 학습이 빨라짐 | 유용한 정보를 버릴 수 있음 |
| 랜덤 오버샘플링 | 소수 클래스 표본을 복제해 늘림 | 정보 손실이 없음 | 같은 표본을 반복해 과적합 위험 |
| SMOTE | 소수 표본과 이웃 사이에 새 표본을 합성 | 복제보다 다양한 표본 생성 | 경계가 겹친 곳에서 잡음 표본 생성, 범주형 변수에는 별도 변형 필요 |
| 클래스 가중치 | 소수 클래스 오류에 더 큰 손실을 부여 | 데이터를 바꾸지 않음 | 모델·라이브러리 지원 여부에 따라 다름 |
| 임계값 조정 | 확률 0.5 대신 상황에 맞는 기준 사용 | 재학습 없이 적용 가능 | 정밀도와 재현율이 맞교환됨 |
어느 하나가 정답은 아니다. 데이터가 충분히 크면 언더샘플링이 빠르고, 소수 표본이 적으면 SMOTE나 가중치가 유리한 경우가 많다. 결국 같은 검증 데이터에서 여러 방법의 재현율과 정밀도를 비교해 고르는 것이 가장 확실하다.
계산 예시다. x=(2, 3), 이웃 x’=(4, 7), λ=0.25이면 새 표본은 (2+0.25×2, 3+0.25×4)=(2.5, 4.0)이다. 두 점을 잇는 선분의 4분의 1 지점이라는 뜻이다.
흔히 쓰는 가중치 공식은 전체 표본 수 ÷ (클래스 수 × 해당 클래스 표본 수)다. 위 데이터에서 이상 클래스는 1,000÷(2×20)=25, 정상 클래스는 1,000÷(2×980)≈0.51이다. 이상 한 건을 놓치는 손실이 정상 한 건을 놓치는 손실의 약 49배로 반영된다. 가중치 기본 설정은 라이브러리마다 다르므로 문서를 확인해야 한다.
불균형 데이터에서는 정확도를 믿지 말고, 학습 데이터에만 샘플링·가중치로 균형을 맞추고, 평가는 원래 분포에서 재현율·F1로 한다.
이 글은 학습용 정리이며 실제 시험 문항과 다를 수 있다. 출제 기준은 한국데이터산업진흥원 등 공식 공지를 확인하라. 그림은 개념도이며 실측 데이터가 아니다.
코드를 고칠 때 한 군데만 바꿨는데 엉뚱한 곳이 줄줄이 깨진 경험이 있다면, 그것이 결합도가 높은…
두 스레드가 같은 변수를 동시에 고치면 결과가 실행할 때마다 달라진다. 이 문제를 푸는 도구가 세마포어와…
사내 시스템에 한 번 로그인했는데 파일 서버, 메일, 인트라넷이 비밀번호를 다시 묻지 않는다면 뒤에서 커버로스(Kerberos)가…
"인덱스를 만들었는데 왜 안 타요?" SQL 튜닝에서 가장 자주 나오는 질문이다. 답을 알려면 인덱스가 어떤…
11월에 일정이 있는 금융 DT 테스트 시험을 정리했습니다. 접수, 시험, 합격 발표 날짜를 한 번에…