SVM (Support Vector Machine)

이정훈·2025년 12월 20일

SVM (Support Vector Machine)

  • 마진 최대화: 같은 기울기를 가진 두 서포트 벡터 사이의 간격(Margin)이 가장 넓어지는 최적의 결정 경계를 찾는 문제
  • 데이터 분류: ⊕벡터 위에는 ⊕데이터만, ⊖벡터 아래에는 ⊖데이터만 존재하도록 데이터를 엄격하게 구분

동작 과정

1. Hyperplane 정의

  • Hyperplane을 vector의 내적 형태로 정의
    • 법선 벡터 w\mathbf{w}에 정사영시킨 x\mathbf{x}의 길이(xcosθ\|\mathbf{x}\| \cos \theta)가 항상 일정(Cw\frac{C}{\|\mathbf{w}\|})한 점들의 집합
    • Hyperplane은 법선 벡터 w\mathbf{w}와 항상 수직 (내적의 정의)
      wTx=C\mathbf{w}^T \mathbf{x} = C

2. 마진(Margin)의 유도

  • 두 support vector를 각각 ⊕: (wTx=C+1\mathbf{w}^T \mathbf{x} = C + 1)과 ⊖: (wTx=C1\mathbf{w}^T \mathbf{x} = C - 1)로 정의
  • 원점에서 각각의 support vector까지의 수직 거리를 구하고 차이를 계산
    dist+=C+1w\text{dist}_+ = \frac{C+1}{\|\mathbf{w}\|} (원점에서 +경계까지의 수직 거리)
    dist=C1w\text{dist}_- = \frac{C-1}{\|\mathbf{w}\|} (원점에서 -경계까지의 수직 거리)
margin=(C+1)(C1)w=2w\text{margin} = \frac{(C+1) - (C-1)}{\|\mathbf{w}\|} = \frac{2}{\|\mathbf{w}\|}

3. 최적화 문제

  • 마진(2w\frac{2}{\|\mathbf{w}\|})을 최대화, 계산의 편의를 위해 12w2\frac{1}{2}\|\mathbf{w}\|^2을 최소화 문제로 재정의
  • 모든 데이터는 결정 경계 밖의 정해진 영역에 있어야 한다는 제약 조건
min12w22\min \frac{1}{2}\|\mathbf{w}\|^2_2
s.t. yi(wTxi+C)1,i=1,2,,n\text{s.t. } y_i(\mathbf{w}^T \mathbf{x}_i + C) \ge 1, \quad i=1, 2, \dots, n

4. Lagrangian Function

L(w,C,α)=12w2i=1nαi[yi(wTxiC)1]L(\mathbf{w}, C, \alpha) = \frac{1}{2}\|\mathbf{w}\|^2 - \sum_{i=1}^{n} \alpha_i [y_i(\mathbf{w}^T \mathbf{x}_i - C) - 1]

5. KKT condition

  • w\mathbf{w}에 대한 미분

    Lw=wi=1nαiyixi=0    w=i=1nαiyixi\frac{\partial L}{\partial \mathbf{w}} = \mathbf{w} - \sum_{i=1}^{n} \alpha_i y_i \mathbf{x}_i = 0 \implies \mathbf{w} = \sum_{i=1}^{n} \alpha_i y_i \mathbf{x}_i
  • Dual Problem 변환 (위 미분 결과를 라그랑주 함수 LL에 대입) → α\alpha에 대한 최대화 문제

