[ML/전처리] Imbalanced Data Sampling
클래스 불균형을 해결하기 위한 다양한 샘플링 기법
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은 데이터간 모든 거리를 구하기 떄문에 > 데이터 갯수가 많으면 사용이 어려움