SVM (Support Vector Machine)
출처: https://commons.wikimedia.org/wiki/File:SVM_margin.png
SVM은 머신러닝 알고리즘 중 하나로, 데이터 집합이 주어졌을때 새로운 데이터가 어느 카테고리에 속할지 판단하는 이진 선형 분류 모델입니다. SVM은 데이터 집합 사이에서 가장 넓은 마진(Margin)을 가지는 결정 경계(Decision Boundary)를 찾아내는 방식으로 동작합니다.
분류와 회귀 모두 사용이 가능하지만, 주로 분류에 활용됩니다.
결정 경계 (Decision Boundary)
데이터를 두 그룹으로 나누는 초평면(Hyperplane)입니다. n차원 공간을 n-1차원으로 나누기 위해 2차원 데이터에서는 선, 3차원 데이터에서는 면 형태로 나타납니다.
서포트 벡터 (Support Vector)
결정 경계와 가장 가까이 있는 데이터 포인트입니다. 서포트 벡터를 이용해서 경계선의 위치를 결정합니다. (SVM 이름의 유래)
마진 (Margin)
결정 경계와 서포트 백터 사이의 거리입니다. SVM은 이 마진을 최대화 하는것을 목표로 학습합니다.
그런데 왜 SVM은 마진이 최대가 되도록 학습하는 걸까요?
첫 번째 이유는 성능 일반화를 위해서 입니다. 마진이 지나치게 좁다면 훈련 데이터에만 최적화되는 과적합 현상이 발생할 수 있습니다. 그래서 마진을 최대한 넓혀 새로운 데이터가 들어오더라도 제대로 분류가 될 수 있는 강건함(Robust)을 갖추기 위해서 마진을 최대화 하는 방향으로 학습합니다.
선형 SVM
데이터를 선형적으로 나눌 때 사용합니다.
이때, 오차 허용 여부에 따라 하드 마진과 소프트 마진으로 나뉩니다.
하드 마진
하드 마진은 오차를 단 하나도 허용하지 않고 두 집합을 완벽히 분류할 수 있는 결정 경계를 찾는 방법입니다. 그래서 완벽히 분류가 가능한 데이터가 아니면 사용하기가 어렵습니다.
소프트 마진
소프트 마진은 하드 마진의 단점을 해결하기 위해 제시된 방법입니다. 초평면 마진 내의 오차를 허용하면서 결정 경계를 학습하는 방식입니다.
비선형 SVM
XOR 문제와 같이 데이터가 선형으로 분류가 불가능할 때 사용됩니다. 커널 트릭(Kernel Trick)을 이용해서 고차원으로 변형한 뒤 SVM 학습 후 다시 되돌리는 방법으로 학습합니다.
커널 트릭 (Kernel Trick)
출처: https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%BC:Kernel_Machine.png
커널 트릭은 2차원(저차원)에서 분류가 불가능한 데이터를 3차원(고차원)으로 변형 후 학습하는 방법입니다. 이런식으로 학습된 결정 경계는 고차원에서는 선형이지만, 원래 차원에서는 비선형으로 표현됩니다. 딥러닝애서 XOR 문제를 해결하기 위헤 히든 레이어를 여러개 사용하는것과 비슷하다고 보시면 됩니다.
커널 트릭에는 다항식 커널(Polynomial Kernel), RBF 커널 (Radial Basis Function) 등 다양한 커널이 존재합니다.