본문 바로가기

Machine Learning_모델설계_Python

SVM_1 개념

안녕하십니까 배도리입니다. 이번 게시글에서는 SVM(Support Vector Machine)을 다루겠습니니다.

 

SVM

서포트 벡터 머신(Support Vector Machine, SVM)은 진 학습 데이터를 바탕으로 새로운 입력 데이터가 어떤 카테고리에 속하는지 판단하는 비확률적 이진 선형 분류 모델입니다.

SVM은 패턴 인식, 자료 분석을 위한 지도 학습 모델의 한 종류로서, 최적의 분류 경계를 찾아내는 데 사용됩니다. 이 최적의 분류 경계란, 서로 다른 카테고리의 데이터를 가장 넓게 갈라주는 결정 경계(decision boundary)를 말합니다.

 SVM은 주어진 데이터를 바탕으로 두 그룹을 가장 잘 구분하는 '결정 경계'를 찾는데 초점을 두며 이는 두 그룹 사이의 마진(margin, 서 분류를 위한 결정 경계와 각 클래스의 가장 가까운 데이터 포인트 사이의 거리)을 최대화하는 방향으로 설정됩니다. 'Support Vector'라는 이름은 이 마진을 최대화하는데 기여하는 핵심 데이터 포인트들을 가리킵니다. 

 

결국 SVM은 이 마진을 최대화하려고 시도하여 이는 결정 경계가 각 클래스의 가장 가까운 데이터 포인트(서포트 벡터)로부터 최대한 멀리 떨어져 있음을 보장하려는 것입니다. 이렇게 하면 새로운 데이터가 들어왔을 때, 모델이 더 견고하고 일반화된 예측을 할 수 있습니다.

노란색 배경의 점이 Support Vector, 결정 경계선에 가장 가까이에 있는 각 클래스의 데이터

 

초평면

SVM의 주요 목적은 두 클래스 간의 마진(최단 거리)을 최대화하는 결정 경계인 초평면을 찾는 것입니다. 이 초평면은 각 클래스의 가장 가까운 데이터 포인트(서포트 벡터)로부터 가능한 한 멀리 떨어져 있습니다.

초평면은 고차원 공간에서 '평면'의 개념을 확장한 것입니다. 예를 들어, 2차원 공간에서는 선이 결정 경계가 되며, 3차원 공간에서는 평면이 결정 경계가 됩니다. 4차원 이상의 공간에서는 '초평면'이 결정 경계를 형성하게 됩니다. 


 

마진

결국 svm은 마진을 최대화 해야하는것인데 이것을 어떻게 계산해야할까요!?

여기서, 𝜽와 𝜃0은 결정 경계를 정의하는 파라미터들입니다. 𝜽는 초평면의 방향(즉, 법선 벡터, 정규직교,수직 벡터)을 결정하고, 𝜃0는 초평면의 위치를 조정합니다.

데이터는{(𝐱𝑖 , 𝑦𝑖)}𝑖^m=1쌍으로 이루어져 있으며, 여기서 𝐱𝑖는 각각의 입력 데이터 포인트를, 𝑦𝑖는 각 데이터 포인트에 대한 레이블(클래스)을 나타냅니다.

SVM 알고리즘은 이 데이터에 기반하여 결정 경계를 학습하게 됩니다. 이 과정에서 SVM은 최대 마진 초평면 𝜽 ∙ 𝐱 + 𝜃0 = 0을 찾게 됩니다. 여기서 "최대 마진"이란, 결정 경계와 가장 가까운 데이터 포인트들 사이의 거리(마진)를 최대화하는 것을 의미합니다.

상단 초평면 𝜽 ∙ 𝐱1 + 𝜃0 = +1과 하단 초평면 𝜽 ∙ 𝐱2 + 𝜃0 = -1은 결정 경계를 둘러싸는 마진을 정의합니다. 이 두 초평면 사이의 거리가 바로 마진이며, SVM은 이 마진을 최대화하려고 합니다. 상단 초평면 위의 점 𝐱1는 +1 클래스를, 하단 초평면 위의 점 𝐱2는 -1 클래스를 나타냅니다. 이 두 클래스는 결정 경계에 의해 구분됩니다.

 

 

마진을 구할 때 정사영(projection) 개념이 활용됩니다.
결정 경계에 가장 가까운 서포트 벡터들이 결정 경계에 수직으로 떨어뜨리는 거리, 즉 그들의 정사영이 바로 마진이 됩니다. 이 때 결정 경계를 정의하는 벡터를 법선 벡터라 하며, 이 법선 벡터가 바로 마진을 구할 때 사용되는 𝜽입니다. 따라서 마진은 이 법선 벡터 𝜽에 대한 서포트 벡터들의 정사영의 길이로 생각할 수 있습니다.

정사영

 

 

 

이후 정사영을 이용해서 마진의 크기를 구해보겠습니다.

코산인을 이용

마진의 공식을 보면, Margin = 2/||𝜽|| 이라는 식이 있습니다. 이 식에서 볼 수 있듯이, 𝜽의 크기 ||𝜽||가 크면 클수록 분모가 커져서 결국 마진의 값은 작아지게 됩니다. 반대로, 𝜽의 크기 ||𝜽||가 작아질수록 분모가 작아지므로 마진의 값은 커지게 됩니다. 이렇게 보면, 벡터 𝜽의 크기와 마진은 반비례 관계에 있다고 볼 수 있습니다. 

 

 

결국!!!! 서포트 벡터 머신(SVM)에서는 이 𝜽의 크기를 최소화하여 마진을 최대화하는 것이 목표이며 마진을 최대화하는 𝜽와 𝜃0를 찾는 최적화 문제로 정의될 수 있습니다.