본문 바로가기
Study/Data Science

[Data Science] 데이터의 편향 완화 전략 : 데이터 균형화 (오버샘플링 & 언더샘플링)

by ngool 2024. 12. 5.

일반적으로 우리는 데이터를 수집해야하는 상황보다 다른 기관에서 데이터를 받아 분석하는 경우가 더 많습니다.

그러나 그렇게 받은 데이터에 클래스 불균형이 존재한다면? 편향이 발생하게 되겠죠..

 

그래서 우리는 이러한 클래스 불균형을 해소할 수 있는 방법을 알고 있어야합니다.

대표적으로는 이렇게 두 가지가 있습니다.

  • 오버 샘플링
  • 언더 샘플링

많이 들어보셨죠?

이것들이 각각 어떤 것인지, 단점은 무엇인지 알아보고,

각 샘플링에는 대표적으로 어떤 방법들이 있는지 한번 알아보도록 하죠!


📌 오버 샘플링

 

오버 샘플링이란, 소수 클래스의 데이터를 늘리는 것을 말합니다.

데이터가 상대적으로 적은 클래스를 증폭시켜 클래스 불균형을 해소할 수 있지만,

노이즈가 증폭될 가능성이 있다는 단점이 있습니다.

 

이제 대표적인 오버 샘플링 방법들을 살펴보겠습니다!


SMOTE(Synthetic Minority Oversampling Technique)

  • 소수 클래스의 데이터를 기반으로 새로운 데이터를 합성
  • 이웃 데이터 포인트 사이에 임의의 값을 생성


ADASYN(Adaptive Synthetic Sampling Approach)

  • 소수 클래스의 데이터를 확대하되, 데이터 분포의 복잡성을 고려하여 생성
  • 학습하기 어려운 샘플(즉, 소수 클래스 데이터 주변에 다수 클래스 데이터가 많은 경우)에 더 많은 데이터 생성


SMOTE와 ADASYN 비교

특징 SMOTE ADASYN
샘플링 방식 균일하게 샘플을 생성 모델 학습에 어려운 영역에 더 많은 샘플 생성
데이터 밀도 데이터 분포의 불균형을 고려하지 않음 소수 클래스 데이터 분포의 불균형 반영
적용 영역 단순한 데이터 불균형 문제 해결에 적합 복잡한 경계 문제를 해결할 때 적합

📌 언더 샘플링

 

언더 샘플링이란, 다수 클래스의 데이터를 줄이는 것을 말합니다.

데이터가 상대적으로 많은 클래스를 축소시켜 클래스 불균형을 해소할 수 있지만,

정보 손실 가능성이 있다는 단점이 있습니다.

 

이제 대표적인 언더 샘플링 방법들을 살펴보겠습니다!


Tomek Links

  • Tomek Links가장 가까운 두 데이터를 묶었을 때 각 데이터가 서로 다른 클래스에 속하는 것을 의미 (= 모호한 데이터들)
  • 이들을 찾아 제거하여 데이터의 경계를 명확히 하고 모델이 경계에서 더 정확히 학습할 수 있도록 도움


CNN(Condensed Nearest Neighbor)

  • 다수 클래스에서 데이터 하나를 뽑고, 소수 클래스 전체를 합집합한 것을 S 집합이라 둠
  • 다수 클래스 데이터 중 하나를 뽑아 소수 클래스와 더 가까우면 해당 데이터를 S에 포함시킴
  • 더 이상 선택되는 데이터가 없을 때까지 이를 반복 (1-NN으로 분류되지 않는 데이터만 남기는 것)


📌 복합 샘플링

그렇다면 꼭 오버 샘플링, 언더 샘플링 중 하나만 선택해야 할까요?

그렇지 않습니다! 필요에 따라 당연히 두 가지를 복합해서 사용할 수 있죠!

 

오버 샘플링과 언더 샘플링을 복합해서 사용하는 대표적인 복합 샘플링 방법들을 살펴보죠!


SMOTE-Tomek

  • SMOTE로 오버샘플링 수행하여 데이터를 증강
  • 증강된 데이터에서 경계에 위치한 Tomek-Links를 찾아 제거


OSS(One Sided Selection)

  • Tomek Links 데이터셋의 경계를 확실히 만듦
  • 이후 CNN을 적용하여 경계와 멀리 떨어진 데이터를 제거