Meiren

[ML/전처리] Imbalanced Data Sampling 본문

머신러닝(machine learning)

[ML/전처리] Imbalanced Data Sampling

meiren 2022. 11. 29. 16:54

클래스 불균형을 해결하기 위한 다양한 샘플링 기법

under sampling

- 다수의 클래스 데이터 제거하여 > 처리 속도 증대

- 클래스 오버랩 감소

- 데이터 제거로 인한 정보 손실

 

over sampling

- 소수의 클래스 데이터 수를 증대시켜 불균형 해소\

- 데이터 중복 생성인해 -> overfitting 문제가 있음

- 데이터 증대에 따른 학습 시간 증대의 단점

 

 

RandomOverSampling

- 소수 클래스 샘플을 랜덤하게 선택 > 그 수를 늘림

- 데이터가 단순히 복제됨

- 따라서 데이터의 값이 변하지 않고 수가 늘어 > 가중치가 높아짐

- 과적합 문제 야기

- 연속형 변수만 가능

 

SMOTE

- oversampling

- 소수 클래스에서 knn을 활용해 가상의 데이터 생성

- 각 샘플의 KNN을 찾음 > 그 이웃들 사이에 선을 그어 > 무작위 점 생성

- ADSYN과 달리, 생성된 데이터를 무조선 소수 클래스라 칭하지 않고 분류모형에 따라 분류함

 

- 연속형에서만 사용 가능

 

 

ADASYN 

- oversampling

- smote의 개선된 버전, 동일 프로세스 knn 사용됨

- knn > 임의의 작은 값을 더해줌 (차이점)

- ADSYN과 달리, 생성된 데이터를 무조선 소수 클래스라 칭함

 

- 샘플링하는 개수를 위치에 다라 다르게 하는 방법

 

 

SMOTENC

- smote처럼 k근접 이웃을 활용해 가상 데이터 샘플 생성, 오버샘플링

- 범수 & 연속형 변수가 혼합된 경우에만 작동

 

 

SMOTEENN

- SMOTE + ENN

 

ENN(dited Nearest Neighbours)

- 가까운 k개 중 소수 클래스를 지닌 데이터들을 모두 제거하여, 소스클래스와 다수 클래스간의 구분을 명확히 함

- 경계선이 있는 데이터 중 다수클래스를 삭제시킴

- knn은 데이터간 모든 거리를 구하기 떄문에 > 데이터 갯수가 많으면 사용이 어려움