5. 서포트 벡터 머신
1. 선형 SVM 분류
선형 SVM 아이디
- 마진 (margin): 클래스를 구분하는 도로의 폭
- 큰 마진 분류(large margin classification): 마진을 최대로 하는 분류

서포트 벡터
- 도로의 양쪽 경계에 위치하는 샘플(아래 그림에서 동그라미 표시됨)
- 서포트 벡터 사이의 간격, 즉 마진이 최대가 되도록 학습
- 특성 스케일을 조정하면 결정경계가 훨씬 좋아짐.

하드 마진 분류
- 모든 훈련 샘플이 도로 바깥쪽에 올바르게 분류되도록 하는 마진 분류
- 훈련 세트가 선형적으로 구분되는 경우에만 가능
-
이상치에 민감함

왼편 그래프 오른편 그래프 이상치 타 클래스에 섞임 타 클래스에 매우 가까움 하드 마진 분류 불가능 가능하나 일반화 어려움
소프트 마진 분류
- 마진 오류를 어느 정도 허용하면서 도로의 폭을 최대로 넓게 유지하는 마진 분류
- 마진 오류(margin violation): 결정 경계 도로 위에 또는 경정 경계를 넘어 해당 클래스 반대편에 위치하는 샘플. 소프트 마진 분류의 서프트 벡터 구성
-
꽃잎 길이와 너비 기준의 버지니카와 버시컬러 품종 분류: 소프트 마진 분류만 가능

예제: 버지니아 품종 여부 판단
- 사이킷런의 선형 SVM 분류기
LinearSVC활용- 데이터셋 표준화 스케일링이 중요해서 기본적으로 함께 사용
- 규제 하이퍼파라미터
C- 작을수록 마진 오류를 강함
- 클수록 적은 규제: 모델의 자유도 증가, 마진(결정 경계 도로의 폭)이 작아져서 과대적합 가능성을 키움
C=float(”inf”)로 지정하면 하드 마진 분류 모델이 됨.

왼편 그래프 오른편 그래프 C 작게 크게 마진 크게 작게 분류 덜 정교하게 보다 정교하게
선형 SVM 분류 지원 모델
- 선형 분류는
LinearSVC모델이 제일 빠르나SVC + 선형 커널조합도 가능하다.
1
SVC(kernel="linear", C = 1)
- SGDClassifier + hinge 손실함수 + 규제: 규제는 데이터셋 크기(m)에 반비례
-
hinge 손실 함수: 어긋난 예측 정도에 비례해 손실값이 선형적으로 커짐.
\[\begin{align*} J(\mathbf{w}, b) & = \dfrac{1}{2} \mathbf{w}^T \mathbf{w} \,+\, C {\displaystyle \sum_{i=1}^{m}\max\left(0, 1 - t^{(i)} (\mathbf{w}^T \mathbf{x}^{(i)} + b) \right)} \\[.5ex] \mathbf{w}^T \mathbf{w} & = w_1^2 + \cdots + w_n^2 \\[.5ex] \mathbf{w}^T \mathbf{x}^{(i)} & = w_1 x_1^{(i)} + \cdots + w_n x_n^{(i)} \end{align*}\]- $J(\mathbf{w}, b)$: SVM의 손실 함수 $\mathbf{w}$는 가중치 벡터, $b$는 편향이다.
- $\frac{1}{2} \mathbf{w}^T\mathbf{w}$: 가중치 벡터의 제곱합을 최소화하여 모델의 복잡도를 낮추는 역할을 한다. L2 규제라 한다
- $C \sum_{i=1}^{m}\max\left(0, 1 - t^{(i)} (\mathbf{w}^T \mathbf{x}^{(i)} + b) \right)$: 마진 오류(margin error)를 최소화하는 역할을 한다.
- $C$는 하이퍼파라미터로서, 이 값을 크게하면 마진 오류를 작게 만든다.
- $t^{(i)}$는 $i$번째 샘플의 레이블이다.
- $\mathbf{w}^T \mathbf{w}$: 가중치 벡터의 제곱합을 계산
- $\mathbf{w}^T \mathbf{x}^{(i)}$: 가중치 벡터와 $i$번째 샘플의 특성 벡터의 내적을 계산한다.
이 손실 함수를 최소화하는 가중치 벡터 $\mathbf{w}$와 편향 $b$를 찾아서 SVM을 학습시킵니다.
SVM은 결정 경계(decision boundary)를 찾는 알고리즘으로서, 이 결정 경계는 가장 가까운 샘플과의 거리(margin)가 최대가 되는 초평면(hyperplane)이다.

