머신러닝(Machine Learning)

[불균형 데이터]오버샘플링(Over Sampling)

zzoming 2023. 11. 29. 00:09

오버샘플링 기법 

:  minority class 의 데이터 다수 범주의 데이터 수에 맞게 늘리는 샘플링 방식 


1. Resampling

 

 

:  minority class 의 데이터를 단순히 copy 하는 방법 → 새로운 데이터가 아닌 소수 데이터 개수만 많아지는 방법 

✔️ 단점 →  minority class  에 과적합이 발생할 가능성이 있음. 

2. SMOTE(Synthetic Minority Over-sampling Technique)

 

:  minority class 의 데이터를 최근접 이웃(K-NN) 알고리즘을 활용하여 새롭게 생성하는 방법이다. 

  •  minority class 의 데이터 중 임의의 한개를 기준으로 잡는다
  • 해당 데이터와 가장 가까운 거리에 있는 k개의 데이터를 찾는다 (이때 k개의 데이터는 모두 소수 클래스의 데이터)
  • 선별된 데이터를 처음 기준으로 잡았던 데이터와의 연결선 상에 새로운 데이터를 생성 

3. Borderline-SMOTE

: 모든minority data point가 아니라 Border-line(경계선) 근처에 있는 관측치들에 대해서 집중적으로 오버샘플링하는 기법.

border line 근처에 있을수록 상대적으로 분류하기가 힘들기 때문에 이러한 데이터 샘플을 추가로 생성하고 학습하여 모델의 성능을 향상시키는 방법 

KNN 알고리즘을 바탕으로 소수 클래스 데이터를 크게 3가지 종류로 구분한다. 

  • 이웃 중 majority class 가 과반수일 경우 → Danger
  • 이웃 중  minority classmajority class 보다 많거나 같을 경우 → safe
  • 이웃 모두가 majority class 일 경우 → Noise

이 중 Danger 관측치에 대해서만 SMOTE를 적용하여 오버샘플링 진행한다. 

4. ADASYN

Minority class 관측치에 대해서 주변에 majority class 관측치가 많을수록 더 많이 oversampling 하는 방법이다. 

Minority class 관측치에 대해서 주변에 majority class 관측치가 많을수록 분류가 더 어려운 관측치라고 간주 

 

 minority class 의 knn 내 majority class 의 개수가 많다면 훈련 시 다수 클래스와 비슷한 설명변수를 갖는 해당  minority classmajority class 로 분류할 가능성이 높아질 텐데, 더 많은 샘플을 생성함으로써 minority class가 무시되지 않도록 하는 것이라고 해석할 수 있다. 

 

minority class  데이터 주변의 majority class 데이터의 수에 따라 유동적으로 생성이 가능하다는 장점이 있다. 

5. SMOTE - Tomerk

: 이는 Oversampling과 Undersampling을 함께 수행하는 방법으로, 이름 그대로 SMOTE로 Oversampling , Tomek Links로 Undersampling을 수행한다. 

Tomek links
한 데이터에서 가장 가까운 데이터와 비교했을 떄 두 데이터가 다른 카테고리에 속하면 majority를 버리는 방식

 

즉, 소수 데이터와 가까운 다수 데이터를 버리기 때문에 경계가 모호한 데이터들이 사라질 수 있는 것이다. 

tomek links

 

SMOTE 수행 후 Tomek Link로 다수 클래스를 제외한 것이 바로 SMOTE-Tomerk이다.

6. GAN 

GAN은 생성자와 구분자로 구성되어 있고, 모델은 딥러닝을 사용하는 최신 오버 샘플링 기법이다.

 

무작위로 노이즈를 생성하고 생성자를 통해 가짜 샘플을 만든다.

 

그 후 구분자에서 진짜 샘플과 가짜 샘플을 판별하고 너무 쉽게 판별되는 경우 생성자에게 피드백을 준다. 

 

그러면 생성자는 더욱 진짜 샘플과 비슷한 가짜 샘플을 만들어내고 구분자에게 판별을 시킨다.

 

 

성자와 구분자가 서로 경쟁하며 업데이트되고, 결국 가짜 샘플은 진짜 샘플과 매우 유사한 형태로 생성게 된다. 


 

📝참고자료

https://givitallugot.github.io/articles/2021-07/Python-imbalanced-sampling-copy

https://blog.naver.com/PostView.naver?blogId=cathx618&logNo=222808848556