1. 서포트 벡터 머신(SVM, Support Vectir Machine) 알고리즘 개요
SVM 알고리즘은 기본적으로 분류를 위한 기준 선을 정의(결정 경계/Decision Boundary)하여 두 개의 데이터를 분리하는 방법으로 데이터들과 거리가 가장 먼 초평면을 선택하여 분리하는 방법이다.
데이터를 분리하기 위해 직선이 필요하다. 직선이 한쪽 데이터로 치우쳐져 있으면 데이터에 변동이나 노이즈가 있을 때 제대로 구분하지 못할 수 있다. 이러한 문제를 해결하기 위해 margin을 이용한다.
이 직선을 초평면(hyperplane)이라고 한다.
SV(Support Vector)은 데이터를 의미한다.
margin은 초평면과 가장 가까이에 있는 데이터와의 거리를 의미한다.
이 마진을 최대로 만드는 직선을 계산하여 데이터를 분류하는 기준을 반드는 방법이 서포트 벡터 머신(SVM) 알고리즘이다.
2. 결정 경계/Decision Boundary
만약, 데이터에 두 개의 속성 (Feature)만 있다면 결정 경계는 이런 형태가 된다.
그러나 속성이 세 개로 늘어난다면 이렇게 3차원으로 그려진다.
이 때, 결정 경계는 '선'이 아닌 '평면'이 된다.
사람이 시각적으로 인지할 수 있는 범위는 위 그림처럼 딱 3차원까지이다. 즉, 속성의 개수가 늘어날 수록 당연히 복잡해질 것이며 결정 경계 역시 평면이 아닌 고차원이 된다. 이를 초평면(hyperplane)이라고 부른다.
3. 최적의 결정 경계 (Decision Boundary)
결정 경계는 무수히 많이 그릴 수 있다. 그렇다면 어떤 경계가 좋은 경계일까?
C를 보면 결정경계가 파란색 feature에 너무 가까워서 좋지 않음을 알 수 있다. 반대로 가장 최적의 결정경게는 F이다. 가장 안정적으로 두 feature 사이에서 거리가 가장 멀기 때문이다.
4. 마진
마진(Margin) : 결정 경계와 서포트 벡터 사이의 거리
점선으로부터 결정 경계까지의 거리가 바로 ‘마진(margin)’이다.
위에서의 설명과 해당 그림을 종합해보면 최적의 결정 경계는 마진을 최대화한다는 것을 알 수 있다.
즉, 마진이 최대이면 최적의 결정 경계라고 증명할 수 있다.
위 그림에서는 x축과 y축 2개의 속성을 가진 데이터로 결정 경계를 그었는데, 총 세 개의 데이터 포인트(서포트 벡터)가 필요했다. 즉, n개의 속성을 가진 데이터에는 최소 n+1개의 서포트 벡터가 존재한다는 걸 알 수 있다.
여기에서 SVM 알고리즘의 장점을 알 수 있다.
대부분의 머신러닝 지도 학습 알고리즘은 학습 데이터 모두를 사용하여 모델을 학습한다. 그런데 SVM 에서는 결정 경계를 정의하는 게 결국 서포트 벡터이기 때문에 데이터 포인트 중에서 서포트 벡터만 잘 골라내면 나머지 쓸 데 없는 수많은 데이터 포인트들을 무시할 수 있다. 그래서 매우 빠르다.
인용 : https://hleecaster.com/ml-svm-concept/
5. 하드 마진, 소프트 마진
위 그림을 보면 왼쪽에 혼자 튀어 있는 파란 점과, 오른쪽에 튀어있는 빨간 점이 있는데 이 점들을 아웃라이어라고 한다.
첫 번째 그림은 아웃라이어를 허용하지 않고 기준을 까다롭게 세웠다. 이것을 하드 마진 (Hard margin)이라고 한다. 이는 서포트 벡터와 결정 경계 사이의 거리가 매우 좁다. 즉, 마진이 매우 작아진다. 이렇게 개별적인 학습 데이터들을 다 놓치지 않으려고 아웃라이어를 허용하지 않는 기준을 설정한다면 과대적합(오버피팅) 문제가 발생할 수 있다.
두 번째 그림은 아웃라이어들이 마진 안에 어느정도 포함되도록 기준을 설정했다. 이를 소프트 마진(Soft matgin)이라고 한다. 하지만 이렇게 너그럽게 기준을 잡으면 마진이 너무 커져 과소적합(언더피팅) 문제가 발생할 수 있다.
그러니 적절한 기준을 설정하는 것이 중요하다.