ADASYN Algorithm

이정훈·2025년 10월 31일

🧩 ADASYN (Adaptive Synthetic Sampling Approach)


📘 기본 개념

ADASYN (Adaptive Synthetic Sampling Approach)
SMOTE와 유사하게 Synthetic 데이터(합성 샘플) 를 생성하지만,
데이터 밀도가 낮은 영역에 더 많은 샘플을 생성하는 Adaptive Over-sampling 기법입니다.

즉, 소수 클래스(Minority Class) 중에서도 분포가 드문 영역에 가중치를 두어
학습이 어려운 경계 구간에서 모델의 성능을 높이는 방식입니다.


⚙️ 작동 원리

1️⃣ KNN 기반으로 "데이터가 부족한 정도" 측정

  • 각 소수 클래스 샘플에 대해 k개의 최근접 이웃(Nearest Neighbors) 을 찾습니다.
  • 각 샘플 주변의 다수 클래스 비율을 계산합니다.

    ri=다수 클래스 수Kr_i = \frac{\text{다수 클래스 수}}{K}

  • 이 비율(rir_i)을 통해 데이터가 부족한 정도(밀도 불균형) 를 평가합니다.
    → 다수 클래스가 많을수록 해당 소수 샘플은 밀도가 낮은 지역으로 판단됩니다.

2️⃣ “데이터가 부족한 정도”가 높은 소수 클래스 근처에 합성 샘플 생성

  • 각 소수 클래스 샘플의 상대적 부족 정도(rir_i)를 계산한 뒤,
    전체 부족 정도 합에 대한 비율로 생성할 샘플 수를 결정합니다.

gi=rijrj×Gg_i = \frac{r_i}{\sum_j r_j} \times G
G=(NmajorityNminority)×βG = (N_{\text{majority}} - N_{\text{minority}}) \times \beta

  • G: 전체적으로 생성해야 하는 합성 샘플 수
    예: 다수 클래스가 900개, 소수 클래스가 100개이면 → G = 800
    (단, 비율 조정 파라미터 β로 조절 가능하며, β=1이면 900:900으로 다수 클래스와 동일한 sample을 수로 조정)

3️⃣ 선형 보간(Interpolation)으로 합성 샘플 생성

  • 선택된 이웃과 현재 점 사이의 벡터를 구합니다.

diff=xneighborxidiff = x_{neighbor} - x_i

  • [0, 1] 구간의 난수 lambdalambda를 생성하여 보간합니다.

xnew=xi+λ×diffx_{\text{new}} = x_i + \lambda \times \text{diff}

  • 이렇게 하면 두 점 사이의 선분 위에서 새로운 합성 데이터가 생성됩니다.

4️⃣ gᵢ 횟수만큼 반복 수행

  • 위 과정을 각 소수 클래스 샘플마다 gig_i번 반복하여 합성 샘플을 생성합니다.
  • 결국, sumigi=Gsum_i g_i = G 이므로 전체적으로 G개의 새로운 소수 클래스 데이터가 만들어집니다.

💡 직관적 이해

  • rir_i는 각 샘플의 데이터 부족 정도를 의미합니다.
  • 전체 소수 클래스 중 rir_i의 비율에 따라 더 부족한 지역에 합성 샘플을 더 많이 생성합니다.
  • 결과적으로, 데이터가 부족한 경계 구간(boundary region)
    더 많은 샘플을 생성하여 모델이 어려운 구간에서도 잘 학습할 수 있도록 돕습니다.

🎯 핵심 요약

구분내용
목적데이터 밀도 불균형을 해소하기 위한 적응형 오버샘플링
특징경계 영역에 더 많은 합성 샘플 생성
기반 알고리즘KNN (k-Nearest Neighbors)
주요 수식gi=rijrj×Gg_i = \frac{r_i}{\sum_j r_j} \times G
효과학습 난이도가 높은 지역(경계 구간)의 성능 향상

결론
ADASYN은 “쉬운 영역보다 어려운 경계 구간에 더 많은 데이터를 추가”함으로써
데이터 불균형 문제를 더욱 정교하게 보정하는 방법입니다.

profile
AngDDo

0개의 댓글