티스토리 뷰

머신러닝

[4] Support Vector Machine(SVM)

up_one 2024. 5. 12. 15:44

이번 머신러닝 카테고리의 글에서는 knn 알고리즘과 더불어 지도학습 분류 모델 중 하나인 Support Vector Machine(SVM)의 개념과 동작 원리에 대해 설명하겠습니다.

 

SVM은 데이터의 클래스를 분류하는 최적의 경계를 찾는 알고리즘입니다. 이때의 경계는 반드시 선형이어야 하는 조건이 존재합니다. SVM는 Margin을 최대화하는 최적의 경계라 정의합니다.

 

 

 

Margein(마진)은 각 클래스의 말단에 위치하는 데이터들 사이의 거리를 뜻합니다. 우리는 오직 각 클래스의 말단에 위치하는 데이터들만을 이용해 경계를 찾는 것이 핵심입니다. 최적의 경계를 찾는 데 사용하는 Margin에 위치하는 데이터들을 Support Vector라고 정의합니다. 

 

Margin(마진)을 구하기 위해서는 선형대수학의 Norm(벡터의 크기)을 이용합니다. Norm은 선형대수학에서 벡터의 크기를 의미하며 다양한 방법으로 계산할 수 있습니다.

  • 1- norm : 벡터의 각 원소의 크기들의 절댓값들의 합
  • 2- norm : 두 좌표 사이의 거리, 2차원 평면 위 벡터 좌표의 제곱합의 제곱근

1- norm 공식

 

2-norm 공식

 

Norm을 이용하여 Margin을 구하는 방법은 간단합니다. Support Vector에 해당하는 데이터를 지나가는 직선들을 각각 y=1, y=-1로 정의하는 것부터 시작합니다. 그 후 y = 0에 해당하는 직선을 다음과 같이 정의합니다

y=0에 해당하는 직선의 공식

 

Support Vector을 지나가는 직선

 

y =1보다 큰 영역에 해당하는 데이터들을 Positivie Group, y=-1보다 작은 영역에 해당하는 데이터들을 Negative Group으로 정의합니다. 각각의 그룹을 y=0에 해당하는 직선의 공식을 활용해 다음과 같이 표현할 수 있습니다.

 

positive support vector와 negative support vector

 

Margin은 이 두가지 공식을 이용해 구할 수 있습니다. Margin 값을 d라고 놓고 Positive Group에서 Negative Group 사이의 거리를 구하면, 최종적으로 Margin을 구할 수 있습니다.

positive group과 negative group 사이의 거리

 

Marigin을 구하는 공식

 

SVM은 단지 2개의 클래스를 분류하는 것뿐만 아니라 3개 이상의 클래스를 분류하는 데에도 사용됩니다. 클래스 A, B, C, D가 있을 때 SVM은 클래스 A / 클래스 A가 아닌 것 -> 클래스 B / 클래스 B가 아닌 것 ->.... 의 과정을 반복하여 4개의 클래스를 분류할 수 있습니다. 

 

이런 SVM은 과적합을 피하고, 분류 성능이 높으며 적은 데이터에 대해서도 일반화를 할 수 있다는 장점이 존재합니다.

'머신러닝' 카테고리의 다른 글

[6] 주성분 분석(PCA)  (0) 2024.05.17
[5] KMeans 알고리즘  (0) 2024.05.15
[3] K 근접 이웃 알고리즘(knn)  (0) 2024.05.10
[2] 선형회귀  (0) 2024.05.05
[1] 머신러닝의 분류와 과적합  (0) 2024.05.03
TAG more
글 보관함
최근에 올라온 글