시작하며
우리는 그동안 3개의 포스팅에 걸쳐 SVM에 대한 전반적인 공부를 마쳤습니다. 오늘은 이것들을 preview하고, Gaussian Kernal 이외에 mercer theorem을 만족하는 나머지 3가지 Kernel에 대해서도 알아보겠습니다.
이번 포스팅은 이전에 SVM에 대해 다룬 3개의 포스팅을 보시고 공부하시면 더욱 효과적입니다.
https://box-world.tistory.com/25
https://box-world.tistory.com/26
https://box-world.tistory.com/27
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 Kernel은 Input이 string인 경우 사용이 되며 문자열들을 분류할 때 사용 됩니다. 예를 들어 string a, b가 K(a,b) 형태로 인자로 들어왔을 때 나오는 결과값은 두 string이 얼마나 유사한지를 나타냅니다. 이것은 보통 text mining 분야에서 데이터를 군집화하고 분류하는데 쓰입니다.
이외에 chi-square Kernel과 histogram intersection Kernel 등이 있지만, Gaussian Kernel보다 성능이 떨어지기 때문에 거의 쓰일 일이 없습니다.
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가 가볍기 때문입니다.
'AI > Coursera ( Machine Learning )' 카테고리의 다른 글
[머신러닝 순한맛] 비지도 학습(Unsupervised Learning)이란? : K-means algorithm (0) | 2020.05.16 |
---|---|
[머신러닝 순한맛] 비지도 학습(Unsupervised Learning)이란? : Clustering (0) | 2020.05.15 |
[머신러닝 순한맛] SVM(Supprot Vector Machine)이란? - 3) Kernal (1) | 2020.05.11 |
[머신러닝 순한맛] SVM(Support Vector Machine)이란? - 2) Margin (0) | 2020.05.06 |
[머신러닝 순한맛] SVM(Support Vector Machine)이란? - 1) Introduction (0) | 2020.05.05 |