본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
(Class Imbalance에서 넘어옴)
Class Imbalance; 클래스 불균형 문제
분류 문제에서 각 클래스에 속한 표본의 수가 크게 차이 나는 상태

사기 거래 탐지, 희귀 질환 진단, 이상 탐지처럼 찾으려는 대상이 드문 문제에서 필연적으로 발생한다. 전체의 1%만 양성인 데이터에서 모델이 모두 음성으로 예측해도 정확도는 99%가 되므로, 정확도만 보면 성능이 좋아 보이지만 정작 소수 클래스를 전혀 잡아내지 못한다.

  • 모델이 다수 클래스 쪽으로 편향되어 학습된다.
  • 정확도(Accuracy)가 성능 지표로서 의미를 잃는다. 정밀도, 재현율, F1 점수, AUC 를 함께 봐야 한다.
  • 소수 클래스의 표본이 적어 그 클래스의 패턴을 일반화하기 어렵다.
  • 오버샘플링: 소수 클래스의 표본을 늘린다. 단순 복제는 과적합 위험이 있어 SMOTE 처럼 합성 표본을 만드는 기법을 쓴다.
  • 언더샘플링: 다수 클래스의 표본을 줄인다. 정보 손실 위험이 있으나 데이터가 매우 클 때 효과적이다.

알고리즘 수준

편집 원본 편집
  • 가중치 조정: 소수 클래스의 오분류에 더 큰 비용을 부여한다(Cost-sensitive Learning). 클래스 가중치를 주는 것만으로도 상당 부분 완화된다.
  • 임계값 조정: 분류 임계값을 0.5 가 아닌 값으로 옮겨 재현율을 확보한다.
  • 앙상블: 배깅·부스팅 계열에 샘플링을 결합한다.

오해하기 쉬운 점

편집 원본 편집
  • 클래스가 두 개일 때만 생기는 문제가 아니다. 다중 클래스 분류에서도 클래스 간 표본 수가 치우치면 똑같이 발생한다.
  • 가중치 조정(무게 균형)만으로도 해결이 가능하다. 샘플링이 유일한 해법은 아니다.
  • 결측값 처리나 이상값 대체와는 다른 범주의 문제다.

정확도 착시와 민감도

편집 원본 편집

불균형 데이터에서는 모델이 다수 클래스만 예측해도 대부분을 맞히므로 정확도는 오히려 높게 나온다. "불균형 데이터는 정확도가 낮아지는 경향이 있다" 는 틀린 설명이다. 떨어지는 것은 소수 클래스를 얼마나 찾아내는지를 나타내는 민감도(재현율)다. 소수 클래스의 데이터가 적을수록 모델이 그 패턴을 배우지 못해 민감도가 낮아진다.

과소표집과 과대표집 비교

편집 원본 편집
구분 과소표집(언더샘플링) 과대표집(오버샘플링)
방법 다수 클래스(정상 데이터)의 일부만 골라 쓴다 소수 클래스를 복제하거나 합성해 늘린다
대표 기법 랜덤 과소표집, 토멕 링크(Tomek Links), CNN(Condensed Nearest Neighbor), OSS(One-Sided Selection) 랜덤 과대표집, SMOTE, Borderline-SMOTE, ADASYN
장점 데이터가 줄어 학습이 빠르다 원래 데이터를 버리지 않아 정보 손실이 없다
한계 무작위로 일부만 고르면 데이터 유실이 매우 크고, 때로는 중요한 정상 데이터를 잃는다 같은 표본을 단순 복제하면 그 표본에 과적합되어 새 데이터에 대한 일반화 오류가 생긴다. 데이터가 늘어 학습 시간도 길어진다
  • SMOTE 는 소수 클래스 표본과 그 최근접 이웃 사이에 새 표본을 합성해, 단순 복제보다 과적합 위험을 줄인다.
  • 토멕 링크는 서로 다른 클래스이면서 가장 가까운 이웃인 표본 쌍을 찾아 그중 다수 클래스 쪽을 지워 경계를 깨끗하게 한다.