본문 바로가기

기초지식

SVM(Support Vector Machine)

SVM이란?
1. 두 카테고리 중 어느 하나에 속한 데이터 집합이 주어졌을때
2. 주어진 데이터집합을 바탕으로 새로운 데이터가 어느 카테고리에 속하는지 판단하는 비확률적 이진 선형분류모델을 만든다.
3. 만들어진 분류모델은 데이터가 사상된 공간에서 경계로 표현되는데 SVM알고리즘은 그 중 가장 큰 폭을 가진 경계를 찾는다. 

SVM은 데이터를 분리하는 최적의 초평면, 즉 최대 마진이 되도록 클래스를 분류하는 기법이다. 

 

 

  • 즉, 위의 그림에서 구분선과 빨강, 파랑 양쪽 데이터의 Boundary에 해당하는 Support vector의 거리인 Margin을 최대화하는 Boundary를 찾는 것이 핵심이다. 
    • 다시 정리하자면, support vector는 마진에서 가장 가까이 위치해 있는 각 클래스의 데이터를 의미한다. 
    • support vector라고 하는 이유는 이 데이터들의 위치에 따라 경계(초평면)의 위치가 달라지기 때문에 초평면 함수를 지지한다(support)는 의미에서 명명되었다. 
  • 결국 모델에서 제일 중요한 부분은 위의 그림에서 hyperplane(초평면)을 결정하는 것이고, 이를 Decision boundary라고 한다. (아래의 수식 참고)

  • 위의 수식에서의 값이 0과 비교하여 큰지, 작은지에 따라 데이터의 위치가 선(면) 위인지 아래인지 알 수 있는데, 이를 Decision Rule이라고 한다.
    • 결국 hyperplane은 a^t와 a0에 의해 결정되므로, 이를 결정하는 과정이 SVM 모델을 학습시키는 과정이라고 할 수 있다. 
    • 즉, hyperplane(초평면)을 정의하는데에는 위의 수식처럼 두개의 매개변수가 필요하게 되는데, 초평면에 수직하는 가중치벡터 w와 상수 b이다. 
초평면? 
어떤 N차원 공간에서 한 차원 낮은 N-1차원의 subspace를 말한다.
3차원의 경우 면이 되고, 2차원의 경우 선이 된다. 
위의 그래프를 예로 들면, 2차원이기 때문에 초평면은 '선'의 형식을 띈다.  

 

 

SVM은 선형 SVM과 비선형 SVM으로 나뉜다.

 

선형 SVM은 하드 마진과 소프트 마진으로 나뉜다. 

 

선형 SVM의 하드 마진 

  • 두 클래스를 분류할 수 있는 최대마진의 초평면을 찾는 방법
  • 단, 모든 훈련데이터는 마진의 바깥쪽에 위치하게 선형으로 구분해야 한다. 
    • 즉, 하나의 오차도 허용해서는 안된다는 것을 의미한다.
    • 그러나 사실상 모든 데이터를 선형으로 오차없이 나누기 어렵기 때문에, 이를 해결하고자 소프트마진이라는 개념이 나타났다.

 

선형 SVM의 소프트 마진

 

  • 어느 정도의 오분류를 허용하면서 초평면을 찾도록 하는 방식
    • 해당 결정경계로부터 잘못 분류된 데이터의 거리를 측정하는데 사용하는 Slack variable을 사용한다. 
  • 즉, 완벽한 분류가 힘들기 때문에 소프트 마진을 활용하는데 slack variable의 크기만큼 초평면 위, 아래로 오차를 허용하는 것이다. 

 

 

하드마진 & 소프트마진의 목적함수를 통한 C(cost)의 중요성 

하드마진

 

소프트마진

 

기존의 하드마진 공식에서, slack variable가 추가된 개념으로, C(cost)라는 파라미터를 통해 slack variable의 총합에 한계를 줌으로써 조정할 수 있다. 따라서, 파라미터 C는 과적합을 제어하는 중요한 역할을 수행하는데 ...

 

 

  • C가 커지면 학습오류를 허용하지 않고, 마진이 줄어들어 오류는 적지만 Overfitting의 위험이 발생한다.
  • C가 작아지면 마진이 크고 오류가 증가하여 Under-fitting의 위험이 발생한다. 

 

