본문 바로가기
데이터관련공부/Machine Learning

Support Vector Machine (Classification)

by 자유롭고 싶은 키털트 2023. 3. 11.

SVM (Support Vector Machine) 은 분류 (Classification) 에 속하는 지도 학습형 알고리즘으로서, 학습을 통해 벡터 공간 내 집을 분류하는 경계 혹은 경계면 (Seperator) 을 찾음으로써 데이터를 분류한다.

 

이 때, 모든 데이터들은 데이터셋 내 각 feature 들이 고유의 축을 갖는 벡터 공간 내의 좌표에 점으로 표시 되며 (벡터 공간에 맵핑), 각 데이터는 이미 클래스별로 군집을 이루고 있다고 가정한다. 

 

속성(열 벡터) 이 2개 존재하는 데이터셋은 2차원 평면 공간에 좌표로 표시되고, 3개면 3차원 공간에 표시된다. 

 

 

 

  • 여기서 Seperator 는 군집을 분리하는 초평면(Hyperplane), 일종의 경계면 이라 할 수 있다. (위 스크린샷 상에서 빨간 평면 사각형). 이 경계면을 찾음으로써 새로운 데이터셋이 입력 됬을 때 (new case) 경계면을 기준으로 분류하는 원리이다. 
  • 데이터를 고차원 공간, 백터 공간에 매핑하는 것을 커널링 이라고 한다. 이 커널링 변환에 사용하는 함수를 커널 함수라고 한다. (Linear, Polynomial, RBF (Radial Basis Function), Sigmoid 등의 유형이 있으며, 라이브러리 에 대체로 이미 구현이 되어 있다)
  • 두 군집 (클래스) 사이의 최적의 초평면(Hyperplane) 을 찾는 방법은, 두 군집 (클래스) 사이에 최대한 여백 (Margin) 을 두어 분리할 수 있는 평면을 찾는 방식으로 모델을 훈련 시키는 것이다.  The hyperplane is learned from training data using optimization procedure that maximizes the margin.
  • 하기 스크린샷 예시에서 파란색 동그란 점과 갈색 동그란 점을 구분하는 Hyperplane 은 이 두 집단의 Margin 을 최대한으로 보장하는 빨간색 선이다. (이 선도 고유의 방정식을 가지며, Support Vector (밑에 점선)도 고유의 방정식을 가진다.)
  • 분류 알고리즘으로서 SVM 방식은 Hyperplane 의 정확성, 메모리의 효율성 등의 장점이 있으나 Overfitting (과적합) 의 위험, 그리고 각 클래스에 대한 확률을 제공하지 못하는 점, 데이터셋이 클 때는 비효율적 이고 small dataset 에만 적합하다는 단점도 존재한다. 
  • 주로 고차원 맵핑이 적용될 수 있는 이미지 인식 분류, 텍스트 마이닝, 스팸 메일 인식, Sentiment analysis, 유전자 분류 등에 활용될 수 있다. 

 

하기는 파이썬 코드 예시이다.

커널링을 위해 하기 예시에서는 SVC(kernel='rbf') 를 사용하였지만, linear, polynomial, sigmoid 등 다른 유형도 입력 가능하다. 

 

from sklearn import svm
 
clf = svm.SVC(kernel='rbf'# svm 모듈에서 분류 모델인 svc 인스턴스 객체를 생성하고 모델을 학습시킨다
 
clf.fit(X_train, y_train) # Train 데이터로 모델 학습
 
yhat = clf.predict(X_test) # Test 데이터로 예측
yhat[0:5]
 
 
'''
The SVM algorithm offers a choice of kernel functions for performing its processing. Basically, mapping data into a higher dimensional space is called kernelling. The mathematical function used for the transformation is known as the kernel function, and can be of different types, such as:
 
1.Linear
2.Polynomial
3.Radial basis function (RBF)
4.Sigmoid
 
Each of these functions has its characteristics, its pros and cons, and its equation, but as there is no easy way of knowing which function performs best with any given dataset. We usually choose different functions in turn and compare the results. Let just use the default, RBF (Radial Basis Function) for this lab.
'''
cs

 

 

 

 

 

본 포스팅은 하기 Coursera 강의 및 정보 문화사의 파이썬 머신러닝 판다스 데이터분석 책을 참고하였습니다:

 

https://www.coursera.org/learn/machine-learning-with-python/lecture/y2EZu/support-vector-machine

 

Support Vector Machine - Linear Classification | Coursera

 

www.coursera.org

 

반응형