서포터 벡터 머신(SVM) 개념정리
서포터 벡터 머신
- 다양한 데이터 분포에도 잘 작동하는 분류기법 중 최상의 기법
- 정확도 측면에서 다른 분류기법보다 우수하다.
- 의사결정나무처럼 직관적인 해석이 불가능하다. ( 어떤 이유로 데이터들이 분류되었는지 알수 없다.)
- 결과해석은 의사결정 나무가 좋고, 높은 정확도를 위해서는 SVM 이 좋다.
최대마진분류기 > 서포트 벡터 분류기 > 서포트벡터머신
최대 마진 분류기
- 각 관찰 값들을 선형 경계로 구별하는 방법
- 직관적으로 이해하고 설명하기 쉽지만, 비선형 데이터에 대해 적용할수 없음
초평면(Hyperplane)
- 최대마진 분류기가 선형 경계로 사용하는 선
- 데이터가 n 차원 → 초평면은 n-1 차원
분리초평면(Separating Hyperplane)
- 관측치들을 클래스 라벨에 따라 완벽하게 분리하는 초평면들
- 분리가 가능한 초평면이 하나가 아닌 여러개가 존재하는 경우
- 관측치들을 클래스 라벨에 따라 완벽하게 분리하는 초평면들 ( 여러개가 될수 있음 )
최대마진분류기(Maximal Margin Classifier)
- 초평면을 사용하여 데이터를 분리할 경우 무한개의 초평면이 존재하게 됨
( 어느 관측치랑도 만나지 않기위해 각도나 위치가 조금씩 변하면서 여러개가 생길수 있음 )
- 분리 초평면을 기반으로 분류기를 구성하기 위해서 무한개의 분리초평면중 사용할 것을 결정해야 함
- 최대 마진 초평면( 훈련관측치로 부터 가장 멀리 떨어진 분리초평면 ) 을 선택해야 함
- 마진(margine) : 관측치들에서 초평면 까지의 가장 짧은 거리
- 최적의 마진 초평면
= 분리 초평면으로부터 마진이 가장 큰것
= 훈련관측치들까지의 최소거리가 가장 먼 초평면
( = 해당 초평면이 관측치들을 잘 분류함 )
- 검정 관측치가 이 최대 마진 초평면의 어느쪽에 놓이는지를 기반으로 분류한것 = 최대마진 분류기
마진(Margine)
- 마진이 작은 값인 경우 조그만 변화에도 관측값들의 결과값이 달라짐
- 마진이 클수록 관측값들을 완벽하게 분류할 수 있음.
서포트 벡터(Support Vector)
- 분리초평면으로 부터 마진의 크기만큼 떨어진 실선에 걸쳐져 있는 관측값을 의미
최대마진분류기의 한계
- 어떤 데이터의 경우 초평면이 존재하지 않을 수 있고,
- 최대 마진 분류기 또한 존재 하지 않을 수 있음
서포트 벡터 분류기(SupportVectorClassifier)
- 소프트마진(sofr margine)을 사용하여 약간의 오류를 허용하면서 관찰값을 분류하는 것
- 몇몇 관측치를 잘못 분류하더라도 나머지 관측치들을 더 잘 분류할 수 있는 방법
- 모든 관측치가 초평면 뿐만아니라 마진의 올바른쪽에 있도록 하는 마진을 찾으면서, 일부 관측치가 마진에 올바른 쪽에 있지 않더라도 허용된다.
- 약간의 오류를 허용함으로써 과적함(Overfitting)도 방지할 수 있음
- 과적합(Overfitting) : 모든 데이터를 정확하게 분류하고자 하는 초평면을 사용할 때, 그 초평면이 해당 데이터에서만 높은 정확도를 가져오는 현상
- Cost : 어느 정도의 오류를 허용할 것인가
- Cost 가 클수록 Margin의 폭은 작아지고, Cost가 작을수록 Margin의 폭이 커짐
( Cost 값을 어떻게 설정하는지에 대해서는 데이터를 분석할 필요성이 있음 )
- R 에서는 적절한 Cost 값을 계산하기 위한 함수 tune.svm 함수를 제공한다.
서포트벡터머신(Support Vector Machine)
- 서포트 벡터 분류기를 확장한것
- 비선형 클래스의 경계를 수용하는 분류방법
- 선형분류기를 비선형 구조로 변경해서 관측값을 분류하는 것
- 오른쪽의 사진은 비선형 구조를 가진 데이터이기 때문에 선형 분류기로 분류가 불가능 하다.
→ 선형분류기를 비선형 구조로 변경해서 관측값을 분류해야 함
- 서포트벡터머신 : 커널(Kernels) 을 사용하여 특정한 방식으로 변수공간을 확장한 결과
* 다항식 커널
- 커널의 차원을 높이면 다양한 결정 결계가 만들어 진다.
* 방사 커널(Radial Kernel)
(정리) 서포트 벡터 분류기 + 비선형 커널 = 서포트벡터머신
범주형(명목형)변수의 처리
- 타켓 변수가 factor 형 데이터 → 분류(Classification)
- 타켓 변수가 연속형 데이터 → 회귀분석
- factor 형태로 처리할 독립변수가 범주형 변수의 순서형 변수일 경우
→ 각 요인별 관측값을 0,1 형태의 dummy 변수로 만들어 줘야함
주요 파라미터 튜닝
- Cost 와 Gamma 파라미터
- Cost
SVM 모델에서 얼만큼 오차를 허용할 것인가
Cost 와 margin은 반비례 관계임
- Gamma
커널과 관련있는 수치
가우시안 함수의 표준편차를 조정하는 인자.
Gamma 와 표준편차는 반비례 관계임
- R 에서 kernel 인자에 "radial"이 설정될 경우 gamma 값을 조정한다.
- 일반 초평면의 경우에 kernel 인자에 "liner"이 입력됨
- 서포트 벡터 분류기 = 서포터 벡터 머신의 1차 항4
서포트벡터분류기의 cost 값으로 소프트 마진을 결정하는 것
- 서포트 벡터 머신 ( 다항식 커널 [직선] )
kernel 인자에 polynomail 을 입력함
degree 로 차수를 지정해줘야 함
degree 가 1초과이면 서포트벡터머신
cost 값을 조절
- 서포트 벡터 머신 ( 방사커널 )
kernel에 radial 입력하면 방사형 커널이 됨
gamma 와 cost 값을 조절해줘야함
R에서 SVM 수행시 고려사항
- 함수자체에서 변수 scale 을 수행해줌 ( 평균 0, 표준편차 1 ) 별도로 scale 을 할 필요가 없음
( 단 scale 이 필요 없을때 scale 인자에 false 를 입력해야한다. )
- kernel 의 기본값은 radial 이기 때문에 cost 와 gamma 의 값을 동시에 조정해야 한다.
- 선형 초평면을 원할 경우 kernel 인자에 liner을 입력하고, cost 값만 조정해주면된다.
- 다항식 커널을 원할 경우 kernel 인자에 polynomial을 지정하고 degree 인자로 차수를 지정한다.
- 데이터 분포를 plot 으로 나타내보고, 다항식 커널, 방사커널중 무엇을 이용할지 결정한다.
참고 포스팅/참고자료 :
SVM(Suppot Vector Machine)으로 분류(Classification)하기
-서포트 벡터 머신(Support Vector Machine)- ▶서포트 벡터 머신(SVM)이란? 서포트 벡터 머신(SV...
blog.naver.com
https://ko.wikipedia.org/wiki/%EC%84%9C%ED%8F%AC%ED%8A%B8_%EB%B2%A1%ED%84%B0_%EB%A8%B8%EC%8B%A0
서포트 벡터 머신 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 선형 SVM이 두 자료(흰색 원, 검은색 원)을 직선으로 분리하고 있다. 서포트 벡터 머신(support vector machine, SVM[1].[2])은 기계 학습의 분야 중 하나로 패턴 인식, 자료 분석을 위한 지도 학습 모델이며, 주로 분류와 회귀 분석을 위해 사용한다. 두 카테고리 중 어느 하나에 속한 데이터의 집합이 주어졌을 때, SVM 알고리즘은 주어진 데이터 집합을 바탕으로 하여 새로운 데이터가 어느 카테고
ko.wikipedia.org
https://quiet-time.tistory.com/46
R 7장 신경망과 서포트 벡터 머신(발표자료)
▣ R 를 활용한 기계학습 7장. 블랙박스 기법 : 신경망과 서포트 벡터 머신 中 신경망 (p286) ■ 서포트 벡터 머신이란(Support Vector Machine: SVM)? 서포트 벡터 머신이란 간단히 말해 이진 분류기이다. SVM의..
quiet-time.tistory.com