[ML] SVM 이론

YJCho·2024년 11월 4일

Machine Learning

목록 보기
7/7

1) 예측

선형 SVM 모델 → 단순히 결정 함수를 계산해서 새로운 샘플 x의 클래스 예측
결정 함수 : θTx=θ0+θ1x1++θnxn\boldsymbol{\theta}^T \textbf{x} = \theta_0 +\theta_1 x_1 + \cdots + \theta_n x_n

| 결과 > 0 → 양성(1)
| 결과 ≤ 0 → 음성(0)

➡️ 선형 SVM 분류기로 예측하는 것은LogisticRegression과 같음!

2) 훈련

충족해야 하는 조건
✅ 마진 오류 횟수 제한
✅ 마진 커지게 하는 가중지 벡터 w\textbf w와 편향 bb 찾기

s=wx+b\textbf s=\textbf w \textbf x+b

w\textbf w ↑ : 마진 ↓
bb : 마진 크기에 영향 X

도로 넓히려면 w\textbf w 가능한 한 작게 유지해야함

하드 마진 선형 SVM 분류기의 목적 함수

Hard margin linear SVM classifier objective

minimizew,b12wTw\text{minimize}_{\mathbf{w}, b} \quad \frac{1}{2} \mathbf{w}^T \mathbf{w} \\
subject tot(i)(wTx(i)+b)1,for i=1,2,,m\text{subject to} \quad t^{(i)} \left( \mathbf{w}^T \mathbf{x}^{(i)} + b \right) \geq 1, \quad \text{for } i = 1, 2, \dots, m

소프트 마진 분류기 목적 함수 구성하려면 각 샘플에 대해
샘플 변수 (slack variable) ζ(i)0\zeta^{(i)} \geq 0 도입 필요

ζ(i)\zeta^{(i)} : ii번째 샘플이 얼마나 마진을 위반할 지 결정

목표 1 : 마진 오류 최소화를 위해 슬랙 변수 최소화
목표 2 : 마진 최대화를 위해 12wTw\frac{1}{2} \mathbf{w}^T \mathbf{w} 최소화

목표 1과 2 상충 : 마진을 최대화하려면 마진을 넓게 가져가야 하지만, 슬랙 변수를 최소화하려면 모든 포인트가 마진 바깥에 놓여야 함.

→하이퍼파라미터 C로 이 두 목표의 트레이드 오프 정의

✅ C가 크다

  • 슬랙 변수에 대한 패널티가 크다
  • 모델이 슬랙 변수를 최소화하려고 한다
    → 이는 마진을 좁히면서 오차를 줄이는 방향으로 작용

✅ C가 작다

  • 마진을 최대화하는 것이 더 중요한 목표가 됨.
  • 일부 데이터 포인트가 마진을 침범하더라도 넓은 마진을 유지하고자 함

소프트 마진 선형 SVM 분류기의 목적 함수

Soft margin linear SVM classifier objective

minimizew,b,ζ12wTw+Ci=1mζ(i)\text{minimize}_{\mathbf{w}, b, \zeta} \quad \frac{1}{2} \mathbf{w}^T \mathbf{w} + C \sum_{i=1}^{m} \zeta^{(i)}
subject tot(i)(wTx(i)+b)1ζ(i),ζ(i)0,for i=1,2,,m\text{subject to} \quad t^{(i)} \left( \mathbf{w}^T \mathbf{x}^{(i)} + b \right) \geq 1 - \zeta^{(i)}, \quad \zeta^{(i)} \geq 0, \quad \text{for } i = 1, 2, \dots, m

3) QP 문제

하드 마진 과 소프트 마진 문제는 모두 선형적인 제약 있는 볼록 함수의 이차 최적화 문제 → Quadratic programming 문제라고 함!

SVM 훈련 방법

  • QP solver 사용
  • 경사하강법 → hinge loss와 squared hinge loss 최소화

<과정>

  • 양성 클래스 샘플 x\mathbf{x} (t=1)가 주어질 때...
    - 결정 함수 s > 1 → 손실 0 (도로에서 벗어나 샘플이 양성 클래스에 위치)
  • 음성 클래스 샘플 x\mathbf{x} (t=-1)가 주어질 때...
    • 결정 함수 s ≤ -1 → 손실 0 (도로에서 벗어나 샘플이 음성 클래스에 위치)
  • 샘플이 마진에서 멀어질수록 손실이 커짐
    • 힌지 손실 : 선형적으로
    • 제곱 힌지 손실 : 이차 방정식으로
      • 이상치에 더 민감하게 반응
      • 이상치가 없으면 더 빨리 수렴

LinearSVC : 제곱 힌지 사용
SGDClassifier : 힌지 손실 사용

SGDClassifier

  • 보통 힌지 손실 사용하지만 옵션에는
    hinge loss와 squared hinge loss 두 개 다 있음!
  • Loss 항목 :
loss{‘hinge’, ‘log_loss’, ‘modified_huber’, ‘squared_hinge’, 
‘perceptron’, ‘squared_error’, ‘huber’, ‘epsilon_insensitive’, 
‘squared_epsilon_insensitive’}, default=’hinge’

SVC 클래스의 최적화 알고리즘은 힌지 손실을 최소화하는 것과 유사한 솔루션 찾음.

참고한 문서 : [사이킷런 SGDClassifier]

profile
호로록

0개의 댓글