Data Science/ML | DL

[머신러닝] SVM으로 Binary Classification 다지기

402번째 거북이 2022. 8. 14. 16:20

SVM (Support Vector Machine)이란😶

SVM도 이전에 정리했던 Logistic Regression처럼 이진분류모델이다.

SVM 작동원리를 차근차근 살펴보자.

 

✔️최적의 Hyperplane을 찾자 = SVM!

데이터가 주어졌을 때, Hyperplane을 그어 이를 두가지로 나누는 방법에는 여러가지가 있다.

그림처럼, 같은 데이터를 분류한다고 하더라도 서로 다른 파라미터 조합으로 만든 여러개의 Hyperplane이 존재할 수 있다.

수많은  Hyperplane 중에서 가장 최적의 것을 찾는 것이 문제다.

 

SVM은 이 '최적'의 모델을 '데이터와 Hyperplane 간의 Margin이 최대가 되는 Hyperplane' 이라고 보는 것이 핵심이다.

그림으로 좀 더 명확히 살펴보자.

Hyperplane과, 데이터 중 가장 가까운 점들 간의 거리가 margin으로 표시되어있음을 확인할 수 있다.

나중에 데이터가 더 들어왔을 때, Hyperplane이 해당 데이터에 대해서도 분류를 잘 하기 위해서는 지금 훈련데이터를 기준으로 만든 hyperplane과 데이터 간 거리가 최대한 멀어야 할 것이다.

 

따라서, SVM은 'Margin의 크기가 최대가 되도록 하는 모델'로 이해하면 되겠다.

 

수식으로도 margin을 표현해보자.

위 그림에서, hyperplane을 중심으로 거리가 1인 두 데이터 X_pos와 X_neg가 있다.

각 점을 지나고 Hyperplane과 평행한 선들을 아래와 같다.

$$\begin{cases} w_{0}+w^{T}x_{pos} = 1 \\ w_{0}+w^{T}x_{meg} = -1 \end{cases}$$

또한, x_pos와 x_neg간의 거리는 λw이다.

$$x_{pos} = x_{neg}+\lambda w$$

 

이 세 식을 연립하면 람다를 다음과 같이 정리할 수 있다.

$$\begin{cases}w_{0}+w^{T}(x_{neg}+\lambda w) = 1 \\ w_{0}+w^{T}x_{neg} = -1 \end{cases}$$$$-1+\lambda w^{T}w = 1$$$$\lambda = {2 \over w^{T}w}$$

 

정리된 람다를 활용해 margin을 구하면 다음과 같은 전개가 이어진다.

$$Margin \ = \ distance(x_{pos}, x_{neg}) \ = \ ||x_{pos}-x_{neg}||_{2} \ = \ ||\lambda w||_{2} \ = \ \lambda \sqrt{w^{T}w} \ = \ {2\over ||w||_{2}}$$

즉,   SVM은 아래를 가장 크게 하는 Hyperplane을 구하는 모델이라고 정리할 수 있다.

$${2 \over ||w||_{2}}$$

다르게 말하면, 아래 식을 최소가 되도록 하는 w_0, w를 구하는 것이 SVM이다.

$$||w||_{2}\over 2$$

 

 


SVM의 Loss Function 정리😶 

위에서 SVM은 margin의 크기를 최대화하는 모델이라고 했다.

정확히 이야기하면 아래 두 가지를 만족하는 모델이다.

 

✨Margin의 크기가 최대가 되도록 하면서 (Regularlization)

✨Loss를 최소화 하는 모델

 

margin을 최대화하는 것에 대해서는 위에서 설명했다.

남은 것은 Loss Function인데, SVM은 Hinge Loss를 Loss Function으로 둔다.

 

$$L_{H}(\hat{y}, \ y) = max(0, \ 1-\hat{y}y)$$

$$L_{H}(\hat{y}, \ y) = max(0, \ 1-y^{(i)}(w_{0}+w^{T}x^{(i)}))$$

Loss가 음수인 경우는 없기 때문에, loss의 최소를 0(예측을 정확히 한 경우)이라고 두고 1에서 실제값*예측값을 곱한 것을 뺀 값 중 큰 것을 선택하는 식으로 Loss Function이 짜여있음을 확인할 수 있다.

 


Soft Margin SVM😶

실제 데이터를 분류하는 상황에서 SVM이 어떻게 동작하는 것이 맞는지, 단계별로 알아보자.

 

✔️시도1

Naive한 접근법이다.

모든 점 i에 대해 다음을 만족하는 w, w0을 구하는 방법이다.

$$y^{(i)}(w_{0}+w^{T}x(i)) ≥ 1$$

실제 y 값과 예측값 y의 곱이 1보다 크거나 같도록 Hyperplane을 긋는 논리다.

 

✔️시도2 (Soft-Margin SVM)

시도1이 언제나 잘 작동하면 좋겠지만, 데이터가 선형으로 깔끔하게 완전히 나뉘는 경우는 드물다.

그림처럼, Hyperplane을 그었을 때 제대로 분류되지 않는 데이터(slack)가 있기 마련이다.

이때는, 이러한 slack을 어느정도 허용해주는 작업이 필요하며, 이러한 허용을 반영한 SVM을 Soft Margin SVM이라고 부른다.

 

slack의 허용에는 아래 두 가지 방법이 있다.

 

ε

slack variable이다.

실제값과 예측값의 곱이 1보다 작아지는 것을 허용해주는 역할을 한다.

$$y^{(i)}(w_{0}+w^{T}x(i)) ≥ 1-\epsilon_{i}$$

위의 naive 식과 비교하면서 이해하자.

 

γ

slack을 얼마나 허용해줄 것인지를 컨트롤하는 Hyperparameter다.

Loss Function에 Hyperparameter 감마(γ) 를 붙여주면 된다.

커질수록 hard margin의 속성을 띠며, 0이 될 경우 모든 slack을 다 허용하게 된다.

 


총정리😶

Regularlization, Loss Function, 그리고 slack의 허용까지 반영한 SVM은 수식으로 다음과 같이 나타낼 수 있다.

$$argmin_{w,w_{0},\epsilon}\sum_{i=1}^{N}max(0, \ 1-y^{(i)}(w_{0}+w^{T}x^{(i)})) \ + \ {||w||_{2}\over 2\gamma}$$

$$where \ \ y^{(i)}(w_{0}+w^{T}x(i)) ≥ 1-\epsilon_{i}$$

Loss Function(hinge loss)이 최소가 되도록 하는 w, w0 등을 구하며, 뒤에 Regularlization또한 반영되어있음을 확인하자.

 

(+) 위에서 감마를 Loss Function에 붙인다고 했는데, 위 식에서는 Regularlization의 분모에 붙은것을 확인하자.

(계산을 위해 분모로 옮겨준 것.)