15.3.1 서포트 벡터 머신 알고리즘
서포트 벡터 머신(SVM, Support Vector Machine)은 기본적으로 두 개의 클래스로 구성된 데이터를 가장 여유 있게 분리하는 초평면(hyperplane)을 찾는 머신 러닝 알고리즘입니다. 초평면이란 두 클래스의 데이터를 분리하는 N차원 공간상의 평면을 의미합니다. 예를 들어 2차원 공간상의 점들을 분리하는 초평면은 단순한 직선 형태로 정의되며, 3차원 공간상의 점들을 분리하는 초평면은 3차원 공간에서의 평면의 방정식으로 표현할 수 있습니다. SVM 알고리즘은 지도 학습의 일종이며, 분류와 회귀에 사용될 수 있습니다.
SVM 알고리즘의 동작을 이해하기 위해 그림 15-9를 살펴보겠습니다. 그림 15-9는 파란색 사각형과 빨간색 삼각형으로 표시된 두 클래스 점들의 분포를 보여 줍니다. 이 두 클래스 점들을 구분하기 위한 직선은 매우 다양한 형태로 만들 수 있습니다. 그림 15-9(a)에 나타난 1번과 2번 직선은 모두 두 종류의 점들을 잘 분리합니다. 그러나 1번 직선은 조금만 왼쪽 또는 오른쪽으로 이동하면 분리에 실패할 수 있습니다. 2번 직선은 왼쪽으로 조금 이동하는 것은 무난하지만, 오른쪽으로 조금만 이동하면 분리에 실패하게 됩니다. 이러한 현상이 나타나는 1번과 2번 직선이 모두 입력 점 데이터에 너무 가까이 위치하고 있기 때문입니다. 반면에 그림 15-9(b)에서 3번 직선은 두 클래스 점들 사이를 충분히 여유 있게 분할하고 있습니다. 이때 3번 직선에 해당하는 초평면과 가장 가까이 있는 빨간색 또는 파란색 점과의 거리를 마진(margin)이라고 하며, SVM은 이 마진을 최대로 만드는 초평면을 구하는 알고리즘입니다.
▲ 그림 15-9 SVM 알고리즘으로 두 클래스의 점 분할