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

2021.12.29

지난글 » 오버 샘플링 기법을 적용해 불균형 데이터 문제 해결하기 1편 – 불균형 데이터란? 에서는 현실에서 발생하는 다양한 불균형 데이터 문제와 이를 해결하기 위한 샘플링 기법을 소개하였습니다.  샘플링 기법은 다수 클래스에 속하는 데이터의 수를 줄이는 언더 샘플링과 소수 클래스에 속하는 데이터의 수를 늘리는 오버 샘플링으로 크게 분류할 수 있습니다. 이 글에서는 여러 샘플링 기법 중 SMOTE를 중심으로 데이터 샘플링의 작동 원리를 알아보도록 하겠습니다.


언더 샘플링

그림 1. Random Under-sampling

그림 1은 불균형 데이터의 분포를 시각화한 후 랜덤 언더 샘플링의 과정을 보여줍니다. 파란색으로 표시된 점은 다수 클래스에 해당하는 데이터, 녹색으로 표시된 점은 소수 클래스에 해당하는 데이터입니다. 다수 클래스에 속하는 데이터를 랜덤으로 제거해 가며 원하는 비율이 될 때까지 진행합니다. 이 샘플링 기법의 가장 큰 문제는 다수 클래스에 속하는 데이터가 무작위로 삭제되는 점을 감안 할 때 정보를 가진 많은 양의 데이터가 사라지고 이는 분류기의 성능을 저하시킬 수 요인이 될 수 있다는 점입니다. 데이터 수의 균형을 맞추는 대신 데이터의 손실이라는 위험이 발생하게 되고, 이를 개선하기 위해 무작위로 데이터를 제거하지 않는 다양한 방식의 언더 샘플링 기법들이 연구 되고 있습니다.

오버샘플링

그림 2. Random Over-sampling

그림 2는 랜덤 오버 샘플링으로 랜덤 언더 샘플링과는 반대로 소수 클래스 샘플을 랜덤하게 선택해 그 수를 늘리는 방식입니다. 그림으로는 색을 진하게 하는 것으로 표현하였는데 같은 데이터가 단순히 복제되는 것을 의미합니다. 데이터가 가진 값이 변하지 않아도 그 수가 늘어나면서 가중치를 받게 되는 원리라고 할 수 있습니다. 언더 샘플링 처럼 정보가 손실되는 문제가 발생하지는 않지만 이미 가지고 있는 데이터의 동일한 정보가 추가로 생성되는 것으로 학습 데이터에 대한 성능은 높을 수 있어도 새로운 데이터에 대해 제대로 동작하지 않는 “과적합” 문제가 발생할 수 있습니다.

SMOTE

SMOTE는 Synthetic Minority Oversampling Technique의 약자로 2002년에 소개 (https://www.jair.org/index.php/jair/article/view/10302/24590) 되었습니다. 이름에서도 알 수 있듯이 새로운 데이터를 합성하는 방식으로 소수 클래스의 데이터 수를 늘리는 방식입니다. 같은 데이터를 단순히 복제했던 랜덤 오버 샘플링 기법과 어떻게 다른지 아래에서 살펴보도록 하겠습니다.

그림 3. SMOTE

SMOTE 알고리즘의 컨셉은 다음과 같습니다.

  1) 소수 클래스 데이터 중 무작위로 한 점을 선택 (A)
  2) 이 점에서 가장 가까운 k개의 소수 클래스 데이터를 탐색
  3) 이 중 하나를 무작위로 선택 (B)
  4) 두 데이터 (A와 B)를 잇는 선을 긋고
  5) 그 선분 위의 임의의 점을 선택하여 합성 데이터 (C) 생성
  6) 원하는 만큼의 데이터가 생성될 때까지 반복

그림 3은 k 값을 3으로 설정한 예시로 SMOTE 과정의 일부를 나타냅니다. 최초 6개의 소수 클래스 중 임의의 한 데이터(A)를 선택하고 그 데이터로부터 가장 가까이에 위치한 다른 소수 클래스 데이터 3개를 찾습니다. 그 3개의 데이터 중에서 임의로 한 데이터(B)를 선택한 후에 두 데이터를 잇는 선을 긋습니다. 두 데이터의 차이(A-B)를 계산하고 이 차이에 0~1 사이의 임의의 수를 곱한 값을 A에 더해 새로운 합성 데이터(C)를 생성하게 됩니다. 이를 반복하여 원하는 수의 샘플을 얻는 것이 SMOTE 입니다.

SMOTE의 한계

SMOTE는 기존의 소수 클래스 데이터들을 보간하여 새로운 소수 클래스 데이터를 합성하는 방식으로 널리 알려져 있고 대표적인 오버샘플링 기법으로 아직까지 많이 활용되고 있습니다. 다만, 소수 클래스 데이터 사이에서 생성되는 방식은 결국 합성되는 데이터들은 소수 클래스 데이터 사이의 특성만을 반영하고 Noise 데이터에 취약하다는 한계가 존재합니다. 그림 3에서 생성된 8번째 소수 클래스 데이터는 주변 다수 클래스 데이터에 의해 둘러싸인 모습을 볼 수 있습니다. 이는 SMOTE 기법은 모든 소수 클래스 데이터를 대상으로 진행되기 때문입니다. 이를 해결하기 위하여 특정 소수 클래스 데이터를 대상으로 하는 여러 SMOTE 변형 기법이 등장하게 됩니다.

