학부 수업/머신러닝

10. 비선형 서포트 벡터 머신 (Non-linear SVM)

백지오 2020. 11. 25. 19:56
반응형

지난 글에서 선형 SVM인 하드 마진 SVM과 소프트 마진 SVM을 다뤘다.
이번에는 선형으로 분류할 수 없는 문제를 해결하는 비선형 SVM인 커널 SVM을 알아보자.

커널 SVM은 커널 함수Kernel Function$(\phi)$를 통해 데이터의 차원을 올려서 분류를 수행한다.

출처: https://www.r-bloggers.com/2019/10/support-vector-machines-with-the-mlr-package/

즉, 커널 SVM도 결정 경계는 선형이다.

다만 데이터 $X$를 Feature Map의 내적을 통해 차원 증가 시켜서, 데이터의 Original Space가 아닌 분류가 쉬운 고차원의 Feature Space에서 분류를 수행하는 것이다.

커널 함수

데이터의 차원을 증가시키는 커널 함수는 효율적인 방법이 있다.

$$ \phi(x_1, x_2) = (x_1, x_2, x_1^2, x_2^2, x_1x_2) $$

2D 데이터를 5D데이터로 변환했다.

커널 매핑

커널의 계산 효율성을 위해 $\phi(X)$와 $\phi(Y)$를 따로 계산하여 내적하는 것보다, 둘의 내적을 바로 구하는 것이 효율적이다. 이 함수를 커널 함수라 한다.

$$\begin{align*}K(X,Y) = (X, Y)^2 &= <(x_1, x_2), (y_1, y_2)>^2\\
&= <x_1y_1 + x_2y_2>^2\\
&= x_1^2y_1^2 + x_2^2y_2^2 + 2x_1x_2y_1y_2\\
&= <\phi(X), \phi(Y)>^2 \end{align*}$$

커널 함수의 종류

커널 SVM을 위한 몇가지 함수가 나와있는데, 특별히 어떤 데이터에 어떤 커널이 좋은지는 알려져있지 않으므로 실험이 필요하다.

  • Linear Kernel
    $$K(x_1, x_2) = <x_1, x_2> $$
  • Polynomial Kernel
    $$K(x_1, x_2) = (a<x_1, x_2> + b)^d $$
  • Sigmoid Kernel
    $$K(x_1, x_2) = \tanh (a<x_1, x_2> + b) $$
  • Gaussian Kernel (RBF Kernel)
    $$K(x_1, x_2) = \exp(\frac{-||x_1 - x_2||_2^2}{2\sigma^2})$$

이진 분류기로 다중 분류하기

SVM은 이진 분류밖에 할 수 없다. 이런 분류기로 여러 클래스를 분류하려면 하나-나머지 방법이나 하나-하나 방법을 쓸 수 있다.

  • 하나-나머지 방법: 클래스 A와 나머지, 클래스 B와 나머지 등을 분류하는 분류기들을 만들고, $x$에 대한 이항 분류 값이 가장 큰 모델의 결과를 예측값으로 삼는다.
  • 하나-하나 방법: 클래스 A와 B, B와 C 등을 분류하는 분류기들을 만들고, 투표를 통해 가장 많이 분류된 결과를 최종 결과 삼는다.
반응형