본문 바로가기
Machine Learning

이상 데이터 검출(이진분류)을 위한 언더 샘플링과 오버 샘플링

by xper100 2021. 2. 19.

데이터세트를 분리하는 것은 머신러닝의 중요한 단계이다. 모델을 훈련시키기 위해서는 학습데이터(Train dataset)과 테스트 데이터(Test dataset)으로 나누어 진행한다. 하지만 만약에 데이터가 불균형한 분포를 하고 있다면 얻고자 하는 값(Target Value)이 터무니 없이 적거나 많은 경우에는 샘플링을 통해서 데이터의 세트를 임의적으로 생성해야한다.

 

대표적인 방식으로 오버 샘플링(Oversampling)과 언더 샘플링(Undersampling)을 통해 적절한 학습데이터를 확보시킨다. 

 

 

1. 언더 샘플링(Undersampling)

  • 많은 레이블을 가진 데이터세트를 적은 레이블을 가진 데이터 세트의 크기와 같은 수준으로 샘플링하는 기법

2. 오버 샘플링(Oversampling)

  • 적은 레이블을 가진 데이터세트를 많은 레이블을 가진 데이터 세트의 크기와 같은 수준으로 샘플링하는 기법

SMOTE(Synthetic Minority Over-Sampling Technique)

  • 최근접 군집기법(K-Nearest Neighbor)을 사용하여 sampling을 하고자하는 데이터를 랜덤하게 뽑아내어 증식시키는 방법

3. SMOTE  실전 코드

# 라이브러리 
from imlearn.over_sampling import SMOTE

# 오버샘플링
smote = SMOTE(random_state=11)
X_train_over, y_train_over = smote.fit_sample(X_train, y_train)

# 학습데이터에 한해서만 오버샘플링을 해야함

 

 

Reference

파이썬 머신러닝 완벽가이드

 

 

댓글


출처: https://privatedevelopnote.tistory.com/81 [개인노트]