서포트 벡터 머신

서포트 벡터 머신 (Support Vector Machine, SVM) #

서포트 벡터 머신(Support Vector Machine, SVM)은 통계적 학습 이론을 기반으로 한 강력한 분류 및 회귀 알고리즘이다. SVM의 핵심 아이디어는 클래스 간의 경계(결정 경계)를 최대한 넓게 만들어 일반화 성능을 향상시키는 것이다. 이 넓은 경계를 “마진(margin)“이라고 하며, 마진을 최대화하는 것이 SVM의 목표이다.

SVM의 기본 개념 #

1. 결정 경계와 마진 #

  • 결정 경계(Decision Boundary): 클래스를 구분하는 초평면(hyperplane)
  • 마진(Margin): 결정 경계와 가장 가까운 데이터 포인트들 사이의 거리
  • 서포트 벡터(Support Vector): 마진 경계에 위치한 데이터 포인트들

2. 최적 분리 초평면 #

SVM은 다음 조건을 만족하는 최적의 초평면을 찾는다:

  • 모든 훈련 데이터를 올바르게 분류
  • 마진을 최대화

수학적으로 초평면은 다음과 같이 표현된다:

$$w^T x + b = 0$$

여기서 $w$는 가중치 벡터, $b$는 편향이다.

선형 SVM #

1. 하드 마진 SVM (Hard Margin SVM) #

데이터가 선형적으로 완전히 분리 가능한 경우 사용한다.

목적 함수:

$$\min_{w,b} \frac{1}{2}||w||^2$$

제약 조건:

$$y_i(w^T x_i + b) \geq 1, \quad i = 1, 2, ..., n$$

2. 소프트 마진 SVM (Soft Margin SVM) #

데이터가 선형적으로 완전히 분리되지 않는 경우 사용하며, 일부 오분류를 허용한다.

목적 함수:

$$\min_{w,b,\xi} \frac{1}{2}||w||^2 + C\sum_{i=1}^{n} \xi_i$$

제약 조건:

$$y_i(w^T x_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0$$

여기서:

  • $\xi_i$: 슬랙 변수(오분류나 마진 내부 허용)
  • $C$: 정규화 매개변수(마진과 오분류 간의 균형 조절)

커널 트릭 (Kernel Trick) #

선형적으로 분리되지 않는 데이터를 고차원 공간으로 매핑하여 선형 분리가 가능하도록 만드는 기법이다.

1. 커널 함수의 종류 #

1) 선형 커널 (Linear Kernel)

$$K(x_i, x_j) = x_i^T x_j$$

2) 다항식 커널 (Polynomial Kernel)

$$K(x_i, x_j) = (x_i^T x_j + c)^d$$
  • $d$: 다항식의 차수
  • $c$: 상수항

3) RBF 커널 (Radial Basis Function Kernel)

$$K(x_i, x_j) = \exp(-\gamma ||x_i - x_j||^2)$$
  • $\gamma$: 커널 계수 (높을수록 복잡한 결정 경계)

4) 시그모이드 커널 (Sigmoid Kernel)

$$K(x_i, x_j) = \tanh(\gamma x_i^T x_j + c)$$

2. 커널의 선택 기준 #

  • 선형 커널: 특성 수가 많고 데이터가 선형적으로 분리 가능한 경우
  • RBF 커널: 가장 일반적으로 사용, 비선형 패턴이 복잡한 경우
  • 다항식 커널: 특정 차수의 상호작용이 중요한 경우

라그랑주 승수법과 대우 문제 #

SVM의 최적화 문제는 라그랑주 승수법을 통해 대우 문제(dual problem)로 변환된다:

대우 문제:

$$\max_{\alpha} \sum_{i=1}^{n} \alpha_i - \frac{1}{2} \sum_{i=1}^{n} \sum_{j=1}^{n} \alpha_i \alpha_j y_i y_j K(x_i, x_j)$$

제약 조건:

$$0 \leq \alpha_i \leq C, \quad \sum_{i=1}^{n} \alpha_i y_i = 0$$

여기서 $\alpha_i$는 라그랑주 승수이다.

SVM의 장점 #

  1. 강력한 일반화: 마진 최대화로 과적합 방지
  2. 고차원 데이터: 특성 수가 샘플 수보다 많아도 효과적
  3. 메모리 효율성: 서포트 벡터만 저장하면 됨
  4. 커널 트릭: 비선형 패턴을 효과적으로 처리
  5. 전역 최적해: 볼록 최적화 문제로 전역 최적해 보장
  6. 노이즈 저항성: 아웃라이어에 상대적으로 강함

SVM의 단점 #

  1. 긴 훈련 시간: 큰 데이터셋에서 O(n³) 시간 복잡도
  2. 확률 정보 없음: 분류 확률을 직접 제공하지 않음
  3. 하이퍼파라미터 민감성: C와 γ 값에 민감
  4. 스케일링 필요: 특성들의 스케일에 민감
  5. 해석 어려움: 특히 비선형 커널 사용 시

