kernel SVM은 직접 구현할수도 있지만,
liblinear, libsvm 등의 패키지를 이용하여 SVM 을 실제 코드에 적용시켜 볼 수 있습니다!
구현 시 유념해야 하는 부분은,
1) parameter C를 고르고,
2) kernel을 골라야 합니다.
대표적인 예시로 gaussian kernel을 들어 설명해보겠습니다.
아래는 kernel의 matlab code입니다.
function f = kernel(x1,x2)
f = - exp(-abs(x1-x2)^2/(2*sigma^2))
return
그리고 한가지 유념해야 할 것은, Gaussian Kernel 이용 전 feature에 대한 scaling을 반드시 해야 한다는 것입니다.
위의 그림처럼 x1은 땅 넓이, x2는 침실의 수 와 같은 input이 담겨 있다면, 유의미한 정보를 추출하기가 힘들 것입니다.
kernel을 이용한 최적화, 즉 similarity function이 유효하려면 Mercer's Theorem을 만족해야 합니다.
기성 kernels(other similarity function)
Suppose you are trying to decide among a few different choices of kernel and are also choosing parameters such as ,
, etc. How should you make the choice?
많은 built-in method를 통해 진행 가능합니다.
Otherwise, use one-vs.all method.(K 개의 SVM을 학습시키는 방법)
= numer of features
= number of training examples
1) 이라면 (= 10,000 , = 10~1000)
2) 이 작고, 이 적당하다면, (= 1~1,000 , = 10~10,000)
3) 이라면 (= 1~1,000 , = 50,000~+)