Broccoli's House

#2-(7) 지도학습 알고리즘 : 서포트 벡터 머신(SVM) 본문

공부/머신러닝

#2-(7) 지도학습 알고리즘 : 서포트 벡터 머신(SVM)

김콜리 2018. 2. 1. 20:27

※ 이 글의 내용은 O'REILLY의 <파이썬 라이브러리를 활용한 머신러닝> 책을 기반으로 한다.




지도 학습 알고리즘 : 서포트 벡터 머신(SVM)




  • 서포트 벡터 머신
 - 서포트 벡터 머신(Support Vector Machine : SVM) : 서포트 벡터 머신 알고리즘은 학습이 진행되는 동안 각 훈련 데이터 포인트가 두 클래스 사이의 결정 경계를 구분하는 데 얼마나 중요한지를 학습한다. 일반적으로 훈련 데이터의 일부, 두 클래스 사이의 경계에 위치한 데이터 포인트들만이 결정 경계를 만드는데 영향을 준다. 이런 데이터 포인트를 서포트 벡터(Support Vector)라 하며, 여기서 서포트 벡터 머신이라는 이름이 유래하였다.

 - 새로운 데이터 포인트에 대해 예측할 때는, 데이터 포인트와 각 서포트 벡터와의 거리를 측정한다. 분류에 대한 결정은 서포트 벡터까지의 거리에 기반하며 서포트 벡터의 중요도는 훈련 과정에서 학습한다. 간단하게 말해서, 서포트 벡터 머신은 서로 다른 클래스를 지닌 데이터 사이의 간격이 최대가 되는 선이나 평면을 찾아 이를 기준으로 각 데이터들을 분류하는 모델이다. 다시 말해 데이터 사이에 존재하는 여백(margin)을 최대화하여 일반화하는 성능을 극대화한 모델이다.




  • 커널 서포트 벡터 머신
 - 커널 서포트 벡터 머신(Kernelized Support Vector Machine : KSVM) : 커널 서포트 벡터 머신은 앞에서 배운 분류용 선형 서포트 벡터 머신과는 다르게 선형적으로 분류되지 않는 클래스를 구분하도록 비선형적 특성을 추가한 알고리즘이다. 즉 비선형 서포트 벡터 머신이다.



 - 직선과 평면, 초평면은 유연하지 못하여 저차원 데이터 세트에서 선형 모델은 매우 제한적이다. 분류를 위한 선형 모델은 직선으로만 데이터 포인트를 나눌 수 있어서 위와 같은 데이터 세트에는 잘 들어맞지 않는다. 이러한 선형 모델을 유연하게 만드는 방법은 특성끼리 곱하거나 특성을 거듭제곱하는 식으로 새로운 특성을 추가하는 것이다. 그러면 더 고차원의 데이터가 생성된다.



 - 새롭게 생성된 고차원의 데이터 세트에서는 선형 모델과 3차원 공간의 평면을 사용해 두 클래스를 구분할 수 있다. 그러나 이것을 원래 특성으로 투영해보면, 이 선형 SVM 모델은 더 이상 선형이 아닌 비선형의 모습을 확인할 수 있다.




 - 데이터 세트에 비선형적 특성을 추가하여 선형 모델을 강력하게 만든것이다. 하지만 대부분의 경우에 어떠한 특성을 추가해야 하는지 모르고, 또한 특성을 많이 추가하면 연산 비용이 커진다. 이러한 상황에서 수학적 기교를 사용하여 새로운 특성을 많이 만들지 않고도 고차원에서 분류기를 학습시킬 수 있는데, 이것을 커널 기법(Kernel Trick)이라 하며 실제로 데이터를 확장하지 않고도 확장된 특성에 대한 데이터 포인트들의 거리를 계산한다. 커널 기법에는 앞서 이야기한 특성을 추가하여 고차원에서 모델을 학습시키는 다항식 커널과 차원이 무한한 특성 공간에 매핑하는 가우시간 커널(RBF 커널) 두 가지가 있다. 커널 기법과 관련된 추가적인 내용은 다소 복잡하여 여기서는 다루지 않는다. 




  • 서포트 벡터 머신 평가

 - 장점 : 커널 서포트 벡터 머신은 강력한 모델이며 다양한 데이터 세트에서 잘 작동한다. 데이터의 특성이 몇개 되지 않더라도 복잡한 결정 경계를 만들 수 있다. 특히나 저차원과 고차원의 데이터(특성이 적을 때와 많을 때)에서 잘 작동한다.


 - 단점 : 샘플이 많을수록 속도가 느리고 메모리 할당이 크며, 성능이 잘 나오지 않는다. 또한 데이터 전처리와 매개변수 설정에 따라 정확도가 다르기 때문에 신경을 많이 써야한다. 게다가 예측이 어떻게 결정되었는지 이해하기 어렵고 모델을 분석하기도 어렵다.

Comments