Branch Log · Open in interactive viewer →

9 Support Vector Machine(2)

다음 세 가지 데이터 분포를 살펴보자.

Example Linearly Separable?
data example 1 Yes
data example 2 Yes(considering error)
data example 3 No

세 번째 예시는 linear 경계로 나눌 수 없다. 이럴 때는 non-linear 경계가 필요하며, 이를 위해서는 먼저 데이터를 고차원으로 매핑해야 한다.


9.1 Non-Linear SVM

다음은 1차원 점을 2차원으로 매핑한 예시다.

non-linear trick 1
↓
Φ:𝐱↦(𝐱,𝐱2)
↓
non-linear trick 2

이렇게 찾은 경계를 다시 원래 1차원으로 보내면 곡선 형태가 된다.

매핑 함수는 직접 다양하게 정의할 수 있다.

mapping examples

이때 얼마나 고차원으로 매핑해야 하는가에 대한 답은 수학적으로 증명되어 있다.

여기서 n−1 은 worst case에 해당한다.


9.1.1 Non-Linear SVM: Formulation

앞서 Non-Linear SVM을 수식으로 표현해 보자.

이렇게 고차원으로 확장한 데이터를 대상으로 Linear SVM 수식을 적용한다.

\argmaxa1,…,an∑i=1nai−12∑i=1n∑j=1naiajyiyj⟨Φ(𝐱i),Φ(𝐱j)⟩ subject to∑i=1naiyi=00≤ai≤C

수식에 대한 해는 다음과 같다.

w=∑i=1naiyiΦ(𝐱i) b=yk−w·Φ(𝐱k)=yk−∑i=1naiyi⟨Φ(𝐱i),Φ(𝐱k)⟩

9.1.2 Example

다음 예시에 대해 Non-Linear SVM을 적용해 보자.

위 데이터를 고차원으로 매핑하면 다음과 같다.

Φ(D)=(111111111−1224488488−13191271339−112141824213294278612181) \argmaxa1,…,a5∑i=15ai−12∑i=15∑j=15aiajyiyj(Φ(𝐱i)·Φ(𝐱j)) subject to∑i=15aiyi=00≤ai≤C

문제는 argmax 수식에서 내적에 해당하는 Φ(𝐱i)·Φ(𝐱j) 계산이다. 차원이 커질수록 내적에 필요한 계산량이 급격히 증가한다.

예를 들어 1만 개 데이터셋 쌍에 대해 1만 차원으로 확장한다고 가정하면, 10000 * 10000 쌍에 대한 내적으로 1조 번의 곱셈 연산이 필요하다.


9.2 Kernel Trick

Non-Linear SVM의 목표는 엄밀하게는, (mapping 자체가 아닌) mapping 후의 내적 값이다. 다음 예시를 보자.

둘을 내적하면 다음과 같다.

Φ(𝐱1)·Φ(𝐱2)=1+3x11x21+3x12x22+3x112x212+3x122x222+x113x213+x123x223+6x11x12x21x22+3x11x122x21x222+3x112x12x212x22 =((x11x21+x12x22)+1)3 =(𝐱1·𝐱2+1)3

변환 후의 내적 값을 보면, 변환 식은 보이지 않고 원래의 벡터 데이터만 남는다. 즉, 고차원으로 보내는 수식만 잘 정의하면, 내적 값을 바로 구할 수 있다. 이를 Kernel Trick 이라고 한다.

이미 잘 알려진 커널 함수가 많이 존재한다.


9.2.1 Definition of Kernel

고차원으로 확장한 두 feature vector의 내적에 대응하는 함수 K 를 kernel이라고 한다.

kernel

kernel 개념은 사용한 대표적인 기법은 SVM이 있으며, 이러한 기법들을 kernel machine이라고 부른다.


9.2.2 Final Formulation of SVM

다음이 kernel trick을 적용한 SVM 수식이다.

\argmaxa1,…,an∑i=1nai−12∑i=1n∑j=1naiajyiyjK(𝐱i,𝐱j) subject to∑i=1naiyi=00≤ai≤C

해는 다음과 같다.

w=∑i=1naiyiΦ(𝐱i) b=yk−∑i=1naiyiK(𝐱i,𝐱k)

(Prediction) unknown x를 다음과 같이 예측할 수 있다. ( y(𝐱)≥0 일 때 +1, 그렇지 않으면 -1 )

y(𝐱)=∑i=1naiyiK(𝐱i,𝐱)+b

9.2.3 Some More on Kernels

대표적인 kernel 5개를 살펴보자. (Linear, Gaussian이 가장 많이 사용된다.)

Kernel Formula
Linear Kernel K(𝐱i,𝐱j)=𝐱i·𝐱j
Homogeneous Polynomial Kernel K(𝐱i,𝐱j)=(𝐱i·𝐱j+c)d
Polynomial Kernel K(𝐱i,𝐱j)=(𝐱i·𝐱j)d
Gaussian (RBF) Kernel K(𝐱i,𝐱j)=exp(−‖‖𝐱i−𝐱j‖‖22σ2)
Sigmoid Kernel K(𝐱i,𝐱j)=tanh(α𝐱i·𝐱j+c)

σ : 직접 정의

조금 더 세부적으로 살펴보자.

Φ(𝐱)=(x12,2x1x2,x22)Φ(𝐲)=(y12,2y1y2,y22) K(𝐱,𝐲)=exp(−‖𝐱−𝐲‖22)=exp(−𝐱·𝐱2)exp(−𝐲·𝐲2)∑n=0∞(𝐱·𝐲)2n!

일반적으로 RBF 커널을 많이 사용하는 이유는, 데이터를 모두 무한 차원으로 매핑한 뒤, 무한 차원에서 직선 경계를 찾기 때문이다.


9.3 Summary

다음은 SVM의 장단점을 요약한 내용이다.