K 개발자
서포트 벡터 머신 본문
선형 SVM 분류
라지 마진 분류large margin classification : 클래스 사이에 가장 폭이 넓은 도로를 찾는 것으로 생각
서포트 벡터support vector : SVM이 훈련된 후에 경계를 포함해 도로에 놓인 어떤 샘플이다. 결정 경계는 전적으로 서포트 벡터에 의해 결정된다. 서포트 벡터가 아닌 (i.e. 도로 밖에 있는) 어떤 샘플도 영향을 주지 못한다.
하드 마진 분류hard margin classification
모든 샘플이 도로 바깥쪽에 올바르게 분류
문제점
- 데이터가 선형적으로 구분될 수 있어야 제대로 작동
- 이상치에 민감
소프트 마진 분류soft margin classification
하드 마진 분류의 문제를 피하려면 위해 도록의 폭을 가능한 한 넓게 유지하는 것과 마진 오류margin violation (i.e. 샘플이 도로 중간이나 심지어 반대쪽에 있는 경우) 사이에 적절한 균형을 잡는다.
비선형 SVM 분류
다항 특성과 같은 특성을 더 추가하면 선형적으로 구분되는 데이터셋을 만들 수 있다.
다항식 커널
SVM을 사용할 땐 커널 트릭kernel trick이라는 수학적 기교를 적용
커널 트릭은 실제로는 특성을 추가하지 않으면서 다항식 특성을 많이 추가한 것과 같은 결과를 얻을 수 있다.
유사도 특성
각 샘플이 특정 랜드마크landmark와 얼마나 닮았는지 측정하는 유사도 함수similarity function로 계산한 특성을 추가
가우시안 RBF 커널
가우시안 방사 기저 함수radial basis function(RBF)
$\phi_{\gamma}(x, \ell) = \exp( -\gamma \left\| x - \ell \right\|^2)$
이 함수의 값은 0(랜드마크에서 아주 멀리 떨어진 경우)부터 1(랜드마크와 같은 위치일 경우)까지 변화하며 종 모양으로 나타난다.
SVM 분류를 위한 사이킷런 파이썬 클래스 비교
파이썬 클래스 | 시간 복잡도 | 외부 메모리 학습 지원 | 스케일 조정의 필요성 | 커널 트릭 |
---|---|---|---|---|
LinearSVC | $O(m\times n)$ | 아니오 | 예 | 아니오 |
SGDClassifier | $O(m\times n)$ | 예 | 예 | 아니오 |
SVC | $O(m^{2}\times n)\sim O(m^{3}\times n)$ | 아니오 | 예 | 예 |
SVM 회귀
제한된 마진 오류 (i.e. 도로 밖의 샘플) 안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 학습
마진 안에서는 훈련 샘플이 추가되어도 모델의 예측에는 영향이 없다. 그래서 이 모델을 $\varepsilon$에 민감하지 않다$\varepsilon$-insensitive고 말한다.
실습코드링크 : SVM