새소식

머신러닝 & 딥러닝

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

  • -

서포트 벡터 머신(Support Vector Machine, SVM)은 분류와 회귀 문제를 해결하기 위한 머신러닝 알고리즘이다. SVM의 핵심 아이디어는 마진(margin)을 최대화하여 클래스 간의 경계를 찾는 것이다. 마진은 클래스를 구분하는 초평면(hyperplane)과 가장 가까운 훈련 샘플 간의 거리로 정의된다. 이러한 가장 가까운 훈련 샘플들을 서포트 벡터(support vectors)라고 한다.

조금 더 알기 쉽게 직관적으로 설명하자면, 2차원 평면에 빨간색과 파란색 점들이 분포되어 있다고 가정해보자. SVM의 목표는 빨간색과 파란색 점을 구분하는 선을 그리는 것이다. 이 선은 두 클래스의 가장 가까운 점들 사이의 거리가 최대가 되도록 그어진다. 이렇게 그어진 선은 분류 성능이 좋고, 새로운 데이터에 대한 예측이 더욱 견고해진다.



그러나, 실제 데이터는 이렇게 항상 선형적으로 구분되지 않는다. 이런 경우에는 커널 트릭(kernel trick)이라는 기법을 사용하여 데이터를 더 높은 차원의 공간으로 변환한다. 이렇게 고차원으로 변환된 데이터는 선형으로 구분될 수 있는 경우가 많아진다. 예를 들어, 원 모양으로 섞여 있는 두 클래스를 3차원 공간으로 매핑하면, 이 두 클래스를 구분하는 평면을 찾을 수 있다.

 

$$\min_{w, b} \frac{1}{2} ||w||^2 + C \sum_{i=1}^n \xi_i \\$$
$\text{subject to} \quad y_i(w^Tx_i + b) \geq 1 - \xi_i, \quad \xi_i \geq 0$

 

여기서 $w$는 초평면의 법선 벡터(normal vector), $b$는 편향(bias), $C$는 정규화 상수, $\xi_i$는 슬랙 변수(slack variable)입니다. 슬랙 변수는 각 샘플에 대한 마진 오차를 나타낸다.

커널 함수는 입력 데이터를 고차원 공간으로 매핑함으로써 선형으로 분리 가능한 형태로 변환한다. 일반적으로 사용되는 커널 함수로는 선형 커널, 다항 커널, 가우시안 RBF 커널 등이 있다.

커널 함수 $K(x_i, x_j)$는 아래와 같이 정의된다.

 

$K(x_i, x_j) = \phi(x_i)^T \phi(x_j)$

 

여기서 $\phi(x)$는 데이터를 고차원 공간으로 매핑하는 함수다.

커널 트릭을 사용한 SVM은 다음과 같은 형태의 목적 함수를 최소화하여 학습한다.

 

$$\min_{\alpha} \frac{1}{2} \sum_{i=1}^n \sum_{j=1}^n \alpha_i \alpha_j y_i y_j K(x_i, x_j) - \sum_{i=1}^n \alpha_i \\$$
$\text{subject to} \quad 0 \leq \alpha_i \leq C, \quad \sum_{i=1}^n \alpha_i y_i = 0$

 

커널 트릭을 사용하면 선형이 아닌 복잡한 결정 경계를 찾을 수 있으며, 비선형 분류 문제에 대해서도 효과적으로 작동한다. 학습이 완료된 후, 새로운 데이터 포인트 $x'$에 대한 예측은 다음과 같이 수행된다.

 

$f(x') = \text{sign} \left( \sum_{i=1}^n \alpha_i y_i K(x_i, x') + b \right)$

 

여기서 $b$는 편향(bias).

결국, 커널 트릭을 사용한 SVM은 고차원 공간에서 선형 결정 경계를 찾는 방법으로, 비선형 분류 문제에 대해서도 잘 작동하는 강력한 머신러닝 알고리즘이다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.