
SVM(서포트 벡터 머신) 이란?
SVM(서포트 벡터 머신)은 통계적 분류 알고리즘 중 하나로 '여백'이라는 개념을 적용한 알고리즘입니다.
두 집단이 존재할때 두 집단 사이의 여백을 최대화하여 일반화 능력을 극대화하는 것이 해당 알고리즘입니다.
자세한 설명은 아래에서 이어나가겠습니다.
아래와 같은 집단이 존재한다고 가정하겠습니다.
물론 실제 데이터를 다루다 보면 아래와 같은 이상적인 형태의 데이터는 거의 없을겁니다.
위의 집단을 나누는 직선은 아래와 같이 여러 경우가 있을 것입니다.
1번 직선의 경우 파란색 집단을 가로지르고 있으므로 두 집단을 제대로 분리한다고 볼 수 없습니다.
2번, 3번 직선의 경우 오류 없이 두 집단을 잘 분리 했다고 볼 수 있습니다.
여기서 신경망 학습 알고리즘은 초기값으로 1번의 직선을 가지고 출발을 하였다면
오류를 줄여나가는 과정을 반복하여 2번 또는 3번과 같은 오류가 적거나 없는 직선을 찾아 나갈 것입니다.
이 과정중에서 2번의 직선에 도달했다면 더 이상 탐색하지 않고 멈출 것입니다.
3번까지 갈 이유가 없기 때문입니다.
훈련 집합(training set)의 입장에서는 두 직선 모두 오류가 0이기 때문에 같은 성능의 분류기로 인식합니다.
하지만 아래의 경우처럼 추가적인 데이터가 들어왔을때의 성능을 고려한다면 3번이 조금 더 높은 성능을 보일 것입니다.
이와 같은 경우를 위해 일반화 능력을 고려하게 됩니다.
일반화 능력이란 미지의 패턴을 얼마나 잘 분류하느냐를 따지는 척도 입니다.
아래의 그림을 보면서 설명 드리겠습니다.
두 집단에서 서로의 거리가 가장 가까운 데이터들을 선택해서 직선까지의 거리를 계산해 봅니다.
파란색 집단이 주황색 집단보다 거리가 많이 가까운것을 확인할 수 있습니다.
마찬가지로 두 집단에서 가까운 데이터를 선택하고 직선과의 거리를 계산해 봤을 때 두 집단의 길이가 같은 것을 확인할 수 있습니다.
즉 두 집단에서 직선까지의 거리를 계산했을때 같아지는 지점에 직선을 위치시키는 것이 해당 알고리즘의 핵심입니다.
위의 그림에서 회색 선의 영역이 '여백'이 되는것입니다.
선형 SVM ( 하드마진 )
하드마진은 단 하나의 오차도 허용하지 않는 방법입니다.
아래의 그림과 같이 두 집단에서 어떠한 데이터도 오차가 발생하지 않도록 경계를 생성합니다.
선형 SVM ( 소프트 마진 )
소프트 마진은 하드마진과 다르게 지정된 허용범위 내의 오류는 허용해 주는 방법입니다.
비선형 SVM
비선형 SVM의 개념은 생각보다 간단합니다.
아래의 그림과 같이 해당 차원에서 선형 분리가 불가능한 상태를 고차원으로 옮겨 분리하여 다시 원래 차원으로 변환하는 방법입니다.
위의 그림을 보면 2차원 상에 데이터가 분포되어 있는데 해당 차원에서 직선으로 분류하긴 어려워 보입니다.
때문에 아래의 그림과 같이 3차원으로 데이터를 옮겨 직선이 아닌 평면(N-1)으로 두 집단을 분리시켜 줍니다.
평면으로 집단을 분리하는 이유는 해당 알고리즘은 N-1차원의 분류기로 서로다른 집단을 분류합니다.
위의 그림과 같이 3차원에서 분류기로 분리했다면 아래의 그림처럼 다시 원래의 2차원으로 데이터를 변형시켜 줍니다.
커널(Kernel)
위의 내용중 비선형 SVM을 진행하기 위해선 현재 차원보다 높은 차원으로 변형을 해서 데이터를 처리합니다.
낮은 차원의 경우 계산량에 큰 차이는 없겠지만 차원이 높아질수록 많은 특성으로 인해 모델을 느리게 만듭니다.
이때 실제로 특성을 추가하지 않으면서도 마치 고차원으로 변형된 것 같은 효과를 얻을 수 있는 방법인 커널 트릭을 사용할 수 있습니다.
커널트릭의 경우 다양한 함수들이 존재하기에 적합한 함수를 선택해야 합니다.
오늘은 SVM알고리즘에 대해 알아봤습니다.
해당 알고리즘은 머신러닝의 기초가 되는 알고리즘으로 많은 분야에서 사용되고 있습니다.
오늘도 읽어주셔서 감사합니다.
