SVM (Support Vector Machine)

- 마진 최대화: 같은 기울기를 가진 두 서포트 벡터 사이의 간격(Margin)이 가장 넓어지는 최적의 결정 경계를 찾는 문제
- 데이터 분류: ⊕벡터 위에는 ⊕데이터만, ⊖벡터 아래에는 ⊖데이터만 존재하도록 데이터를 엄격하게 구분
동작 과정
1. Hyperplane 정의
- Hyperplane을 vector의 내적 형태로 정의
- 법선 벡터 w에 정사영시킨 x의 길이(∥x∥cosθ)가 항상 일정(∥w∥C)한 점들의 집합
- Hyperplane은 법선 벡터 w와 항상 수직 (내적의 정의)
wTx=C
2. 마진(Margin)의 유도
- 두 support vector를 각각 ⊕: (wTx=C+1)과 ⊖: (wTx=C−1)로 정의
- 원점에서 각각의 support vector까지의 수직 거리를 구하고 차이를 계산
dist+=∥w∥C+1 (원점에서 +경계까지의 수직 거리)
dist−=∥w∥C−1 (원점에서 -경계까지의 수직 거리)
margin=∥w∥(C+1)−(C−1)=∥w∥2
3. 최적화 문제
- 마진(∥w∥2)을 최대화, 계산의 편의를 위해 21∥w∥2을 최소화 문제로 재정의
- 모든 데이터는 결정 경계 밖의 정해진 영역에 있어야 한다는 제약 조건
min21∥w∥22
s.t. yi(wTxi+C)≥1,i=1,2,…,n
L(w,C,α)=21∥w∥2−i=1∑nαi[yi(wTxi−C)−1]
Maximize W(α)=i=1∑nαi−21i=1∑nj=1∑nαiαjyiyj(xiTxj)
- 제약 조건 (Subject to)
∑i=1nαiyi=0αi≥0(i=1,…,n)
내적 계산 (xiTxj)으로 kernel trick 적용에 용이
최적화 결과 αi>0인 데이터들만이 최종 경계를 결정하는 Support Vector
SVM 파라미터 정리

