SVM(Support vector machine)

Posted by JudeLee on November 25, 2015

SVM(Support vector machine)

본 문서는 스터디의 목적으로 Machine Learning in Action (영문판) 를 보면서 작성한 글 입니다.
지적은 언제나 환영입니다 :)

SW마에스트로 1단계 1차 프로젝트 때 사용했던 Machine Learning 에서 Supervised Learning 의 종류 중 하나인 SVM(Support vector machine) 에 대해 간단히 정리하고자 한다.

SVM 이란?

SVM은 기본적으로 2개의 Class를 분류하는 Binary classifier 이다. 물론 SVM을 이용하여 2개 이상의 Class를 분류 할 수도 있지만 이 방법은 나중 포스팅에서 다루도록 하겠다. 아래의 그림과 같이 각각의 A, B, C,D 의 그림에는 2개의 Class 를 나타내는 수많은 Vector 들이 있다.

두 Class 를 분류하는 선,면 이 있는 B, C, D 의 그림중 어떤 그림이 가장 두 class 를 잘 분류하고 있을까? 두 class 를 분류하는 선,면 을 hyperplane 라 한다. SVM은 두 class 사이를 나눌 수 있는 수많은 hyperplane들 중에서 각각의 두 class 안의 vector들 중에서 hyperplane 과 가장 가까운 각 class의 vector 와의 거리가 최대가 되는 maximum hyperplane 을 만드는 것 이고, 이때 가장 가까운 각 class의 vector 들을 support vector 라 부른다.

Kernel Methods


만약 위의 그림과 같이 vector 들이 놓여있을경우 단순한 방법으로는 이 수많은 vector들을 나눌 수 없다. 이때 우리는 특정한 kernel mapping function 을 사용하여 아래의 그림과 같이 주어진 공간보다 고차원 공간에서 분류가 가능하도록 할 수 있다.

그림 출처 : http://users.sussex.ac.uk/~christ/crs/ml/lec08a.html

Kernel function들 에는 Polynomial Kernel, Gaussian Kernel 등 여러가지의 방법이 있지만 이들에 관한 함수들은 나중 포스팅에서 자세히 알아보도록 하겠다.