서포트 벡터 머신 (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, ): 일부 데이터가 마진을 침범하는 것을 허용하는 변수 (소프트 마진, 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) — 는 현대 머신러닝의 핵심 토대로 남아 있다.
핵심 개념
섹션 제목: “핵심 개념”1. 하드 마진 SVM (Hard Margin SVM)
섹션 제목: “1. 하드 마진 SVM (Hard Margin SVM)”마진(margin)을 최대화:
숫자로 이해하기
섹션 제목: “숫자로 이해하기”2D 평면에 점 6개가 있다고 하자.
- 클래스 A (양성): (1,3), (2,3), (2,4)
- 클래스 B (음성): (4,1), (5,1), (5,2)
두 그룹 사이에 직선(초평면, Hyperplane)을 긋는다면, 가장 가까운 양성 점 (2,3)과 가장 가까운 음성 점 (4,1) 사이의 거리가 마진(Margin)이다. 두 점 사이 거리: . SVM은 이 마진 폭을 최대화하는 경계를 찾고, 경계에 가장 가까운 점 (2,3)과 (4,1)이 바로 서포트 벡터(Support Vector)이다. 나머지 점들은 결정 경계(Decision Boundary)에 영향을 주지 않는다.
최적화 문제
섹션 제목: “최적화 문제”
- 서포트 벡터(Support Vectors): 마진 경계 위에 놓인 데이터 포인트
- 결정 경계는 서포트 벡터에 의해서만 결정됨
- 제한: 선형 분리 가능(linearly separable)한 데이터에만 적용 가능
2. 소프트 마진 SVM (Soft Margin SVM)
섹션 제목: “2. 소프트 마진 SVM (Soft Margin SVM)”최적화 문제
섹션 제목: “최적화 문제”
슬랙 변수 (Slack Variables)
섹션 제목: “슬랙 변수 (Slack Variables) ξi\xi_iξi”- : 마진 바깥 (올바른 분류)
- : 마진 내부이지만 올바른 분류
- : 오분류
C 파라미터의 역할
섹션 제목: “C 파라미터의 역할”| C 값 | 효과 |
|---|---|
| 큰 C | 좁은 마진, 적은 위반 허용 (과적합 경향) |
| 작은 C | 넓은 마진, 많은 위반 허용 (과소적합 경향) |
힌지 손실 (Hinge Loss)
섹션 제목: “힌지 손실 (Hinge Loss)”
소프트 마진 SVM은 힌지 손실 + L2 정규화와 동치이다:
3. 커널 트릭 (Kernel Trick)
섹션 제목: “3. 커널 트릭 (Kernel Trick)”쌍대 문제 (Dual Formulation)
섹션 제목: “쌍대 문제 (Dual Formulation)”
핵심 통찰
섹션 제목: “핵심 통찰”데이터를 고차원 공간으로 매핑하는 함수 가 있을 때, 내적 만 필요하다. 커널 함수 는 이 내적을 직접 고차원 변환 없이 계산한다:
Mercer 조건
섹션 제목: “Mercer 조건”유효한 커널이 되려면 커널 행렬이 양의 준정치(positive semi-definite)여야 한다.
주요 커널 함수
섹션 제목: “주요 커널 함수”| 커널 | 수식 | 특징 |
|---|---|---|
| 선형 (Linear) | 커널 트릭 없음 | |
| 다항식 (Polynomial) | 유한 차원 매핑 | |
| RBF (가우시안) | 무한 차원 매핑 | |
| 시그모이드 (Sigmoid) | 신경망과 유사 |
RBF 커널의 파라미터
섹션 제목: “RBF 커널의 γ\gammaγ 파라미터”| 값 | 효과 |
|---|---|
| 큰 | 좁은 가우시안, 가까운 점만 영향, 복잡한 경계 (과적합 위험) |
| 작은 | 넓은 가우시안, 먼 점도 영향, 단순한 경계 (과소적합 위험) |
4. SVR (Support Vector Regression)
섹션 제목: “4. SVR (Support Vector Regression)”-비감응 손실 (-insensitive loss)
섹션 제목: “ϵ\epsilonϵ-비감응 손실 (ϵ\epsilonϵ-insensitive loss)”이내의 오차는 무시:
- -tube 안의 예측은 페널티 없음
- 튜브 밖의 서포트 벡터만 모델을 결정
상세 내용
섹션 제목: “상세 내용”실용적 고려사항
섹션 제목: “실용적 고려사항”특성 스케일링은 필수
섹션 제목: “특성 스케일링은 필수”SVM은 거리 기반 모델이므로 특성 스케일링(StandardScaler 또는 MinMaxScaler)을 반드시 수행해야 한다. 스케일링 없이는 큰 범위의 특성이 결과를 지배한다.
계산 복잡도
섹션 제목: “계산 복잡도”| 연산 | 복잡도 |
|---|---|
| 학습 | ~ |
| 예측 |
대규모 데이터셋에는 부적합. 대안:
- LinearSVC: 선형 커널에 특화, 학습
- 근사 커널: Nystroem, RBF Sampler로 커널을 근사한 후 선형 SVM 적용
SMO 알고리즘
섹션 제목: “SMO 알고리즘”Sequential Minimal Optimization: 쌍대 문제를 효율적으로 풀기 위해 한 번에 두 개의 를 업데이트하는 알고리즘 (libsvm 구현에서 사용).
다중 클래스 전략
섹션 제목: “다중 클래스 전략”- OvR (One-vs-Rest): 개 이진 분류기, 가장 높은 점수의 클래스 선택
- OvO (One-vs-One): 개 이진 분류기, 다수결 투표
확률 추정
섹션 제목: “확률 추정”SVM은 기본적으로 확률을 출력하지 않는다. Platt Scaling(시그모이드 함수 적합)으로 사후 확률 추정 가능하나, 추가 교차 검증이 필요하고 정확하지 않을 수 있다.
언제 사용하는가
섹션 제목: “언제 사용하는가”| 상황 | 추천 여부 |
|---|---|
| 고차원 데이터 (텍스트 분류 등) | 적합 (특히 선형 SVM) |
| 샘플 수 < 특성 수 () | 매우 적합 |
| 명확한 마진이 존재하는 데이터 | 매우 적합 |
| 대규모 데이터셋 () | 부적합 (학습 느림) |
| 확률 추정이 필요한 경우 | 비추천 (로지스틱 회귀 선호) |
| 잡음이 많은 데이터 (겹치는 클래스) | 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의 효과, 차원의 저주
자주 묻는 면접 질문
섹션 제목: “자주 묻는 면접 질문”-
커널 트릭을 직관적으로 설명하시오
- 데이터를 고차원으로 매핑하지 않고도, 커널 함수를 통해 고차원에서의 내적을 직접 계산하여 비선형 경계를 학습하는 기법
-
RBF 커널이 무한 차원으로 매핑하는 이유는?
- RBF 커널의 테일러 전개는 무한 급수이며, 이는 무한 차원 특성 공간에서의 내적에 해당
-
C가 매우 크거나 작을 때 무슨 일이 일어나는가?
- 매우 큰 C: 하드 마진에 가까워짐, 마진 위반에 강한 페널티, 과적합 위험
- 매우 작은 C: 넓은 마진 허용, 많은 오분류 허용, 과소적합 위험
-
SVM이 “최대 마진 분류기”로 불리는 이유는?
- 두 클래스를 분리하는 초평면 중에서 마진(가장 가까운 서포트 벡터까지의 거리)이 최대인 것을 선택하기 때문
-
로지스틱 회귀 대신 SVM을 선택해야 할 때는?
- 고차원 데이터, 명확한 마진 존재, 확률이 아닌 결정이 필요할 때. 반대로 확률 추정이 필요하면 로지스틱 회귀 선호
코드 예시
섹션 제목: “코드 예시”from sklearn.svm import SVC, SVR, LinearSVCfrom sklearn.preprocessing import StandardScalerfrom 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