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

 머신러닝은 지도학습과 비지도학습으로 나눠지고, 지도학습은 분류와 회귀(예측)으로 나눠진다. 우리는 이 글에서 지도학습 중 분류의 대표적인 알고리즘인 Support Vector Machine(서포트 벡터 머신)을 알아보고자 한다. 이 글에서 Support Vector Machine을 줄여서 간단히 SVM이라고 부르겠다.

SVM 결정 경계

 SVM(서포트 벡터머신)이란 한 줄로 정의 하자면 결정 경계, 즉 분류를 위한 기준 선을 정의하는 모델이다. 그래서 분류되지 않은 새로운 점이 나타나면 경계의 어느 쪽에 속하는지 확인해서 분류를 수행할 수 있게 된다. 그래서 이 결정 경계라는 걸 어떻게 정의하고 계산하는지 이해하는 게 SVM의 핵심이다.

 위 그림 예시를 보면 데이터에 2개 속성(feature)이 있다면 결정 경계는 간단한 선 형태가 될 것이다. 하지만 속성이 3개로 늘어난다면 3차원이 되어, 결정 경계는 평면이 된다. 속성이 n개처럼 무수히 많을 때는 결정 경계도 고차원이 될 텐데, 이를 초평면이라고 부른다.


최적의 결정 경계(Decision Boundary) 찾기

최적의 결정 경계 찾기(마진과 서포트 벡터)

 최적의 결정 경계를 찾기 위해서는 데이터 군으로부터 최대한 멀리 떨어지는 것이 좋다. 즉 빨간색, 파란색 동그라미와 최대한 멀어져야 한다. support vector machine(서포트 벡터 머신)에서 support vector는 결정 경계와 가까이 있는 데이터 포인트들을 의미한다. 이 데이터들이 결정 경계를 정의하는 결정적인 역할을 하게 된다.

  마진(Margin)은 결정 경계와 서포트 벡터 사이의 거리를 의미한다. 위 그림과 같이 실선인 결정 경계와 서포트 벡터를 기준으로 그어진 점선 사이의 거리가 마진이다. 그래서 최적의 결정 경계는 이 마진을 최대화 해야 한다.


이상치(Outlier) 허용하기

좌(하드 마진) - 우(소프트 마진)

 SVM은 이상치(outlier)를 허용하냐, 그렇지 않느냐에 따라 마진이 달라진다. 왼쪽 그림처럼 이상치를 허용하지 않으면 서포트 벡터와 결정 경계 사이의 거리가 매우 좁다. 이걸 하드 마진(hard margin)이라고 하는데, 개별적인 학습 데이터들을 다 놓치지 않으려고 이상치를 허용해버리지 않으면 오버피팅(overfitting)문제가 발생할 수 있다.

 오른쪽 그림은 이상치를 마진 안에 어느정도 포함되도록 너그럽게 기준을 잡았다. 이걸 소프트 마진(soft margin)이라고 하는데, 너그럽게 허용하니까 서포트 벡터와 결정 경계 사이의 거리가 멀어졌다. 즉 마진이 너무 커지기 때문에 대충 학습하는 꼴이 되어 언더피팅(underfitting)문제가 발생할 수 있다.

 이사치는 scikit-learn에서 SVC(C = 0.01)처럼 파라미터 C 값으로 조정할 수 있다. C값이 클수록 하드마진이고 작을수록 소프트마진이다. 이 C값을 최적화하는 법은 여러가지 C를 넣어보면서 모델을 검증하는 수 밖에 없다.


커널(kernel) 변경하기

선형이 아닌 원형일 때, 커널 변경

SVM모델을 만들 때 결정 경계의 모양을 번경해야 될 때가 있다. 위 그림처럼 데이터들이 원형으로 있으면 결정 경계도 당연히 직선이 아닌 원형의 형태의 모양이 되어야 한다. 이럴 때 SVC(kernel = '모양이름')이름을 통해 kernel의 모양을 변경할 수 있다. 원형일 때는 poly와 rbf 등을 활용하면 된다.


gamma(감마)의 값

좌(gamma=1) - 우(gamma=10)

rbf커널에는 SVC(gamma = 1), SVC(gamma = 10)처럼 gamma를 변경해줄 수 있다. 여기서 gamma란 결정 경계를 얼마나 유연하게 그을 것인지 정해주는 것이다. 즉 학습 데이터에 얼마나 민감하게 반응할 것인지 모델을 조정하는 것이다.

gamma값을 높이면 결정 경계를 구불구불한 모양으로 긋게 되는데, 이는 자칫 잘못하면 overfitting을 초래할 수 있다. 반대로 gamma를 낮추면 학습 데이터에 의존하지 않고 결정 경계를 긋게 되므로, underfitting이 발생할 수 있다.

위 그림을 예시로 들자면 gamma=1일 때 학습 데이터 간의 분류가 대충 된 것처럼 보인다. gamma=10일 때는 너무 과도하게 분류되어 gamma의 값을 변경하면서 최적의 값을 찾아야 한다.


정리

SVM은 분류에 사용되는 지도학습 머신러닝 모델이다. SVM에서는 결정 경계가 제일 중요한데, 이는 서포트 벡터를 활용해서 결정하게 된다. 서포트 벡터와 결정 경계 사이의 거리를 마진(Margin)이라고 하고, 허용 가능한 오류 범위 내에서 최대 마진이 되도록 만들어야 한다.

파라미터 C는 이상치를 허용하는 양을 조절하고, C값이 클 수록 하드 마진이 되고 작을 수록 소프트 마진을 만든다. 선형에서 분리할 수 없는 점들을 분류하기 위해 커널(kernel)을 사용하게 된다. rbf커널에는 gamma라는 파라미터가 있는데 gamma의 값을 조정하여 모델을 최적화해야 한다.

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기