Python/Machine Learning

[Python ML]변수 선택(일변량 통계기반/모형기반), 데이터 밸런싱(언더 샘플링/오버 샘플링(SMOTE))

sohyunkimmm 2023. 1. 15. 14:56
728x90

* 변수 선택(특성 선택) Variable Selection

- 새로운 특성을 추가할 때 혹은 고차원 데이터 셋을 사용할 때 가장 유용한 특성만 선택하고 나머지는 무시하여 특성의 수를 줄이는 방법

- 다중공산성 혹은 과적합이 발생하는 것을 방지하기 위한 방법

 

- 종류

1) 일변량 통계기반 선택
: 특정 일변량 통계량을 기반으로 특성 선택

: from sklearn.feature_selection from SelectKbest

2) 모형 기반 선택

: 지도 학습 머신러닝 모델을 사용하여 특성의 중요도를 평가해서 가장 중요한 특성만 선택

: from sklearn.feature_selection import SelectFromModel

3) 반복적 변수 선택

: (1) 특성을 하나도 선택하지 않은 상태로 시작해 어떤 종료 조건을 도달할 때까지 하나씩 추가하는 방법

  (2) 모든 특성을 가지고 시작해 어떤 종료 조건이 될 때까지 하나씩 제거하는 방법

: from sklearn.feature_selection import RFE

 

 

* 데이터 밸런싱 Data Balancing

: 비율 차이가 나는 클래스를 동일한 비율로 맞춰주는 방법

 

- 데이터 불균형

: 분류 모델(Classifier)의 경우 종속 변수가 동일한 비율의 클래스를 가지고 있지 않고 특정 클래스가 높은 비율을 차지하고 있는 경우, 데이터 불균형 문제를 해결하기 위해 언더 샘플링이나 오버 샘플링을 사용

- 언더 샘플링

: 불균형한 데이터 셋에서 높은 비율을 차지하는 클래스의 데이터수를 감소시킴으로써 데이터 불균형을 해소

- 오버 샘플링

: 낮은 비율 클래스의 데이터 수를 늘림으로써 데이터 불균형을 해소

: 대표적 방법 = SMOTE

사진 출처: https://www.researchgate.net/figure/Differences-between-undersampling-and-oversampling_fig1_341164819

 

 

* 변수 선택 코딩

1) 일변량 통계기반

- from sklearn.feature_selection from SelectKbest, chi2

SelectKBest
결과값

 

2) 모형기반 변수선택

- from sklearn.feature_selection import SelectFromModel

- RandomForestClassifier모델 사용

RandomForestClassifier모형에서 SelectFromModel사용
결과값

 

 

* 데이터 밸런싱 코딩

1) 언더 샘플링

- from imblearn.under_sampling import RandomUnderSampler

결과값: under train data Counter({0: 219, 1:219})

 

2) 오버 샘플링

- from imblearn.over_sampling import SMOTE

- SMOTE = Synthetic Minority Oversampling Technique

결과값: over train data Counter(1: 481, 0:481})

 

728x90
반응형