Support Vector Machines(SVMs)는 deep learning model의 큰 발전이 있기 전에는 boosting과 함께 가장 널리 사용되던 machine learning model이다.
Seperating Hyperplane
Classification 문제에 대해서, SVM은 기본적으로 class를 가장 잘 분리하는 plane, 즉 seperating hyperplane을 찾는 것을 목적으로 한다.
p-dimension space에서의 hyperplane이란, p−1 dimension을 가지는 flat affine subspace이다. 이는 다음과 같이 정의된다.
f(X)=β0+β1X1+β2X2+⋯+βpXp=0
2-dim space의 hyperplane은 line이다.
β0=0이면 hyperplane은 origin을 지난다 (역도 성립).
Vector β=(β1,β2,…,βp)를 normal vector라고 부른다.
β is orthogonal to the hyperplane.
어떤 Seperating hyperplane f(X)에 대해서, 각 class는 f(X)>0인 영역과 f(X)<0인 영역에 속하는지로 구분된다.
만약 blue 영역에서의 Yi 를 1, red 영역에서의 Yi 를 -1로 정한다면, 모든 i에 대해, Yi⋅f(Xi)>0이 성립한다.
Maximal Margin Classifier
모든 가능한 seperating hyperplane f(X) 중에서, maximal margin classifier는 두 class 사이의 gap 또는 margin을 maximize하는 seperating hyperplane을 말한다.
Hinge loss는 logistic regression의 loss function인 negative log-likelihood와 상당히 유사한 형태를 갖는다.
Kernels
Feature Expansion
어떤 data의 경우, linear classifier가 적합하지 않을 수 있다.
이러한 경우, feature의 transformation들을 통해 feature space를 확장하는 feature expansion을 통해 non-linear data를 linear하게 표현할 수 있다. (e.g. ϕ:(x1,x2)→(x12,2x1x2,x22))
Kernels
이러한 feature expansion은 두 가지 어려움이 존재한다. 첫번째는 feature space를 어떻게 확장해야 할 지에 대해 알기 어렵고, 두번째는 feature expansion에 의해 space의 dimension이 높아지는 경우 computation cost가 증가하기 때문이다.
자세한 설명은 생략하겠지만, support vector classifier의 optimization 문제를 Lagrangian dual form으로 표현하여 optimal solution을 찾기 위해서는 vector간 inner product를 계산해야만 한다.
예를 들어, ϕ:(x1,x2)→(x12,2x1x2,x22)을 고려하자. 이 때, expansion 시킨 space에서의 vector간 inner product는 다음과 같다.
즉, 특정한 feature expansion의 경우, vector를 모두 expansion 하여 계산하지 않아도 기존 dimension에서 충분히 inner product 값을 계산할 수 있다. 이러한 성질을 만족하는 mapping ϕ을 이용하는 것을 kernel trick이라고 한다.
실제로 kernel은 vector간 similarity를 측정하는 function을 포괄적으로 지칭하는 용어이지만, 여기서의 kernel은 kernel trick을 만족하는 function으로 한정한다.
SVM에서 kernel의 종류는 무척 다양하고 주요한 연구 주제 중 하나이다. 다만 여기서는 널리 사용되는 scikit-learn의 SVM method에서 지원하는 kernel 종류에 대해서만 소개한다.
Linear kernel
K(x1,x2)=x1Tx2
Polynomial kernel
K(x1,x2)=(γ(x1Tx2)+θ)d
Radial Basis Function(RBF) kernel
K(x1,x2)=exp(−γ∥x1−x2∥2)
RBF kernel은 널리 사용되는 non-linear kernel 중 하나로, infinite dimension으로의 mapping이 가능하여 매우 유연한 hyperplane을 만들 수 있다.
Sigmoid kernel
K(x1,x2)=tanh(γ(x1Tx2)+θ)
Multiclass Classification with SVMs
지금까지 정리한 SVM은 binary classification에 대한 문제를 푸는 방법에 대한 내용이었다. 만약 class의 개수 K가 2보다 크다면, 이를 풀기 위해서는 두 가지 접근법 중 하나를 택해야 한다.
One vs All (OVA)
각 class 별로, '해당 class에 속하는지' vs '해당 class에 속하지 않는지'를 결정하는 K개의 서로 다른 SVM classifier f^k(x)들을 학습한다.
새로운 data x∗에 대해서 가장 큰 f^k(x∗) 값을 갖는 class k로 분류한다.
One vs One (OVO)
모든 class pair에 대해서 (2n)개의 classifier f^kl(x)을 학습한다.
새로운 data x∗에 대해서 pairwise competition에서 가장 많이 승리한 class로 할당한다.
OVO 방법이 단연코 높은 computation cost가 필요하지만, K가 크지 않은 경우 OVO 방법이 OVA에 비해 일반적으로 더 높은 성능을 보여준다.