티스토리 뷰
클래스 불균형
- 어떤 데이터에서 각 클래스가 가지고 있는 데이터의 양에 큰 차이가 있는 경우를 보통 클래스 불균형이 있다고 함
- 불균형 데이터를 사용하여 모델링 할 경우 관측치 수가 많은 데이터를 중심으로 학습이 진행되기 때문에 관측치가 적은 데이터에 대한 학습은 제대로 이뤄지지 않은 가능성 큼
ex) 신용사기 문제, 의학적 진단 등.. -> 불균형을 해결하는 것이 중요
1. Undersampling(과소표집)
- 무작위로 정상 데이터를 일부만 선택해 유의한 데이터만 남기는 방법
- 많은 클래스의 데이터를 적은 클래스의 수만큼 감소시킴
2. Oversampling(과대표집)
- 사전에 정해진 기준 또는 기준없이 무작위로 소수 데이터를 복제하는 방법
- 적은 클래스의 데이터를 많은 클래스의 수만큼 증가시킴
- 데이터를 증가시킬때 기존의 데이터를 복제하여 증가시키기에 과적합 문제가 발생할 수 있음
(1) SMOTE - Synthetic Minority Over-sampling Technique
- 일종의 과대 표집 방법, 다수 클래스를 샘플링하고 기존의 소수 샘플을 보간하여 새로운 소수 인스턴스를 합성해내는 방법
- 과대 표집의 경우 중복된 값이 너무 많이 생성되는 과적합이 발생되고, 과소 표집은 중요 데이터 손실 우려 있음
-> SMOTE 사용
<순서>
1. 알고리즘을 통해 소수 클래스에 대해 새로운 데이터 생성하기
2. 소수 클래스의 데이터를 하나를 찾고 해당 데이터와 가까운 K개의 데이터를 찾은 후 주변 값을 기준으로 새로운 데이터를 생성하기
- MLSMOTE(Multilabel Synthetic Minority Over-sampling Technique)
(2) ADASYN (ADAptive SYNthetic sampling approach)
이외.. ( DAE - Denoising Autoencoder , GAN - Generative Adversarial Network, VAE - Variational Autoencoder)
3. Ensemble Sampling
- 부스팅 알고리즘은 샘플별 가중치 재 산정을 위해 매 약한 학습자를 순차적으로 학습하고, 이때 오버샘플링은 데이터 불균형을 해소해주는 효과를 가진다. 오버샘플링 후, 약한 학습자 학습 뒤, 샘플별 가중치를 재산정하고, 오버 샘플링된 샘플을 삭제하여 실행한다. -> 데이터 불균형 문제를 해결
(0) AdaBoost
- Freund and Schapire, 1997
- 앙상블 학습 알고리즘 중 가장 일반적으로 사용되고 있는 부스팅 알고리즘
- 소수 범주 표본에 대한 학습기회를 제공 -> AdaBoost 알고리즘을 사용하여 다양한 부스팅 알고리즘이 데이터 불균형 문제 해결
- 학습 초기에는 다수 범주에 편중된 표본 학습에서 시작되더라도 순차적으로 소수 범주 표본에 대한 학습기회가 많 아지게 됨 -> 데이터 불균형이 있어도 견고한 학습성이 있음
- AdaBoost 알고리즘과 MGM-Boost 알고리즘은 분류자 생성 횟수가 25회를 넘어서면 오류 감소효과가 미미하다는 연구 결과(Opitz and Maclin, 1999)가 있음
(1) RAMOBoost(Ranked Minority Oversampling in Boosting)
(2) RUSBoost
- Seiffert et al., 2008
- SMOTE 대신 각 부스팅 반복에서 RUS(Random Under Sampling)를 수행하여 동일한 목표를 달성
(3) SMOTEBoost
- k-nearest neighbors을 사용하여 minority class 만든 후 (SMOTE) , SMOTEBoost는 각 부스팅 반복에서 SMOTE 메서드를 삽입한다.
- 모든 데이터에 동일한 가중치를 부여하는 것이라 각 부스팅 단계에서 소수 클래스에 더 많은 예를 제공
(4) WOTBoost(Weighted Oversampling Technique in Boosting)
- 각 부스팅 라운드에서 오버 샘플링 전략을 조정하여 더 많은 타겟 소수 데이터 샘플을 합성
- 조정은 가중 분포를 사용하여 시행
cf) 10 K fold 학습 결과 (Optiz and Macline, 1999)
<출처>
1. github.com/dialnd/imbalanced-algorithms
2. www.kaggle.com/c/lish-moa/discussion/187946
3. rstudio-pubs-static.s3.amazonaws.com/627765_52cecaafb3d94145821dcb048ad50c3e.html
4. www.koreascience.or.kr/article/JAKO201223052004277.pdf
6.
'인공지능 > 머신러닝' 카테고리의 다른 글
[ML Algorithm] 변수선택과 차원축소(Dimension Reduction) (0) | 2020.12.13 |
---|---|
[ML Algorithm] 통계기반분석 (0) | 2020.12.12 |
[ML Algorithm] SoftMax Function(소프트맥스 함수) (0) | 2020.10.10 |
[ML Algorithm] Neural Oblivious Decision Ensembles(NODE) (0) | 2020.10.05 |
[Math] 데이터 분석에 있어서의 확률 분포와 모수 추정 (0) | 2020.06.13 |