콘텐츠로 이동

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

난이도: 중급~고급
선수 지식: 선형대수(내적, 노름), 최적화 기초, 라그랑주 승수법
관련 문서: 선형 모델 | 손실 함수 | 볼록성 | 차원 축소


핵심 요약: SVM(Support Vector Machine)은 두 그룹 사이에 가장 넓은 도로(마진, Margin)를 긋는 모델이다. 도로 경계에 걸치는 핵심 데이터 포인트를 서포트 벡터(Support Vector)라 하며, 커널 트릭(Kernel Trick)을 사용하면 비선형(Non-linear) 경계도 학습할 수 있다.

핵심 용어 미리보기:

  • 마진 (Margin): 결정 경계(Decision Boundary)와 가장 가까운 데이터 포인트 사이의 거리. 넓을수록 일반화(Generalization) 성능이 좋다
  • 서포트 벡터 (Support Vector): 마진 경계 위에 놓인 데이터 포인트. 이 점들만으로 결정 경계가 결정된다
  • 커널 트릭 (Kernel Trick): 데이터를 실제로 고차원으로 보내지 않고도 고차원에서의 내적(Inner Product)을 계산하는 수학적 기법
  • 슬랙 변수 (Slack Variable, ξ\xi): 일부 데이터가 마진을 침범하는 것을 허용하는 변수 (소프트 마진, Soft Margin)

서포트 벡터 머신(SVM)은 최대 마진 분류기(Maximum Margin Classifier)로, 클래스 간 결정 경계의 마진을 최대화하는 초평면을 찾는 모델이다. 커널 트릭(Kernel Trick)을 통해 비선형 결정 경계를 효율적으로 학습할 수 있으며, 고차원 데이터에서 특히 강력한 성능을 보인다.

SVM은 분류(SVC)와 회귀(SVR) 모두에 사용할 수 있다.


SVM의 역사는 Vladimir Vapnik의 연구 여정과 분리할 수 없다. Vapnik은 1960년대 소련에서 통계적 학습 이론(Statistical Learning Theory)의 기초를 놓기 시작했다. 그는 VC 차원(Vapnik-Chervonenkis Dimension) 이론을 통해 모델의 일반화 능력을 수학적으로 정량화하는 프레임워크를 개발했다.

1990년대 초, Vapnik이 미국 AT&T Bell Labs로 이적하면서 SVM이 탄생했다. 1992년 Boser, Guyon, Vapnik이 커널 트릭(Kernel Trick)을 SVM에 결합한 논문을 발표했고, 1995년 Vapnik의 저서 “The Nature of Statistical Learning Theory”에서 이론이 완성되었다. 커널 트릭의 핵심 아이디어는 놀랍도록 우아하다: 실제로 고차원 공간에 데이터를 보내지 않고도, 고차원에서의 내적(inner product)만 계산하는 것이다. 마치 3차원 물체의 그림자(2차원 투영)만 보고도 3차원 형태를 추론하는 것과 비슷하다.

SVM은 1990년대 후반부터 2000년대 중반까지 머신러닝의 지배적 패러다임이었다. 필기 인식, 텍스트 분류, 생물정보학 등 다양한 분야에서 최고 성능을 기록했다. 딥러닝의 부상 이후 많은 영역에서 대체되었지만, SVM의 이론적 기여 — 특히 마진 최대화, 커널 방법론, 구조적 위험 최소화(Structural Risk Minimization) — 는 현대 머신러닝의 핵심 토대로 남아 있다.


마진(margin)을 최대화: margin=2w\text{margin} = \frac{2}{\|\mathbf{w}\|}

2D 평면에 점 6개가 있다고 하자.

  • 클래스 A (양성): (1,3), (2,3), (2,4)
  • 클래스 B (음성): (4,1), (5,1), (5,2)

두 그룹 사이에 직선(초평면, Hyperplane)을 긋는다면, 가장 가까운 양성 점 (2,3)과 가장 가까운 음성 점 (4,1) 사이의 거리가 마진(Margin)이다. 두 점 사이 거리: (42)2+(13)2=82.83\sqrt{(4-2)^2 + (1-3)^2} = \sqrt{8} \approx 2.83. SVM은 이 마진 폭을 최대화하는 경계를 찾고, 경계에 가장 가까운 점 (2,3)과 (4,1)이 바로 서포트 벡터(Support Vector)이다. 나머지 점들은 결정 경계(Decision Boundary)에 영향을 주지 않는다.