선형 분리가 불가능한 경우엔 비선형 SVM을 적용한다.

비선형분리의 기본개념은 선형분리가 불가능한 입력공간을 선형분리가 가능한 '고차원 특성공간으로 보내' 선형분리를 진행하고, 그 후 다시 기존의 입력공간으로 변환하면 비선형 분리를 하게 되는 것이다.

 

 

 

 

입력공간을 특성공간으로 변환하기 위해 Mapping function을 적용하는데, 간단한 저차원이 아닌 고차원에서 계산량의 증가가 매우 커지는 문제점을 해결하고자, "커널트릭"이라는 개념이 나왔다. 

커널트릭은 실제로는 데이터의 특성을 확장하지 않지만, 마치 확장한 것처럼 만들어 계산하는 방식이다. 

 

커널트릭

 

커널함수의 종류는 기본적으로 linear를 사용하고, 그 외에 Polynomial, Radial basis function, Sigmoinal이 있다. 

  • 이중 가우시안 RBF(radial basis function)의 성능이 가장 좋아 많이 사용된다.
    • 입력 공간을 무한대의 특성공간으로 보내는 방식이다.
    • 기본 C만이 아닌 Gamma라는 파라미터(하나의 데이터의 영향력을 정하는 역할)를 가진다. 
  • Polynomial은 사용자가 직접 차수를 정하는 방식이다.
  • Sigmoinal은 tanh 함수를 적용하는데 주로 신경망 학습에서 사용한다. 

 

 

 

RBF에서의 Gamma 

3차 다항식에서 Gamma값에 따른 변화

 

  • Gamma가 작아지면 결정경계의 곡률이 작아지며 과소적합이 된다.
  • Gamma가 커질수록 결정경계의 곡률이 커지며 과대적합이 된다.

 

SVM 장점

  • 과적합을 피할 수 있다.
  • 모델이 margin을 최대화하도록 학습되는 경향이 있기 때문에, 
    • 저차원, 고차원 공간의 적은 데이터에 대해 일반화 능력이 우수하다.
    • 잡음에 강하다.
  • 데이터 특성이 적어도 좋은 성능을 보인다.

 

SVM 단점

  • 커널함수 선택이 명확하지 않다.
  • 계산량 부담이 있다.
  • SVM은 기본적으로 각 특성의 범위가 비슷하도록 하는 것을 선호하는데 특성의 스케일이 서로 다르면, 큰 범위를 가진 특성이 작은 범위를 가진 특성에 비해 결정 경계를 주도할 수 있으므로, 
    • 데이터 특성의 스케일링에 민감하다.

 

해결방안) feature에 대한 scaling(표준화 standardization, 정규화 normaliztion)을 신경써준다.

 

 

https://m.blog.naver.com/winddori2002/221662413641

 

[파이썬/머신러닝] SVM(Support Vector Machine) 분류 - 이론

안녕하세요. 이번 포스팅에서는 SVM(Support Vector Machine) 이론에 대해서 다루려고 합니다. SV...

blog.naver.com

https://sanghyu.tistory.com/7

 

SVM(Support Vector Machine) 원리

어떠한 '분류'라는 문제를 풀기 위해 패턴 인식 분야는 꾸준히 발전하였다. 가장 오랜 역사를 가진 통계적 분류방법에서 출발해서 신경망이 개발되었고 트리분류기, 은닉마코프모델등이 개발되

sanghyu.tistory.com

https://buildabetterworld.tistory.com/97

 

[ML] 딥러닝 모델 - SVM

산학협력과제(스트레스 예측 모델 개발)을 진행하면서 여러가지 Classification model을 다뤄볼 기회가 있었는데, 그중 하나가 바로 SVM이다. 간단하게 정리해 본다. < SVM : Support Vector Machine > Support Vecto

buildabetterworld.tistory.com

 

'기초지식' 카테고리의 다른 글

Ridge Classifier, Ridge Regression, L2 Normalization, L1 Normalization  (0) 2024.05.09
Logistic Regression  (0) 2024.05.09
XGBoost  (0) 2024.05.09
Hyperparameter Optimization  (0) 2024.05.09
Random Forest  (0) 2024.05.08