SMOTE Algorithm

이정훈·2025년 10월 31일

🧩 SMOTE (Synthetic Minority Over-sampling Technique)

  • 소수 클래스의 데이터 포인트를 합성적(인위적)으로 생성하는 오버샘플링 기법

⚙️ SMOTE 알고리즘 절차 정리

1️⃣ 소수 클래스(Minority Class) 데이터 선택

전체 데이터 중 소수 클래스의 각 샘플을 순회하며 대상 점을 하나씩 선택합니다.


2️⃣ k-최근접 이웃 탐색

선택한 소수 클래스 샘플을 기준으로
같은 클래스 내에서 k개의 최근접 이웃(nearest neighbors) 을 찾습니다.


3️⃣ 이웃 샘플과 벡터 계산

선택된 이웃 샘플과 현재 점 사이의 벡터 차이를 계산합니다.

(이웃점 – 현재점)


4️⃣ 보간(Interpolation)을 통한 새로운 샘플 생성

위에서 구한 벡터에 [0, 1] 구간의 난수 가중치를 곱합니다.
이 값을 현재 점에 더해줌으로써,
두 점 사이의 선분 상에 새로운 합성 샘플(Synthetic Sample) 을 생성합니다.


5️⃣ 반복 수행

위 과정을 반복하여 필요한 수만큼의 소수 클래스 데이터를 증강(Over-sampling) 합니다.


코드

from imblearn.over_sampling import SMOTE

smote = SMOTE(random_state=42)
X_train_over, y_train_over = smote.fit_sample(X_train, y_train)```
profile
AngDDo

0개의 댓글