[파이썬 머신러닝 완벽가이드 - 분류(Classifier)] 샘플링(Sampling)
레이블이 불균형한 분포를 가진 데이터 세트는 학습 시 예측 성능에 문제가 발생할 수 있다.
이는 이상 레이블을 가지는 데이터 건수가 정상 레이블을 가진 데이터 건수에 비해 너무 적기 때문이다.
이를 해결하기 위해 오버 샘플링과 언더 샘플링을 주로 사용한다.
언더 샘플링
많은 데이터셋을 적은 데이터셋으로 감소시키는 방법
많은 레이블을 가진 데이터 세트를 적은 레이블을 가진 데이터 세트 수준으로 감소
너무 많은 정상 레이블 데이터를 감소 시킬 경우 제대로 된 학습이 안 될 수 있다.
오버 샘플링
이상 데이터와 같이 적은 데이터를 충분한 학습이 되도록 증식하는 방법
적은 레이블을 가진 데이터 세트를 많은 레이블을 가진 데이터 세트 수준으로 증식
단순히 데이터를 증식하는 것은 과적합을 유발하므려 원본 데이터의 피처 값들을 아주 약간만 변경하여 증식
대표적으로 SMOTE(Synthetic Mirnority Over-Sampling Technique) 방법이 있다.
SMOTE는 적은 데이터 세트에 있는 개별 데이터들의 K 최근접 이웃(K Nearest Neighbor)을 찾아 이 데이터와 K개 이웃들의 차이를 일정 값으로 만들어서 기존 데이터와 약간 차이가 나는 새로운 데이터들을 생성하는 방식
과정 : 원본 데이터 -> K 최근접 이웃으로 데이터 신규 증식 대상 설정 -> 신규 증식하여 오버 샘플링 완료
오버 샘플링이 예측 성능상 더 유리한 경우기 많다.
SMOTE 수행 절차
데이터 일차 가공 및 모델 학습예측/평가
Stratified 방식 테스트로 데이터 세트 추출하여 학습 데이터와 테스트 데이터 세트의 레이블 값 분포도를 서로 동일하게 만든다.
Stratifeid Sample(계층적 샘플링)
샘플링시 데이터의 비율을 모집단과 같이 하는 것
모집단의 데이터 분포 비율을 유지하면서 데이터를 샘플링(취득)하는 것
예) 전체 데이터에서 정상 레이블과 이상 레이블의 비율이 65%, 35%라면 시험 데이터 역시 정상 레이블과 이상 레이블의 비율이 65%, 35%가 되도록 샘플링하는 것.