Using an SVM

건너별·2021년 10월 31일
1

ML

목록 보기
2/21
post-custom-banner

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이 담겨 있다면, 유의미한 정보를 추출하기가 힘들 것입니다.

Other choice of Kernel

kernel을 이용한 최적화, 즉 similarity function이 유효하려면 Mercer's Theorem을 만족해야 합니다.

Mercer's Theorem 자세히 알아보기

기성 kernels(other similarity function)

  • Polynomial kernel : (XTL+constant)degree(\bold {X^TL} + constant)^{degree}의 형태
  • esoteric(심오한) kernel : string kernel, chi-square kernel, histogram intersection kernel

Suppose you are trying to decide among a few different choices of kernel and are also choosing parameters such as CC, σ2\sigma^2
, etc. How should you make the choice?

Multiclass classification

많은 built-in method를 통해 진행 가능합니다.
Otherwise, use one-vs.all method.(K 개의 SVM을 학습시키는 방법)

Logistic regression vs. SVMs

nn = numer of features
mm = number of training examples

1) n>>mn>>m이라면 (nn= 10,000 , mm= 10~1000)

  • Logistic regression
  • SVM without kernel(linear kernel)
    을 쓰자. 데이터가 nonlinear function에 fitting 하기에는 그 양이 너무 적다.

2) nn이 작고, mm이 적당하다면, (nn= 1~1,000 , mm= 10~10,000)

  • Gaussian kernel과 함께 SVM을 쓰자!

3) n<<mn<<m 이라면 (nn= 1~1,000 , mm= 50,000~+)

  • feature를 더 생성하고
  • logistic regression
  • SVM without a kernel
    을 쓰자.
    Gaussian Kernel은 massive training set에 버거운 모습을 보인다.

SVM의 장점

  • 신경망보다 빠른 학습
  • local minimum에 빠질 위험이 없음
profile
romantic ai developer
post-custom-banner

0개의 댓글