C
-
오차를 얼마나 허용할지 설정하는 변수 (규제, regularization 파라미터)
-
목적 함수의 변화
-
Hard margin: Minimize 2∥W∥2
s.t. yi(W⋅xi+b)≥1,∀i
-
Soft margin: Minimize 2∥W∥2+C∑iξi
s.t. yi(W⋅xi+b)≥1−ξi,ξi≥0,∀i
-
제약조건 의미
- Hard margin: 모든 데이터가 마진 바깥쪽에 정확히 위치해야 함 (오차 허용 X)
- Soft margin: ξi(슬랙 변수, slack variable)를 도입해 일부 데이터가 마진을 침범하거나 오분류되는 것을 허용
- ξi=0 : 마진 위 또는 바깥쪽 (정상 분류)
- 0<ξi≤1 : 마진 안쪽이지만 결정 경계 기준으로는 정상 분류
- ξi>1 : 오분류
-
C가 크면 오차항(∑ξi)이 목적 함수에서 차지하는 비중이 커져서 오차를 허용하지 않으려 함
- 마진이 좁아지고, 훈련 데이터에 민감해져 과적합(overfitting) 위험 증가
-
C가 작으면 일부 오차를 허용하는 대신 마진을 넓게 잡아 일반화 성능을 높일 수 있음
- 너무 작으면 과소적합(underfitting) 위험
kernel
- 데이터를 더 높은 차원으로 투영(mapping)하여 원래 공간에서는 선형 분리가 불가능한 데이터를 선형 분리 가능하게 만드는 기법
- 커널 트릭(kernel trick)을 사용하면 실제로 고차원으로 데이터를 변환하지 않고도 내적(inner product)만으로 계산 가능
(1) Linear 커널
K(x,x′)=x⋅x′
- 벡터 내적을 그대로 사용 (비선형 변환 없음)
- 고차원 변환 없이 선형 경계만 학습
- 데이터가 선형적으로 잘 구분되거나, 피처 수가 매우 많을 때(예: 텍스트 데이터) 적합
clf_linear = SVC(kernel='linear')
(2) Polynomial(Poly) 커널
K(x,x′)=(γ⋅(x⋅x′)+r)d
파라미터
clf_poly = SVC(kernel='poly', degree=3, gamma='scale', coef0=1)
(3) RBF (Radial Basis Function, Gaussian) 커널
K(x,x′)=exp(−γ⋅∥x−x′∥2)
파라미터
clf_rbf = SVC(kernel='rbf', gamma='scale')
(4) Sigmoid 커널
K(x,x′)=tanh(γ⋅(x⋅x′)+r)
파라미터
clf_sigmoid = SVC(kernel='sigmoid', gamma='scale', coef0=0)
요약 표
| kernel | 수식 | 주요 파라미터 | 특징 |
|---|
| linear | x⋅x′ | - | 고차원 변환 없음, 선형 분리 |
| poly | (γx⋅x′+r)d | gamma, coef0, degree | 다항식 변환 |
| rbf | exp(−γ∥x−x′∥2) | gamma | 가우시안, 비선형, 가장 많이 사용 |
| sigmoid | tanh(γx⋅x′+r) | gamma, coef0 | 신경망과 유사한 S자형 |
gamma
poly, rbf, sigmoid 커널에서 사용되는 파라미터로, 하나의 학습 데이터 샘플이 미치는 영향력의 범위를 결정
- 직관적으로는 "하나의 데이터 포인트가 얼마나 멀리까지 영향을 주는가"를 조절하는 값
gamma는 커널 함수에서 무엇을 계산하는가
-
gamma(γ)는 커널 함수 K(x,x′) 안에서 두 데이터 포인트 사이의 거리(또는 내적) 값을 스케일링하는 계수
-
예를 들어 RBF 커널의 경우:
K(x,x′)=exp(−γ⋅∥x−x′∥2)
- ∥x−x′∥2 : 두 점 사이의 유클리드 거리(제곱)
- γ : 이 거리 값을 얼마나 증폭/축소시킬지 정하는 계수
-
γ가 클 때: 거리가 조금만 벌어져도 지수 함수 값이 급격히 작아짐 → 아주 가까운 점끼리만 "유사하다"고 판단 → 영향 범위가 좁아짐
-
γ가 작을 때: 거리가 벌어져도 지수 함수 값이 천천히 줄어듦 → 멀리 있는 점까지 "유사하다"고 판단 → 영향 범위가 넓어짐
-
즉, γ 자체는 커널 함수의 민감도를 조절하는 스케일 계수이며, 아래의 scale/auto는 이 γ 값을 자동으로 얼마로 설정할지 계산하는 공식
-
gamma가 클 때
- 데이터 포인트의 영향 범위가 좁아짐 (가까운 데이터에만 민감)
- 결정 경계가 각 데이터 포인트 주변으로 구불구불하게 형성됨
- 훈련 데이터에 지나치게 맞춰져 과적합 위험 증가
-
gamma가 작을 때
- 데이터 포인트의 영향 범위가 넓어짐 (멀리 있는 데이터까지 고려)
- 결정 경계가 완만하고 단순해짐
- 너무 작으면 과소적합 위험 증가
-
gamma='scale'(기본값):
γ=nfeatures×Var(X)1
여기서 nfeatures는 입력 피처의 개수, Var(X)는 학습 데이터 전체의 분산
-
gamma='auto':
γ=nfeatures1
데이터의 분산을 고려하지 않고 피처 개수만으로 계산
-
C와 마찬가지로 모델의 복잡도를 조절하는 하이퍼파라미터이므로, 보통 C와 gamma를 함께 그리드 서치(Grid Search) 등으로 튜닝
| gamma 값 | 영향 범위 | 결정 경계 | 위험 |
|---|
| 크다 | 좁음 | 복잡 (구불구불) | 과적합 |
| 작다 | 넓음 | 단순 (완만) | 과소적합 |