SMOTE의 변형

다음은 SMOTE의 변형인 Borderline-SMOTE입니다. 위에서 살펴본 SMOTE 알고리즘 1) ~ 6) 과정 중 1) 부분에서 모든 소수 클래스를 대상으로 하지 않고 특정 집단으로 분류 하는 과정이 추가가 되었다는 점이 가장 큰 특징입니다.

  1) 각각의 소수 클래스 데이터에서 가장 가까운 k개의 데이터를 탐색 
  2) 그 중 다수 클래스에 해당하는 데이터의 수(k`) 세기
  3) 데이터 분류
    a) 만약 모두가 다수 클래스(k` = k)라면 ➡ Noise 
    b) 절반 이상이 다수 클래스(k > k` ≥ k/2)라면 ➡ Danger
    c) 절반 미만이 다수 클래스(k` < k/2)라면 ➡  Safe
  4) 데이터 선택 또는 제외
    a) Noise 제외 : “다수 클래스들 틈에 소수 클래스가? Noise로 보고 무시하자!”
    b) Danger 선택 : “위험한(Danger)한 영역에 있으니 집중적으로 생성하자!”
    c) Safe 제외 : “비교적 안전한(Safe)한 곳에 있어 굳이 합성할 필요가 없겠다!”
  5) Danger에 해당하는 소수 클래스 데이터에 대해서만 SMOTE 진행
그림 4. Borderline-SMOTE

즉, 개개의 소수 클래스 데이터(이하 소수 데이터)에서 가장 가까운 이웃 데이터 k개를 탐색했을 때 k개 모두가 다수 클래스에 속하는 데이터(이하 다수 데이터)라면 그 소수 데이터는 다수 데이터의 한복판에 있는 데이터로서 Noise 데이터로 분류되고, 일정 수(k/2) 미만이라면 그 데이터는 소수 데이터에 둘러 싸여진 Safe 한 영역에 있는 데이터로 합성에서 제외됩니다. 즉, 주변에 다수 데이터가 일정 수(k/2) 이상으로 존재하는 Danger 영역의 소수 데이터만 선택되고 이 데이터들 사이에서만 SMOTE 알고리즘의 합성이 진행됩니다. 그림 4를 보면 k는 3으로서 k`가 0 또는 1인 경우에는 Safe, 2인 경우 Danger, 3인 경우 Noise로 분류되고 다수 클래스와 소수 클래스의 경계선(Borderline)이 형성되는 지점에 새로운 데이터의 합성이 집중되는 것을 볼 수 있습니다.

마치며

SMOTE는 랜덤 오버 샘플링처럼 소수 데이터 객체를 단순히 복제하여 발생하는 과적합 문제를 줄이기 위해 등장하였습니다. 하지만 SMOTE 계열 샘플링 기법의 근본적인 문제는 소수 데이터의 관점에서 가까운 이웃의 소수 데이터 사이에 선을 긋고 그 위에 데이터를 생성한다는 방식에서 발생합니다. 만약 소수 데이터와 소수 데이터 사이에 다수 데이터가 존재하는 경우 이 영역은 다수 클래스와 소수 클래스 데이터들이 혼재되어 경계 영역이 불분명해지는 문제(Overlapping)를 발생시킵니다. SMOTE에는 여러 가지 변형이 있고 Borderline-SMOTE처럼 다수 클래스와 인접한 경계에서만 소수 클래스의 합성을 하는 등 다양한 소수 데이터 선정 방식이 존재하지만, 결국 선정된 소수 데이터들 사이에서의 임의 데이터 생성은 주변의 다수 데이터의 존재를 고려하지 않습니다. 만약 임의의 데이터를 생성하는 과정에서 주변의 다수 데이터까지 고려하여 데이터를 합성한다면 보다 안전한 합성이 이루어져 Overlapping 문제를 극복 할 수 있지 않을까? 하는 발상에서 나온 논문이 바로 Radius-SMOTE입니다. 이어지는 다음 글에서 소개하도록 하겠습니다.


참고문헌

  1. Nitesh V. Chawla, Kevin W. Bowyer, Lawrence O. Hall, W. Philip Kegelmeyer, SMOTE: Synthetic Minority Over-sampling Technique, Journal of Artificial Intelligence Research 16 (2002) 321–357
  2. Hui HanWen-Yuan WangBing-Huan Mao,  Borderline-SMOTE: A New Over-Sampling Method in Imbalanced Data Sets Learning, International Conference on Intelligent Computing ICIC 2005: Advances in Intelligent Computing pp 878-887

Seungwon Jee

Machine Learning Engineer, ML Group

Seungwon Jee