서포트 벡터 머신은 섞여있는 데이터들의 분포에 가장 적절한 하나의 직선을 그어서 데이터를 분류하는 방법입니다.
위의 그림에서 보면 데이터는 파란 네모와 주황 동그라미 2가지로 분류가 됩니다. 이 데이터를 나누기 위해 긋는 경계선을 초평면(hyper plane)이라고 하고, 이 초평면을 긋기 위해 사용되는 초평면에 가장 가까이 있는 데이터들을 가리켜 서포트 벡터라고 합니다. 그리고 경계선인 초평면과 서포트 사이의 거리를 마진(margin)이라고 합니다.
서포트 벡터 머신에서는 두 데이터를 나눌 수 있는 수많은 경계선 중에서 가장 최선의 경계선을 찾는 것이 목표입니다. 가장 최선의 경계선이라면 서포트 벡터와 초평면 사이가 가장 멀리 있는 직선이 가장 이상적입니다. 안정적으로 두 집단을 분리할 수 있기 때문입니다. 따라서 서포트 벡터 머신에서는 마진이 가장 큰 초평면을 찾도록 알고리즘이 만들어져 있습니다. 2차원 평면의 경우 직선은 y=ax+b와 같이 기울기 a와 y절편 b에 따라서 결정이 되므로 마진을 가장 크게 만드는 a와 b를 찾도록 인공지능 알고리즘이 정해져 있습니다. (이 초평면의 결정 과정에는 대학에서 배우는 선형대수학의 내용과 미적분학의 편미분에 대한 내용이 들어갑니다. 따라서 이 글에서는 다루지 않을 예정입니다.)
그러나 데이터의 경우 하나의 선을 통해 완벽하게 2개로 구분되지 않는 경우가 많습니다. 간혹 일부의 데이터를 제외하면 더 좋은 경계선을 그을 수 있는 경우, 그 데이터들을 이상 값(outlier)으로 처리하는 것이 더 낫습니다. 너무 완벽한 선을 그으려다보면 훈련 데이터에만 최적화되고 실전 데이터에서는 큰 효과가 없는 오버 피팅 현상(overfitting) 현상이 발생합니다. 한 명에게만 너무 완벽하게 옷을 맞추는 경우 다른 사람에게는 잘 맞지 않는 경우와 같은 사례입니다.
회귀의 이름이지만 분류에 사용하는 로지스틱 회귀
회귀 분석은 데이터의 분석을 대표할 수 있는 직선을 활용해서 값을 예측하는데 주로 사용합니다. 예를 들면 당의 섭취량과 당뇨병의 발생 확률은 서로 비례하므로, 평소 당의 섭취량에 따라 당뇨병 발생 확률을 회귀 분석으로 예측할 수 있습니다.
그런데 연속적인 수를 값으로 가지는 확률과 달리 당뇨병의 발생 여부는 ‘예/아니오’ 2가지로 표현이 됩니다. 따라서 2가지 값 중 어디에 해당하는지를 좀 더 쉽게 알아보는 모델이 더욱 편리합니다. 이때 직선의 방정식을 로지스틱 함수라는 이름을 가진 함수에 입력하면 직선이 S자 모양으로 구부러지면서 2가지의 값에 좀 더 가깝게 변형이 됩니다. 따라서 예측에 주로 사용되는 회귀 분석을 분류에 적합한 로지스틱 모델로 변형하여 사용할 수 있습니다.
[로지스틱 함수란? 이름 뜻이 뭐예요?]
원래 어떤 결과의 참/거짓에 대해 참을 거짓으로 나눈 비율을 오즈(odds)라고 합니다. 그리고 그 오즈에 자연로그를 취한 값을 로짓(logit)이라고 하죠. 그리고 그 로짓을 1차식 ax+b와 같다고 놓고 p에 관하여 구한 x의 식을 함수로 설정한 함수를 로지스틱 함수라고 부릅니다.
이 로지스틱 함수는 모든 x에 대하여 값을 0과 1 사이로 구할 수 있습니다. 또한 그림에서 볼 수 있듯 로지스틱 함수의 값이 0과 1 가까이에서는 변화가 작고, 0.5를 중심으로는 0 또는 1로 급격하게 변하는 특징이 있습니다. 이 때문에 두 값 중 어디에 가까운지를 살펴보기에 적합합니다.