머신러닝

서포트 벡터 머신(Support Vector Machine)

데이터_박과장 2023. 3. 28. 10:22

서포트 벡터 머신(Support Vector Machine 또는 SVM)은 지도 학습 알고리즘 중 하나로, 분류와 회귀 분석에 모두 사용됩니다. 주로 분류 문제에 사용되며, 결정 경계(decision boundary)를 찾아 데이터를 분류하는 데 사용됩니다.

SVM은 데이터를 분류하는 결정 경계를 찾기 위해 수행됩니다. 이 때, SVM은 최적의 결정 경계를 찾기 위해 최대 마진(margin)을 지니는 초평면(hyperplane)을 찾습니다. 여기서 마진이란 결정 경계와 가장 가까운 데이터 간의 거리를 의미합니다. SVM은 결정 경계를 찾을 때, 서포트 벡터(support vector)라는 개념을 사용합니다. 서포트 벡터는 결정 경계와 가장 가까이 위치한 데이터 포인트를 의미하며, 결정 경계를 찾는 데 있어서 가장 중요한 역할을 합니다.

SVM은 다양한 종류의 커널(kernel) 함수를 사용하여 비선형 문제를 해결할 수 있습니다. 커널 함수란 원래의 특징 공간(feature space)에서는 선형으로 분리되지 않는 데이터를 고차원 공간으로 매핑(mapping)하는 함수입니다. SVM은 이러한 매핑을 수행하고, 고차원 공간에서 선형으로 분리되는 결정 경계를 찾아내어 비선형 문제를 해결합니다.

SVM은 분류와 회귀 분석에서 모두 사용할 수 있으며, 일반적으로 다른 알고리즘들과 비교하여 높은 성능을 보입니다. 그러나 SVM은 계산 비용이 높고, 매개변수 튜닝에 민감하므로, 데이터셋의 크기와 특성에 따라 최적의 모델을 찾기 위한 노력이 필요합니다.

 

출처: javatpoint

 

 

서포트 벡터 머신의 종류:

 

  • 선형 SVM: 선형 SVM은 선형으로 분리 가능한 데이터에 사용됩니다. 즉, 데이터가 단일 직선을 사용하여 두 개의 클래스로 분류될 수 있다면, 이러한 데이터를 선형으로 분리 가능한 데이터라고하며, 이를 위해 사용되는 분류기를 선형 SVM 분류기라고 합니다.
  • 비선형 SVM: 비선형 SVM은 비선형으로 분리 가능한 데이터에 사용됩니다. 즉, 데이터가 직선을 사용하여 분류할 수 없다면, 이러한 데이터를 비선형 데이터라고하며, 사용되는 분류기를 비선형 SVM 분류기라고합니다.

 


하이퍼플레인 및 서포트 벡터:

  • 하이퍼플레인: n 차원 공간에서 클래스를 구분하기 위해 여러 개의 선/결정 경계가 있을 수 있지만, 데이터 포인트를 분류하는 데 도움이되는 최상의 결정 경계를 찾아야합니다. 이 최상의 결정 경계를 SVM의 하이퍼플레인이라고합니다. 하이퍼플레인의 차원은 데이터 집합에 존재하는 특징에 따라 달라집니다. 즉, 2 개의 특징이있는 경우 (이미지에 표시된 것과 같음) 하이퍼플레인은 직선이됩니다. 3 개의 특징이있는 경우 하이퍼플레인은 2 차원 평면이됩니다.
    항상 데이터 포인트 사이의 최대 마진을 가진 하이퍼플레인을 만들어야 함을 기억해 주시면 됩니다.
  • 서포트 벡터: 하이퍼플레인과 가장 가까운 데이터 포인트 또는 벡터, 즉 하이퍼플레인의 위치에 영향을 주는 벡터를 서포트 벡터라고합니다. 이러한 벡터가 하이퍼플레인을 지원하므로 서포트 벡터라고합니다.

 


서포트 벡터 머신 (SVM) 사용법: 선형 SVM

SVM 알고리즘을 예시로 설명하겠습니다. x1과 x2라는 두 가지 기능을 가진 데이터 셋이 두 개의 구역 (녹색과 파랑)을 가지고 있습니다. (x1, x2) 의 데이터 포인트들을 녹색 또는 파랑 중 하나의 구역으로 분류가 필요합니다. 

 

출처: javatpoint


직선을 사용하여 두 클래스를 분리 할 수 있습니다. 그러나 아래와 같이 이를 분리하는 여러 가지 방법이 있습니다.

 

출처: javatpoint


SVM 알고리즘은 최적의 결정 경계를 찾아주며 이 최적의 경계 또는 영역을 하이퍼플레인이라고합니다. SVM 알고리즘은 양쪽 클래스에서 가장 가까운 지점을 찾습니다. 이러한 지점을 지원 벡터라고합니다. 벡터와 하이퍼플레인 사이의 거리를 마진이라고하며 SVM의 목표는이 마진을 최대화하는 것입니다. 마진이 최대인 하이퍼플레인을 최적 하이퍼플레인이라고합니다.

 

출처: javatpoint

 

서포트 벡터 머신 (SVM) 사용법: 비선형 SVM

 

비선형 데이터를 분리하기 위해서는 하나 이상의 차원을 추가해야 합니다. 선형 데이터는 x와 y 두 차원을 사용하여 분리할 수 있었지만, 아래와 같은 비선형 데이터의 경우에는 선형방식으로는 분류해 줄 수 없습니다. 이를 해결하기 위해서는 세 번째 차원 z를 추가해야 합니다. 이 차원은 z=x^2 + y^2 와 같이 계산됩니다.

 

출처: javatpoint

 

세 번째 차원을 추가함으로써, 샘플 공간은 다음과 같이 변합니다.

 

출처: javatpoint

 

따라서 SVM은 아래와 같이 데이터셋을 클래스로 분류할 수 있습니다.

 

출처: javatpoint

 

3차원 공간에서 분류 경계면은 x-축에 평행한 평면으로 보입니다. 만약 z=1인 2차원 공간으로 변환한다면 다음과 같이 됩니다. 아래와 같이 최종적인 분류 결과를 산출할 수 있습니다.

 

출처: javatpoint