앞으로 몇 번의 포스팅으로 나누어서 불균형 데이터 (imbalanced data)에 대해서 다루어보도록 하겠습니다.
1. 불균형 데이터 (Imbalanced Data) 란 무엇인가?
2. 불균형 데이터는 분류 모델링 시 무엇이 문제인가?
3. 불균형 데이터로 분류 모델링하는 방법에는 무엇이 있나?
1. 불균형 데이터 (Imbalanced Data) 란 무엇인가?
불균형 데이터 (Imbalanced Data) 는 목표 변수(target/output variable) 가 범주형 데이터 일 때, 범주 별로 관측치의 개수, 비율의 차이가 많이 나는 데이터를 말합니다.
아래의 각 산업별 예처럼, 정상 대 비정상의 비율이 90%:10% 처럼 불균형하거나, 더 심하면 99%:1% 처럼 극심하게 불균형한 데이터 (extremely imbalanced data) 도 있습니다. 우리가 관심있어하고 예측하고 싶어하는 비정상 관측치가 정상보다 매우 적은 불균형 데이터를 실무에서는 어렵지 않게 볼 수 있습니다.
- 제조회사에서 양품 대 불량품
- 신용카드회사에서 정상 거래 대 사기 거래 (Fraud)
- 은행의 정상 거래 대 돈세탁 거래
- 의료검진센터에서 정상 대 암(cancer) 진단
- 사이버보안 회사에서 정상 IP 대 비정상 IP
- 통신회사에서 유지 고객 대 이탈(Churn) 고객
- 설비/장비의 정상 대 이상 운영
- 유통회사 대리점의 정상 대 비정상 거래
불균형 데이터에서 다수를 차지하는 범주를 ‘다수 범주(majority class)’라고 하고, 적은 수를 차지하는 범주는 ‘소수 범주 (minority class)’ 라고 합니다.
2. 불균형 데이터는 분류 모델링 (Classification Modeling) 시 무엇이 문제인가?
불균형 데이터를 가지고 분류 모델을 훈련시키면 우리가 관심있어하는 minority class 를 제대로 분류할 수 없는 쓸모없는 모델이 만들어질 위험이 있습니다. 가령, 정상(majority class) : 비정상(minority class) 의 비율이 99% : 1% 라고 해보겠습니다. 이런 불균형 데이터에 대해 분류 모델을 훈련시킨 후 예측을 하면 모든 데이터를 ‘정상(majority class)’ 이라고 분류한다고 했을 때 정확도(accuracy)는 99%가 됩니다. 얼필 보면 잘 만들어진 모델 같습니다만, 우리가 관심있어하는 ‘비정상(minority class)’ 범주는 하나도 제대로 분류를 해내지 못했으므로 쓸모없는 모델이라고 하는 것입니다.
또한, 소수 집단(minority class) 의 관측치 개수가 적으면 소수 집단의 모집단 분포를 샘플링한 소수의 관측치가 대표하기에는 부족하므로 분류 모델이 과적합 (overfitting)에 빠질 위험이 있습니다. 그래서 훈련 데이터셋에는 소수 집단을 분류했다고 하더라도, 새로운 데이터에 대해서는 소수 집단을 제대로 분류를 못할 위험이 있습니다.
3. 불균형 데이터로 분류 모델링하는 방법에는 무엇이 있나?
아래의 6가지 방법이 있는데요, 3-2번 부터 해서 하나씩 차근차근 이어서 포스팅을 해보겠습니다.
3-1. 소수 클래스의 데이터 추가 수집 (Get more minority data)
3-2. 불균형 데이터 분류 모델에 적합한 성능평가 지표 선정
(evaluation metrics for imbalanced classification)
3-3. 샘플링 방법 (Sampling methods)
3-3-1. Undersampling
: Random Sampling, Tomek Links
3-3-2. Oversampling
: Resampling, SMOTE, Borderline SMOTE, ADASYN
3-4. 비용 또는 가중치 조정 방법 (Cost, Weight)
3-5. Outlier detection 방법
: One-class SVM, Isolation Forest, DBSCAN clustering
3-6. 확률 튜닝 알고리즘 (Probability Tuning Algorithms)
이번 포스팅이 많은 도움이 되었기를 바랍니다.
행복한 데이터 과학자 되세요! :-)