서포트 벡터 머신(SVM, Support Vector Machine)은 「두 범주를 가르는 가장 넓은 경계선(margin)을 찾는」 분류 모델입니다.
1990년대에 등장해 한동안 분류 분야의 왕좌를 차지했고, 지금도 데이터가 많지 않을 때 강력한 기본기로 쓰입니다.
예를 들어 평면 위에 빨간 점과 파란 점이 흩어져 있다고 합시다.
SVM은 두 색을 가르는 무한히 많은 직선 가운데, 「양쪽 그룹의 가장 가까운 점들로부터 거리가 가장 먼 직선」을 골라냅니다.
이 거리를 「마진(margin)」이라 부르고, 그 직선과 가장 가까운 점들을 「서포트 벡터」라 부릅니다.
비유하자면 SVM은 「두 군중 사이를 지나가는 도로를 가장 넓게 닦으려는 도로 설계자」와 같습니다.
양쪽에서 가장 가까운 사람과의 거리가 충분해야 후일 사람들이 좀 움직여도 도로가 침범되지 않기 때문입니다.
SVM의 진짜 위력은 「커널 트릭(kernel trick)」에 있습니다.
직선으로 가를 수 없는 복잡한 데이터를 만나면, 데이터를 더 높은 차원으로 슬쩍 옮긴 뒤 그곳에서 직선으로 가르는 효과를 냅니다.
흔한 비유는 「2차원에서 직선으로 못 가르는 점들도 손바닥 위에 올려 살짝 들어 올려 3차원에서 보면 종이 한 장으로 가를 수 있다」는 것입니다.
단점은 데이터 수가 매우 클 때 학습이 느려진다는 점, 그리고 커널 선택이나 하이퍼파라미터 튜닝에 감각이 필요하다는 점입니다.
이미지·자연어 같은 거대 데이터에서는 신경망에 자리를 내주었지만, 작은 데이터 분야에서는 여전히 강력합니다.
한 줄 요약
SVM은 두 범주를 가르는 가장 넓은 마진의 경계선을 찾는 분류 모델이며, 커널 트릭으로 비선형 문제도 풀 수 있습니다.
더 알아볼 것
- 선형 SVM과 RBF 커널
- 소프트 마진과 슬랙 변수
- SVM의 회귀 버전 SVR