Machine Learning/Preprocessing

SMOTE 오버샘플링

진성01 2022. 8. 9. 14:11

Over Sampling

 

분류 문제 중 간혹 클래스의 데이터 양이 균등하지 않은 경우가 있다. 예를들어 신용카드 기록 중 정상 기록과 신용카드 사기 기록을 분류한다고 할 때 모든 데이터셋에서 정상 기록이 월등히 많을 수 밖에 없다. 이렇게 불균등한 데이터셋으로 학습을 진행할 경우 모델이 bias를 가지게 되거나 데이터가 적은 클래스의 다양한 유형을 학습하지 못하는 문제가 있다. 이를 해결하기 위한 방법이 오버샘플링(Over Sampling)이다. 오버샘플링은 적은 데이터를 가진 클래스의 데이터를 다른 클래스와 동일한 크기로 증식시키는 방법이다. 

 

언더 샘플링(under sampling, 오버샘플링과는 반대로 많은 데이터를 가진 클래스의 데이터를 적은 데이터를 가진 클래스와 동일한 크기로 감소시키는 방법)또한 언급한 문제를 해결할 수 있는 방안이지만, 데이터가 많을수록 유리한 머신러닝에서 자주 사용되는 방법은 아니다.

 

가장 간단한 오버샘플링 방법은 데이터를 복제하는 것이다. 하지만 이 경우 과적합 문제가 발생하게 된다. 동일한 데이터를 복제할 경우 해당 데이터에 대해서만 여러번 학습하게 되므로 과적합이 발생하고, 새로운 데이터에 대해 원활히 동작하지 않게 된다.

 

SMOTE

 

SMOTE는 이러한 문제를 해결하기 위해 탄생한 오버샘플링 알고리즘이다. SMOTE는 데이터를 복제하지 않고 기존의 데이터를 기반으로 새로운 데이터를 생성해낸다.

오버 샘플링 기법을 적용해 불균형 데이터 문제 해결하기 2편 – SMOTE – Linewalks Blog

SMOTE는 기존의 데이터(A, B) 를 이용하여 새로운 데이터(C)를 생성한다. 위의 그림은 데이터를 보기 쉽도록 2차원 평면에 표현한 것이다(실제 경우 feature의 개수가 차원의 개수가 되고, 위의 그림을 feature가 2개인 데이터셋을 시각화 했다고 이해해도 좋다). SMOTE의 순서는 다음과 같다.

 

  1. 적은 클래스의 데이터를 무작위로 하나 선정한다.
  2. 해당 데이터에 근접한 데이터를 하나 선택한다.
  3. 두 데이터를 선분으로 잇는다.
  4. 선분위에 무작위로 하나의 점을 선택하여 데이터를 생성한다.

이렇게 생성된 데이터는 기존 데이터를 이용하여 새롭게 생성된 데이터이므로 과적합에 훨씬 강하다는 장점이 있다. 하지만 이는 실제 데이터가 아니기 때문에 데이터 자체의 신뢰도가 낮을 수 있고, 혹은 데이터를 생성하기 위해 선택한 데이터가 노이즈였을 경우 노이즈를 여러 개 복제하여 정확도가 낮아질 수 있다는 단점이 있다.

 

Borderline SMOTE

 

Borderline SMOTE는 SMOTE의 단점을 극복한 오버샘플링 알고리즘이다. Borderline SMOTE는 노이즈로 판단되거나 잘못된 데이터를 생성할 가능성이 있는 데이터(분류 경계선 근처의 데이터)는 제외하고, 안전한 데이터만을 이용하여 증식시킨다.

 

오버 샘플링 기법을 적용해 불균형 데이터 문제 해결하기 2편 – SMOTE – Linewalks Blog

 

Borderline SMOTE는 선정한 데이터에서 k개의 이웃 데이터를 탐색한다. 그 중 선정 데이터와 이웃 데이터의 클래스가 같은 지 다른 지 검사하고, 다른 클래스가 일정 개수 이상일 경우 위험한 데이터로 간주하여 다른 데이터를 선정하게 된다. 이렇게 위험한 데이터를 피하면서 오버샘플링하면 SMOTE의 단점인 잘못된 데이터를 생성하거나 노이즈를 이용하여 데이터를 생성하는 등의 문제를 해결할 수 있다.

 

 

참고: 오버 샘플링 기법을 적용해 불균형 데이터 문제 해결하기 2편 – SMOTE – Linewalks Blog