🧩 ADASYN (Adaptive Synthetic Sampling Approach)
📘 기본 개념
ADASYN (Adaptive Synthetic Sampling Approach) 은
SMOTE와 유사하게 Synthetic 데이터(합성 샘플) 를 생성하지만,
데이터 밀도가 낮은 영역에 더 많은 샘플을 생성하는 Adaptive Over-sampling 기법입니다.
즉, 소수 클래스(Minority Class) 중에서도 분포가 드문 영역에 가중치를 두어
학습이 어려운 경계 구간에서 모델의 성능을 높이는 방식입니다.
⚙️ 작동 원리
1️⃣ KNN 기반으로 "데이터가 부족한 정도" 측정
- 각 소수 클래스 샘플에 대해 k개의 최근접 이웃(Nearest Neighbors) 을 찾습니다.
- 각 샘플 주변의 다수 클래스 비율을 계산합니다.
ri=K다수 클래스 수
- 이 비율(ri)을 통해 데이터가 부족한 정도(밀도 불균형) 를 평가합니다.
→ 다수 클래스가 많을수록 해당 소수 샘플은 밀도가 낮은 지역으로 판단됩니다.
2️⃣ “데이터가 부족한 정도”가 높은 소수 클래스 근처에 합성 샘플 생성
- 각 소수 클래스 샘플의 상대적 부족 정도(ri)를 계산한 뒤,
전체 부족 정도 합에 대한 비율로 생성할 샘플 수를 결정합니다.
gi=∑jrjri×G
G=(Nmajority−Nminority)×β
- G: 전체적으로 생성해야 하는 합성 샘플 수
예: 다수 클래스가 900개, 소수 클래스가 100개이면 → G = 800
(단, 비율 조정 파라미터 β로 조절 가능하며, β=1이면 900:900으로 다수 클래스와 동일한 sample을 수로 조정)
3️⃣ 선형 보간(Interpolation)으로 합성 샘플 생성
- 선택된 이웃과 현재 점 사이의 벡터를 구합니다.
diff=xneighbor−xi
- [0, 1] 구간의 난수 lambda를 생성하여 보간합니다.
xnew=xi+λ×diff
- 이렇게 하면 두 점 사이의 선분 위에서 새로운 합성 데이터가 생성됩니다.
4️⃣ gᵢ 횟수만큼 반복 수행
- 위 과정을 각 소수 클래스 샘플마다 gi번 반복하여 합성 샘플을 생성합니다.
- 결국, sumigi=G 이므로 전체적으로 G개의 새로운 소수 클래스 데이터가 만들어집니다.
💡 직관적 이해
- ri는 각 샘플의 데이터 부족 정도를 의미합니다.
- 전체 소수 클래스 중 ri의 비율에 따라 더 부족한 지역에 합성 샘플을 더 많이 생성합니다.
- 결과적으로, 데이터가 부족한 경계 구간(boundary region) 에
더 많은 샘플을 생성하여 모델이 어려운 구간에서도 잘 학습할 수 있도록 돕습니다.
🎯 핵심 요약
| 구분 | 내용 |
|---|
| 목적 | 데이터 밀도 불균형을 해소하기 위한 적응형 오버샘플링 |
| 특징 | 경계 영역에 더 많은 합성 샘플 생성 |
| 기반 알고리즘 | KNN (k-Nearest Neighbors) |
| 주요 수식 | gi=∑jrjri×G |
| 효과 | 학습 난이도가 높은 지역(경계 구간)의 성능 향상 |
✅ 결론
ADASYN은 “쉬운 영역보다 어려운 경계 구간에 더 많은 데이터를 추가”함으로써
데이터 불균형 문제를 더욱 정교하게 보정하는 방법입니다.