2. 비선형 SVM 분류
1. 특성 추가 + 선형 SVC
- 다항 특성 활용: 다항 특성을 추가한 후 선형 SVC 적용
- 유사도 특성 활용: 유사도 특성을 추가한 후 선형 SVC 적용
2. SVC + 커널 트릭
- 커널 트릭: 새로운 특성을 실제로 추가하지 않으면서 동일한 결과를 유도하는 방식
- 다항 커널
- 가우시안 RBF(방사 기저 함수) 커널
다항 특성 추가 + 선형 SVC
-
예제 1: 특성 $x_1$ 하나만 갖는 모델에 새로운 특성 $x_1^2$을 추가한 후 선형 SVM 분류 적용

-
다항 특성 + 선형 회귀(4장) 방식과 유사한 기법
\[\hat y = \theta_0 + \theta_1x_1 + \theta_22x_1^2\] -
예제 2: moons 데이터셋. 마주보는 두 개의 반우너 모양으로 두 개의 클래스로 구분되는 데이터

SVC + 다항 커널
- SVM 모델을 훈련시킬 때 다항 특성을 실제로는 추가 하지 않으면서 수학적으로 추가한 효과 활용
- 예제: moons 데이터셋
1
2
poly_kernel_svm_clf = make_pipeline(StandardScaler(),
SVC(kernel="poly", degree=3, coef0=1, C=5))
유사도 특성
- 유사도 함수: 랜드마크(landmark) 샘플과 각 샘플 사이의 유사도(similarity) 측정
-
가우시안 방사 기저 함수(RBF, radial basis function)
\[\phi(\mathbf x, m) = \exp(-\gamma\, \lVert \mathbf x - m \lVert^2)\]- $m$: 랜드마크
- $\gamma$: 랜드마크에서 멀어질수록 0에 수렴하는 속도를 조절
- $\gamma$값이 클수록 가까운 샘플 선호, 즉 샘플들 사이의 영향을 보다 적게 고려해 모델의 자유도를 높이게 되어 과대적합 위험 커짐.
- 예제

유사도 특성 추가 + 선형 SVC
- 예제
- 랜드마크: -2 와 1
- $x_2$와 $x_3$: 각각 -2와 1에 대한 가우시안 RBF 함수로 계산한 유사도 특성
- 화살표가 가리키는 점: $x = -1$

랜드마크 지정
- 어떤 샘플을 랜드마크로 지정하면 좋은지 모름
- 따라서 모든 샘플을 랜드마크로 지정
- 장점: 차원이 커지면서 선형적으로 구분될 가능성 증가
- 단점: 훈련 셋이 매우 클 경우 동일한 크기의 아주 많은 특성이 생성
SVC + 가우시안 RBF 커널
- 유사도 특성을 실제론 추가하지 않으면서 수학적으로 추가한 효과 활용
1
2
rbf_kernel_svm_clf = make_pipeline(StandardScaler(),
SVC(kernel="rbf", gamma=5, C=0.001))
-
예제: moons 데이터셋

SVM 분류 모델 계산 복잡도

3. SVM 회귀
SVM 분류 vs SVM 회귀
- SVM 분류
- 목표: 마진 오류 발생 정도를 조절($C$이용)하면서 결정 경계 도로의 폭을 최대한 넓게 하기
- 마진 오류: 도로 위에 위치한 샘플
- SVM 회귀
- 목표: 마진 오류 발생 정도를 조절($C$ 이용) 하면서 지정된 폭의 도로 안에 가능한 많은 샘플 포함하기
- 마진 오류: 도로 밖에 위치한 샘플
- 도로의 폭:
epsilon하이퍼파라미터로 지정
선형 SVM 회귀
- 예제: LinearSVR 활용.
epsilon은 도로의 폭 결정
epsilon 하이퍼 파라미터
- 마진 안쪽, 즉 도로 위에 포함되는 샘플이 많아져도 예측에 영향 주지 않음.
이유는 마진 오류가 변하지 않기 때문
즉,
spsilon만큼의 오차는 무시됨 epsilon이 작을수록 도로폭이 좁아지기에 보다 많은 샘플을 마진 안쪽으로 포함시키기 위해 도로의 굴곡이 심해짐. 따라서,epsilon이 클 수록 규제가 약해지는 효과 발생

비선형 SVM 회귀
- SVC와 동일한 커널 트릭을 활용해 비선형 회귀 모델 구현
- 예제: SVR + 다항 커널
1
2
3
# SVR + 다항 커널
svm_poly_reg2 = make_pipeline(StandardScaler(),
SVR(kernel="poly", degree=2, C=100))

SVM 회귀 모델 계산 복잡도
LinearSVRLinearSVR와 유사- 시간 복잡도가 훈련 셋의 크기에 비례해 선형적으로 증가
SVRSVC와 유사- 훈련 셋이 커지면 매우 느려짐
댓글남기기