주요 하이퍼파라미터 #

1. C (정규화 매개변수) #

  • 큰 C: 하드 마진에 가까움, 과적합 위험
  • 작은 C: 소프트 마진, 단순한 모델

2. γ (RBF 커널 계수) #

  • 큰 γ: 복잡한 결정 경계, 과적합 위험
  • 작은 γ: 단순한 결정 경계, 과소적합 위험

3. kernel (커널 종류) #

  • 데이터의 특성과 문제의 복잡도에 따라 선택

다중 클래스 분류 #

SVM은 본래 이진 분류를 위한 알고리즘이지만, 다중 클래스로 확장할 수 있다:

1. One-vs-One (OvO) #

  • k개 클래스에 대해 k(k-1)/2개의 이진 분류기 훈련
  • 다수결 투표로 최종 클래스 결정

2. One-vs-Rest (OvR) #

  • k개 클래스에 대해 k개의 이진 분류기 훈련
  • 각 분류기는 하나의 클래스 vs 나머지 클래스

실제 적용 예시 #

1. 텍스트 분류 #

  • 문서 분류, 스팸 필터링
  • 고차원 특성 공간에서 효과적

2. 이미지 분류 #

  • 얼굴 인식, 객체 분류
  • 비선형 패턴 인식에 강함

3. 생물정보학 #

  • 유전자 분류, 단백질 구조 예측
  • 고차원 생물학적 데이터 처리

4. 금융 분야 #

  • 신용 위험 평가, 사기 탐지
  • 노이즈가 많은 금융 데이터에 효과적

SVM 회귀 (SVR) #

SVM은 회귀 문제에도 적용할 수 있다:

1. ε-SVR #

허용 오차 ε 내의 예측은 손실 없음으로 간주

목적 함수:

$$\min_{w,b,\xi,\xi^*} \frac{1}{2}||w||^2 + C\sum_{i=1}^{n} (\xi_i + \xi_i^*)$$

2. ν-SVR #

서포트 벡터의 비율을 직접 제어

성능 최적화 #

1. 데이터 전처리 #

  • 스케일링: StandardScaler 또는 MinMaxScaler 사용
  • 특성 선택: 불필요한 특성 제거
  • 노이즈 제거: 아웃라이어 처리

2. 하이퍼파라미터 튜닝 #

  • 그리드 서치: C와 γ의 격자 탐색
  • 랜덤 서치: 무작위 매개변수 조합 시도
  • 베이지안 최적화: 효율적인 매개변수 탐색

3. 커널 선택 #

  • 교차 검증: 다양한 커널의 성능 비교
  • 도메인 지식: 문제 특성에 맞는 커널 선택

확률 추정 #

SVM은 기본적으로 확률을 제공하지 않지만, 다음 방법으로 확률을 추정할 수 있다:

1. 플랫 스케일링 (Platt Scaling) #

SVM의 출력을 시그모이드 함수에 통과시켜 확률로 변환

2. 교차 검증 기반 보정 #

교차 검증을 통한 확률 보정

최근 발전과 변형 #

1. 온라인 SVM #

스트리밍 데이터를 위한 온라인 학습 버전

2. 다중 인스턴스 SVM #

여러 인스턴스를 포함하는 백(bag) 단위 학습

3. 구조적 SVM #

구조화된 출력을 위한 SVM 확장

4. 딥 SVM #

딥러닝과 SVM을 결합한 하이브리드 모델

다른 알고리즘과의 비교 #

vs 로지스틱 회귀 #

  • SVM: 마진 최대화, 서포트 벡터만 중요
  • 로지스틱 회귀: 모든 데이터 포인트 고려, 확률적 해석

vs 랜덤 포레스트 #

  • SVM: 이론적 기반 강함, 하이퍼파라미터 민감
  • 랜덤 포레스트: 실용적, 하이퍼파라미터 덜 민감

vs 신경망 #

  • SVM: 전역 최적해, 과적합 방지
  • 신경망: 표현 능력 강함, 지역 최적해 위험

구현 시 고려사항 #

1. 데이터 크기 #

  • 작은 데이터셋: 모든 커널 시도 가능
  • 큰 데이터셋: 선형 커널이나 근사 방법 고려

2. 특성 수 #

  • 고차원: 선형 커널 효과적
  • 저차원: 비선형 커널 고려

3. 클래스 불균형 #

  • class_weight 매개변수로 클래스 가중치 조정
  • SMOTE 등의 오버샘플링 기법 적용

SVM은 이론적으로 탄탄하고 실제로도 강력한 성능을 보이는 알고리즘이다. 특히 고차원 데이터나 복잡한 비선형 패턴이 있는 문제에서 뛰어난 성능을 발휘한다. 다만 큰 데이터셋에서는 훈련 시간이 오래 걸릴 수 있으므로, 데이터의 크기와 특성을 고려하여 사용해야 한다.