Maximize W(α)=i=1nαi12i=1nj=1nαiαjyiyj(xiTxj)\text{Maximize } W(\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 (\mathbf{x}_i^T \mathbf{x}_j)
  • 제약 조건 (Subject to)
    i=1nαiyi=0\sum_{i=1}^{n} \alpha_i y_i = 0αi0(i=1,,n)\alpha_i \ge 0 \quad (i=1, \dots, n)

내적 계산 (xiTxj\mathbf{x}_i^T \mathbf{x}_j)으로 kernel trick 적용에 용이
최적화 결과 αi>0\alpha_i > 0인 데이터들만이 최종 경계를 결정하는 Support Vector


SVM 파라미터 정리

C

  • 오차를 얼마나 허용할지 설정하는 변수 (규제, regularization 파라미터)

  • 목적 함수의 변화

    • Hard margin: Minimize W22\dfrac{\|W\|^2}{2}

      s.t. yi(Wxi+b)1,i\text{s.t. } y_i(W \cdot x_i + b) \geq 1, \quad \forall i

    • Soft margin: Minimize W22+Ciξi\dfrac{\|W\|^2}{2} + C \sum_i \xi_i

      s.t. yi(Wxi+b)1ξi,ξi0,i\text{s.t. } y_i(W \cdot x_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0, \quad \forall i

  • 제약조건 의미

    • Hard margin: 모든 데이터가 마진 바깥쪽에 정확히 위치해야 함 (오차 허용 X)
    • Soft margin: ξi\xi_i(슬랙 변수, slack variable)를 도입해 일부 데이터가 마진을 침범하거나 오분류되는 것을 허용
      • ξi=0\xi_i = 0 : 마진 위 또는 바깥쪽 (정상 분류)
      • 0<ξi10 < \xi_i \leq 1 : 마진 안쪽이지만 결정 경계 기준으로는 정상 분류
      • ξi>1\xi_i > 1 : 오분류
  • C가 크면 오차항(ξi\sum \xi_i)이 목적 함수에서 차지하는 비중이 커져서 오차를 허용하지 않으려 함

    • 마진이 좁아지고, 훈련 데이터에 민감해져 과적합(overfitting) 위험 증가
  • C가 작으면 일부 오차를 허용하는 대신 마진을 넓게 잡아 일반화 성능을 높일 수 있음

    • 너무 작으면 과소적합(underfitting) 위험

kernel

  • 데이터를 더 높은 차원으로 투영(mapping)하여 원래 공간에서는 선형 분리가 불가능한 데이터를 선형 분리 가능하게 만드는 기법
  • 커널 트릭(kernel trick)을 사용하면 실제로 고차원으로 데이터를 변환하지 않고도 내적(inner product)만으로 계산 가능

(1) Linear 커널

K(x,x)=xxK(\mathbf{x}, \mathbf{x}') = \mathbf{x} \cdot \mathbf{x}'

  • 벡터 내적을 그대로 사용 (비선형 변환 없음)
  • 고차원 변환 없이 선형 경계만 학습
  • 데이터가 선형적으로 잘 구분되거나, 피처 수가 매우 많을 때(예: 텍스트 데이터) 적합
clf_linear = SVC(kernel='linear')

(2) Polynomial(Poly) 커널

K(x,x)=(γ(xx)+r)dK(\mathbf{x}, \mathbf{x}') = (\gamma \cdot (\mathbf{x} \cdot \mathbf{x}') + r)^d

파라미터

  • degree = d : 다항식 차수

  • gamma : 스케일 계수 (기본값은 1/nfeatures1/n_{\text{features}})

  • coef0 = r : 상수항

  • 비선형 경계 학습 가능

  • degree가 커질수록 더 복잡한 결정 경계를 학습하지만 과적합 위험도 증가

clf_poly = SVC(kernel='poly', degree=3, gamma='scale', coef0=1)

(3) RBF (Radial Basis Function, Gaussian) 커널

K(x,x)=exp(γxx2)K(\mathbf{x}, \mathbf{x}') = \exp(-\gamma \cdot \|\mathbf{x} - \mathbf{x}'\|^2)

파라미터

  • gamma : 분포 폭 조절

    • 크면 좁은 영역에만 영향 → 결정 경계가 복잡해지고 과적합 위험 증가
    • 작으면 넓은 영역에 영향 → 결정 경계가 단순해지고 과소적합 위험 증가
  • 가장 많이 쓰이는 비선형 커널

  • 비선형 분리 문제에 효과적

  • 무한 차원 공간으로 매핑하여 초평면으로 분리하는 효과

clf_rbf = SVC(kernel='rbf', gamma='scale')

(4) Sigmoid 커널

K(x,x)=tanh(γ(xx)+r)K(\mathbf{x}, \mathbf{x}') = \tanh(\gamma \cdot (\mathbf{x} \cdot \mathbf{x}') + r)

파라미터

  • gamma : 스케일 계수

  • coef0 = r : 이동 상수

  • 신경망의 활성화 함수(tanh)와 유사한 형태

  • 특정 파라미터 조합에서는 항상 유효한 커널(양의 정부호)이 아닐 수 있어 실무에서는 RBF보다 사용 빈도가 낮음

clf_sigmoid = SVC(kernel='sigmoid', gamma='scale', coef0=0)

요약 표

kernel수식주요 파라미터특징
linearxxx \cdot x'-고차원 변환 없음, 선형 분리
poly(γxx+r)d(\gamma x \cdot x' + r)^dgamma, coef0, degree다항식 변환
rbfexp(γxx2)\exp(-\gamma \|x - x'\|^2)gamma가우시안, 비선형, 가장 많이 사용
sigmoidtanh(γxx+r)\tanh(\gamma x \cdot x' + r)gamma, coef0신경망과 유사한 S자형

gamma

  • poly, rbf, sigmoid 커널에서 사용되는 파라미터로, 하나의 학습 데이터 샘플이 미치는 영향력의 범위를 결정
  • 직관적으로는 "하나의 데이터 포인트가 얼마나 멀리까지 영향을 주는가"를 조절하는 값

gamma는 커널 함수에서 무엇을 계산하는가

  • gamma(γ)는 커널 함수 K(x,x)K(\mathbf{x}, \mathbf{x}') 안에서 두 데이터 포인트 사이의 거리(또는 내적) 값을 스케일링하는 계수

  • 예를 들어 RBF 커널의 경우:

    K(x,x)=exp(γxx2)K(\mathbf{x}, \mathbf{x}') = \exp(-\gamma \cdot \|\mathbf{x} - \mathbf{x}'\|^2)

    • xx2\|\mathbf{x} - \mathbf{x}'\|^2 : 두 점 사이의 유클리드 거리(제곱)
    • γ\gamma : 이 거리 값을 얼마나 증폭/축소시킬지 정하는 계수
  • γ가 클 때: 거리가 조금만 벌어져도 지수 함수 값이 급격히 작아짐 → 아주 가까운 점끼리만 "유사하다"고 판단 → 영향 범위가 좁아짐

  • γ가 작을 때: 거리가 벌어져도 지수 함수 값이 천천히 줄어듦 → 멀리 있는 점까지 "유사하다"고 판단 → 영향 범위가 넓어짐

  • 즉, γ 자체는 커널 함수의 민감도를 조절하는 스케일 계수이며, 아래의 scale/auto는 이 γ 값을 자동으로 얼마로 설정할지 계산하는 공식

  • gamma가 클 때

    • 데이터 포인트의 영향 범위가 좁아짐 (가까운 데이터에만 민감)
    • 결정 경계가 각 데이터 포인트 주변으로 구불구불하게 형성됨
    • 훈련 데이터에 지나치게 맞춰져 과적합 위험 증가
  • gamma가 작을 때

    • 데이터 포인트의 영향 범위가 넓어짐 (멀리 있는 데이터까지 고려)
    • 결정 경계가 완만하고 단순해짐
    • 너무 작으면 과소적합 위험 증가
  • gamma='scale'(기본값):

    γ=1nfeatures×Var(X)\gamma = \frac{1}{n_{\text{features}} \times \text{Var}(X)}

    여기서 nfeaturesn_{\text{features}}는 입력 피처의 개수, Var(X)\text{Var}(X)는 학습 데이터 전체의 분산

  • gamma='auto':

    γ=1nfeatures\gamma = \frac{1}{n_{\text{features}}}

    데이터의 분산을 고려하지 않고 피처 개수만으로 계산

  • C와 마찬가지로 모델의 복잡도를 조절하는 하이퍼파라미터이므로, 보통 Cgamma를 함께 그리드 서치(Grid Search) 등으로 튜닝

gamma 값영향 범위결정 경계위험
크다좁음복잡 (구불구불)과적합
작다넓음단순 (완만)과소적합
profile
AngDDo

0개의 댓글