minw,b12w2s.t.yi(wTxi+b)1,i\min_{\mathbf{w}, b} \frac{1}{2}\|\mathbf{w}\|^2 \quad \text{s.t.} \quad y_i(\mathbf{w}^T\mathbf{x}_i + b) \ge 1, \quad \forall i

  • 서포트 벡터(Support Vectors): 마진 경계 위에 놓인 데이터 포인트
  • 결정 경계는 서포트 벡터에 의해서만 결정됨
  • 제한: 선형 분리 가능(linearly separable)한 데이터에만 적용 가능

minw,b,ξ12w2+Ci=1nξi\min_{\mathbf{w}, b, \boldsymbol{\xi}} \frac{1}{2}\|\mathbf{w}\|^2 + C\sum_{i=1}^{n}\xi_i

s.t.yi(wTxi+b)1ξi,ξi0\text{s.t.} \quad y_i(\mathbf{w}^T\mathbf{x}_i + b) \ge 1 - \xi_i, \quad \xi_i \ge 0

슬랙 변수 (Slack Variables) ξi\xi_i

섹션 제목: “슬랙 변수 (Slack Variables) ξi\xi_iξi​”
  • ξi=0\xi_i = 0: 마진 바깥 (올바른 분류)
  • 0<ξi<10 < \xi_i < 1: 마진 내부이지만 올바른 분류
  • ξi1\xi_i \ge 1: 오분류
C 값효과
큰 C좁은 마진, 적은 위반 허용 (과적합 경향)
작은 C넓은 마진, 많은 위반 허용 (과소적합 경향)

L=max(0,1yif(xi))L = \max(0, 1 - y_i \cdot f(x_i))

소프트 마진 SVM은 힌지 손실 + L2 정규화와 동치이다:

mini=1nmax(0,1yif(xi))+λ2w2\min \sum_{i=1}^{n} \max(0, 1 - y_i f(x_i)) + \frac{\lambda}{2}\|\mathbf{w}\|^2


