[Machine Learning] Sampling
# 특성들을 StandardScaler로 표준화
Unbalanced data : 불균형 데이터
- 정상 범주의 관측치 수와 이상 범주의 관측치 수가 현저히 차이나는 데이터 ex) 암 발생 환자, 신용카드 사기 거래
- 이상을 정확히 분류하는 것이 더 중요
- 불균형한 데이터 세트는 이상 데이터를 정확히 찾아내지 못할 수 있다는 문제점이 존재
1. Under sampling
- 다수 범주를 줄여서 소수 범주와 비슷하게 맞춘다.
- 다수 범주 관측치 제거로 계산 시간 감소
- 클래스 오버랩 감소 가능
- 데이터 제거로 인한 정보 손실 발생 가능성 증가
Random undersampling :다수 범주에서 무작위로 샘플링
- from imblearn.under_sampling import RandomUnderSampler
: 다수 범주에서 무작위로 샘플링 하는 것
- from imblearn.under_sampling import TomekLinks
: 두 범주 사이를 탐지하고 정리를 통해 부정확한 분류경계선을 방지하는 방법
: Tomek Link (선택한 두 데이터 간의 링크)
CNN (condensed nearest neighbor)
- from imblearn.under_sampling import CondensedNearestNeighbour
: 소수 범주에 속하는 데이터 전체와 다수 범주에 속하는 데이터 중 임의로 선택한 데이터 한 개 (A)로 구성된 서브 데이터를 생성
OSS (one-sided selection) ##
- from imblearn.under_sampling import OneSidedSelection
: Tomek links + CNN
2. Over sampling
- 소수 범주 관측치를 증폭시켜 다수 범주의 관측치와 비슷하게 만든다.
- 정보손실이 없음
- under sampling에 비해 높은 정확도
- 과적합 가능성 존재
- 계산 시간 증가
- noise 또는 outlier에 민감함
- from sklearn.utils import resample
- from imblearn.over_sampling import RandomOverSampler
: 소수 범주의 데이터는 무작위로 복제
SMOTE(Synthetic Minority Over-sampling Technique) ##
- from imblearn.over_sampling import SMOTE
: resample한 경우 소수 범주에 대한 과적합 발생을 보완하기 위한 방법으로 소수 범주에서 가상의 데이터를 생성
- Borderline SMOTE
: Borderline 부분에 대해서만 SMOTE 방식을 사용하는 것
: Danger 관측치에 대해서만 SMOTE 적용
ADASYN (adpative synthetic sampling approach)
- from imblearn.over_sampling import ADASYN
: SMOTE 방법과 비슷하지만 샘플링 개수를 데이터 위치에 따라 다르게 설정하는 것이 차이점
: 소수 범주 데이터 주변의 다수 범주 데이터의 수에 따라 유동적으로 가상 데이터 생성 가능
GAN (Generative Adversarial Nets)
: 생성자와 구분자로 구성되어 있고 모델은 딥러닝을 사용하는 최신 오버 샘플링 기법
: 무작위로 노이즈를 생성하고 생성자를 통해 가짜 샘플을 만들고 피드백&판별 과정을 거침
: 생성자와 구분자가 서로 경쟁하며 업데이트되고 결국 가짜 샘플은 진짜 샘플과 매우 유사한 형태로 생성되게 됨
* 내용참고&출처 : 태그의 수업을 복습 목적으로 정리한 내용입니다.