[머신러닝 순한맛] SVM(Support Vector Machine)이란? - 4) Preview
어제보다 나은 사람이 되기

걱정보단 실행을, 그러나 계획적으로

Box World 자세히보기

AI/Coursera ( Machine Learning )

[머신러닝 순한맛] SVM(Support Vector Machine)이란? - 4) Preview

Box형 2020. 5. 12. 15:54
반응형

시작하며

우리는 그동안 3개의 포스팅에 걸쳐 SVM에 대한 전반적인 공부를 마쳤습니다. 오늘은 이것들을 preview하고, Gaussian Kernal 이외에 mercer theorem을 만족하는 나머지 3가지 Kernel에 대해서도 알아보겠습니다.

이번 포스팅은 이전에 SVM에 대해 다룬 3개의 포스팅을 보시고 공부하시면 더욱 효과적입니다.

https://box-world.tistory.com/25

 

[머신러닝 순한맛] SVM(Support Vector Machine)이란? - 1) Introduction

시작하며 오늘은 또 하나의 Classification 알고리즘인 Support Vector Machine(Large Margin Classification)에 대해 알아보겠습니다. 이번 포스팅은 아래 포스팅을 읽어보시고 공부하시면 훨씬 효과적입니다. ht..

box-world.tistory.com

https://box-world.tistory.com/26

 

[머신러닝 순한맛] SVM(Support Vector Machine)이란? - 2) Margin

시작하며 저번 포스팅에서는 SVM이 무엇인지 전반적으로 알아보는 시간을 가졌습니다. 그때 SVM이라는 것은 결국 Decision Boundary가 자신과 분류하는 데이터들 사이의 Margin이 클수록 안정적이고 균�

box-world.tistory.com

https://box-world.tistory.com/27

 

[머신러닝 순한맛] SVM(Supprot Vector Machine)이란? - 3) Kernal

시작하며 저번 포스팅에서는 SVM의 Margin에 대해 다루며, 선형으로 분리되는 데이터의 Decision Boundary를 어떻게 지정할 것인가에 대해 다뤄보았습니다. 하지만 이 세상의 대부분의 데이터는 대부분

box-world.tistory.com

 


SVM Preview

SVM을 사용할 때는 두가지를 고려해야 합니다. 하나는 Outlier(이상치)를 얼마나 허용할 것이냐를 결정하는 parameter C, 그리고 Kernel 입니다. 이때 Kernal이 없는 경우linear Kernal이라 하여 주어진 데이터를 f 함수로 가공하지 않고 x feature 그대로 사용하게 됩니다.

Kernel을 사용해야 하는 경우 우리는 대표적으로 Gaussian Kernel을 떠올릴 수 있습니다. 이는 위와 같은 공식으로 표현 가능하고, 이때 $σ^2$ 값을 선택해야 합니다.

SVM에서 사용하는 Kernel 함수는 $f = K(x^{(i)}, l^{(i)})$로 표현되며, 이때 $l^{(i)}$는 Feature space에 맵핑된 데이터입니다. 이때 $${||x-l||}^2 = (x_1-l_1)^2 + (x_2-l_2)^2 + ... + (x_n-l_n)^2$$

을 이용하여 Kernel을 이용하기 전 각 features를 scaling 해줌으로써 range를 비슷하게 조정해줍니다.


보편적으로 SVM을 사용한다고 하면 linear Kernel이나 Gaussian Kernel을 사용합니다. 저번 포스팅에서 말했던대로 Mercer's Theorem을 만족하는 Gaussian Kernel을 포함한 네가지의 Kernels는 Cost의 global minimum을 찾도록 보장되어 있는데, 이에 대해 알아보겠습니다.

Polynomial Kernel은 $(x^Tl + S)^n$이 공식입니다. 이때 S는 상수이며, n은 차수로 사용자가 지정하게 됩니다.

String KernelInput이 string인 경우 사용이 되며 문자열들을 분류할 때 사용 됩니다. 예를 들어 string a, b가 K(a,b) 형태로 인자로 들어왔을 때 나오는 결과값은 두 string이 얼마나 유사한지를 나타냅니다. 이것은 보통 text mining 분야에서 데이터를 군집화하고 분류하는데 쓰입니다.

이외에 chi-square Kernelhistogram intersection Kernel 등이 있지만, Gaussian Kernel보다 성능이 떨어지기 때문에 거의 쓰일 일이 없습니다.


Multi-class classification using SVM

SVM도 multi-class classification이 가능합니다. 이때 one vs all method를 사용하게 됩니다. 이 경우 $y = {1,2,3 .. K}$까지 존재한다면 θ 또한 K개 존재하여 각 $θ^{(i)}$는 y값과 매칭됩니다. 그리고 데이터 분류 시 가장 큰 ${θ^{(i)}}^Tx$값이 나온 class 값을 예측값으로 내놓게 됩니다.

SVM은 feature의 수dataset의 사이즈에 따라 각기 다른 알고리즘을 사용하는 것이 좋습니다. features의 수를 n 그리고 dataset의 사이즈를 m이라고 하겠습니다.

1) 만약 n이 m에 비해서 큰 dataset의 경우 Logistic Regression이나 SVM Linear Kernel을 사용하는 것이 좋습니다. (n = 10000, m = 100000)

2) 만약 n은 작은데, m이 중간정도 크기의 dataset의 경우에는 SVM Gaussian Kernel을 사용하는 것이 좋습니다. (n = 10000, m = 10~10000)

3) 만약 n이 작고, m이 큰 dataset의 경우에는 feature를 추가하고 Logistic Regression이나 SVM linear Regression을 사용하는 것이 좋습니다.

SVM은 딥 러닝이 나온 이후에도 여전히 활발하게 쓰입니다. 왜냐하면 딥러닝 못지않는 성능과 함께 Cost가 가볍기 때문입니다.

반응형