maxαi=1nαi12i=1nj=1nαiαjyiyjK(xi,xj)\max_{\boldsymbol{\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(\mathbf{x}_i, \mathbf{x}_j)

s.t.0αiC,αiyi=0\text{s.t.} \quad 0 \le \alpha_i \le C, \quad \sum \alpha_i y_i = 0

데이터를 고차원 공간으로 매핑하는 함수 ϕ\phi가 있을 때, 내적 ϕ(xi)ϕ(xj)\phi(\mathbf{x}_i) \cdot \phi(\mathbf{x}_j)만 필요하다. 커널 함수 KK는 이 내적을 직접 고차원 변환 없이 계산한다:

K(xi,xj)=ϕ(xi)ϕ(xj)K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i) \cdot \phi(\mathbf{x}_j)

유효한 커널이 되려면 커널 행렬이 양의 준정치(positive semi-definite)여야 한다.

커널수식특징
선형 (Linear)K(x,z)=xTzK(\mathbf{x}, \mathbf{z}) = \mathbf{x}^T\mathbf{z}커널 트릭 없음
다항식 (Polynomial)K(x,z)=(γxTz+r)dK(\mathbf{x}, \mathbf{z}) = (\gamma\mathbf{x}^T\mathbf{z} + r)^d유한 차원 매핑
RBF (가우시안)K(x,z)=exp(γxz2)K(\mathbf{x}, \mathbf{z}) = \exp(-\gamma\|\mathbf{x} - \mathbf{z}\|^2)무한 차원 매핑
시그모이드 (Sigmoid)K(x,z)=tanh(γxTz+r)K(\mathbf{x}, \mathbf{z}) = \tanh(\gamma\mathbf{x}^T\mathbf{z} + r)신경망과 유사

주요 커널 함수 다이어그램

γ\gamma효과
γ\gamma좁은 가우시안, 가까운 점만 영향, 복잡한 경계 (과적합 위험)
작은 γ\gamma넓은 가우시안, 먼 점도 영향, 단순한 경계 (과소적합 위험)

ϵ\epsilon-비감응 손실 (ϵ\epsilon-insensitive loss)

섹션 제목: “ϵ\epsilonϵ-비감응 손실 (ϵ\epsilonϵ-insensitive loss)”

ϵ\epsilon 이내의 오차는 무시:

min12w2+Ci=1n(ξi+ξi)\min \frac{1}{2}\|\mathbf{w}\|^2 + C\sum_{i=1}^{n}(\xi_i + \xi_i^*)

s.t.yif(xi)ϵ+ξi,f(xi)yiϵ+ξi\text{s.t.} \quad y_i - f(x_i) \le \epsilon + \xi_i, \quad f(x_i) - y_i \le \epsilon + \xi_i^*

  • ϵ\epsilon-tube 안의 예측은 페널티 없음
  • 튜브 밖의 서포트 벡터만 모델을 결정

SVM은 거리 기반 모델이므로 특성 스케일링(StandardScaler 또는 MinMaxScaler)을 반드시 수행해야 한다. 스케일링 없이는 큰 범위의 특성이 결과를 지배한다.

연산복잡도
학습O(n2)O(n^2) ~ O(n3)O(n^3)
예측O(nsvd)O(n_{\text{sv}} \cdot d)

대규모 데이터셋에는 부적합. 대안:

  • LinearSVC: 선형 커널에 특화, O(n)O(n) 학습
  • 근사 커널: Nystroem, RBF Sampler로 커널을 근사한 후 선형 SVM 적용

Sequential Minimal Optimization: 쌍대 문제를 효율적으로 풀기 위해 한 번에 두 개의 α\alpha를 업데이트하는 알고리즘 (libsvm 구현에서 사용).

  • OvR (One-vs-Rest): KK개 이진 분류기, 가장 높은 점수의 클래스 선택
  • OvO (One-vs-One): K(K1)/2K(K-1)/2개 이진 분류기, 다수결 투표

SVM은 기본적으로 확률을 출력하지 않는다. Platt Scaling(시그모이드 함수 적합)으로 사후 확률 추정 가능하나, 추가 교차 검증이 필요하고 정확하지 않을 수 있다.


상황추천 여부
고차원 데이터 (텍스트 분류 등)적합 (특히 선형 SVM)
샘플 수 < 특성 수 (n<pn < p)매우 적합
명확한 마진이 존재하는 데이터매우 적합
대규모 데이터셋 (n>100,000n > 100,000)부적합 (학습 느림)
확률 추정이 필요한 경우비추천 (로지스틱 회귀 선호)
잡음이 많은 데이터 (겹치는 클래스)C 조정 필요

텍스트 분류에서 선형 SVM이 딥러닝을 이긴 사례

섹션 제목: “텍스트 분류에서 선형 SVM이 딥러닝을 이긴 사례”

2010년대 중반, 한 전자상거래 기업이 고객 리뷰의 감성 분석(Sentiment Analysis) 시스템을 구축하면서 흥미로운 결과를 발견했다. 학습 데이터가 5,000건 미만인 상황에서, LSTM과 CNN 기반 딥러닝 모델의 정확도는 78~82%에 머물렀으나, TF-IDF + 선형 SVM(LinearSVC) 조합은 87%의 정확도를 달성했다.

이러한 결과의 이유는 명확하다. 텍스트 데이터를 TF-IDF로 변환하면 수만 차원의 고차원 희소(high-dimensional sparse) 벡터가 만들어진다. 이 공간에서는 데이터가 선형 분리 가능한 경우가 많아 선형 커널만으로도 충분하며, 적은 데이터에서 수백만 파라미터를 학습해야 하는 딥러닝보다 소수의 서포트 벡터만으로 결정 경계를 정의하는 SVM이 일반화 성능에서 유리하다.

이 사례는 “항상 최신 기법이 최선은 아니다”라는 ML 실무의 핵심 교훈을 보여준다. 데이터의 크기와 특성에 맞는 모델을 선택하는 것이 가장 중요하며, 선형 SVM은 여전히 소규모 텍스트 분류의 강력한 베이스라인이다.


1. “SVM은 항상 비선형 커널을 써야 한다”

섹션 제목: “1. “SVM은 항상 비선형 커널을 써야 한다””
  • 고차원 데이터에서는 선형 커널이 충분하고 훨씬 빠르다. 텍스트 분류에서는 선형 SVM이 표준이다.

2. “커널 트릭은 데이터를 실제로 고차원으로 변환한다”

섹션 제목: “2. “커널 트릭은 데이터를 실제로 고차원으로 변환한다””
  • 아니다. 커널 트릭의 핵심은 고차원에서의 내적을 직접 계산하여 실제 변환 없이도 같은 효과를 얻는 것이다.

3. “RBF 커널은 항상 최선의 선택이다”

섹션 제목: “3. “RBF 커널은 항상 최선의 선택이다””
  • 만능은 아니다. 고차원 희소 데이터에서는 선형 커널이, 알려진 다항 관계에서는 다항식 커널이 더 적합할 수 있다.

4. “SVM은 스케일링 없이도 잘 작동한다”

섹션 제목: “4. “SVM은 스케일링 없이도 잘 작동한다””
  • 특성 스케일링은 필수이다. 거리 기반 모델이므로 스케일 차이가 결과에 큰 영향을 미친다.

5. “서포트 벡터가 많으면 모델이 좋다”

섹션 제목: “5. “서포트 벡터가 많으면 모델이 좋다””
  • 오히려 서포트 벡터가 적을수록 마진이 깨끗하고 일반화가 잘 된다. 서포트 벡터가 지나치게 많으면 과적합 신호일 수 있다.

  • 선형 모델: 선형 SVM은 힌지 손실을 사용하는 선형 모델; 로지스틱 회귀와 비교
  • 손실 함수: 힌지 손실(Hinge Loss)의 특성
  • 볼록성: SVM은 볼록 이차 프로그램(convex QP)으로 정의됨
  • 정규화 이론: C 파라미터의 정규화 효과
  • 차원 축소: 고차원에서 SVM의 효과, 차원의 저주

  1. 커널 트릭을 직관적으로 설명하시오

    • 데이터를 고차원으로 매핑하지 않고도, 커널 함수를 통해 고차원에서의 내적을 직접 계산하여 비선형 경계를 학습하는 기법
  2. RBF 커널이 무한 차원으로 매핑하는 이유는?

    • RBF 커널의 테일러 전개는 무한 급수이며, 이는 무한 차원 특성 공간에서의 내적에 해당
  3. C가 매우 크거나 작을 때 무슨 일이 일어나는가?

    • 매우 큰 C: 하드 마진에 가까워짐, 마진 위반에 강한 페널티, 과적합 위험
    • 매우 작은 C: 넓은 마진 허용, 많은 오분류 허용, 과소적합 위험
  4. SVM이 “최대 마진 분류기”로 불리는 이유는?

    • 두 클래스를 분리하는 초평면 중에서 마진(가장 가까운 서포트 벡터까지의 거리)이 최대인 것을 선택하기 때문
  5. 로지스틱 회귀 대신 SVM을 선택해야 할 때는?

    • 고차원 데이터, 명확한 마진 존재, 확률이 아닌 결정이 필요할 때. 반대로 확률 추정이 필요하면 로지스틱 회귀 선호

from sklearn.svm import SVC, SVR, LinearSVC
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
# 반드시 스케일링과 함께 사용
svm_pipeline = Pipeline([
('scaler', StandardScaler()),
('svm', SVC(kernel='rbf', C=1.0, gamma='scale'))
])
svm_pipeline.fit(X_train, y_train)
# 선형 SVM (대규모 데이터에 적합)
linear_svm = Pipeline([
('scaler', StandardScaler()),
('svm', LinearSVC(C=1.0, max_iter=10000))
])
# 확률 추정이 필요한 경우
svm_proba = Pipeline([
('scaler', StandardScaler()),
('svm', SVC(kernel='rbf', probability=True)) # Platt Scaling
])
# SVR (회귀)
svr = Pipeline([
('scaler', StandardScaler()),
('svr', SVR(kernel='rbf', C=1.0, epsilon=0.1))
])

영어한국어
Support Vector Machine서포트 벡터 머신
Margin마진
Support Vector서포트 벡터
Hyperplane초평면
Kernel Trick커널 트릭
Slack Variable슬랙 변수
Hinge Loss힌지 손실
Dual Formulation쌍대 형태
Soft Margin소프트 마진
Hard Margin하드 마진

  • Vapnik (1995) - The Nature of Statistical Learning Theory
  • Burges (1998) - “A Tutorial on Support Vector Machines for Pattern Recognition”
  • Platt (1998) - “Sequential Minimal Optimization”
  • Scholkopf & Smola (2002) - Learning with Kernels