-
서포트 벡터 머신전공 서적/핸즈온 머신러닝 2018. 9. 12. 12:15
- 서포트 벡터 머신
- 매우 강력하고 다목적인 머신러닝 모델
복잡한 분류 문제에 잘 들어맞으며 작거나 중간 크기의 데이터셋에 적합하다. - 선형 SVM 분류
- 선형 SVM 분류
- 클래스 사이의 가장 폭이 넓는 도로를 찾는 방법 라지 마진 분류 라고도 한다.
- 도로 바깥에 훈련 샘플을 추가해도 결정 경계에 영향을 미치지 않으며 서포트 벡터에 의해 경계가 결정된다.
- 라지 마진 분류
- SVM은 특성 스케일에 민감하다.
- 소프트 마진 분류
- 모든 샘플이 도로 바깥쪽에 올바르게 분류되어 있는 것을 하드 마진 분류라고 한다.
- 하드 마진 분류는 데이터가 선형적으로 구분될 수 있어야 제대로 작동하며, 이상치에 민감하다.
- 이상치에 민감한 하드 마진
- 하드 마진의 문제를 피하기 위하여 도로의 폭을 넓게 유지하는 것과 마진 오류 사이에 적절한 균형점을 찾는 소프트 마진 분류가 사용된다.
- 좁은 마진과 넓은 마진
- 비선형 SVM 분류
- 비선형 SVM 분류
- 비선형 데이터셋을 다루는 방법 중 하나는 다항 특성을 더 추가하는 것이다.
- 특성을 추가하여 선형적으로 구분되는 데이터셋 만들기
- 유사도 특성 추가
- 각 샘플이 특정 랜드마크와 얼마나 닮았는지 측정하는 유사도 함수로 계산한 특성을 추가하는 방법
- 가우시안 RBF를 사용한 유사도 특성
- 가우시안 RBF 커널
- 추가 특성을 계산하기 위해서는 연산 비용이 많이 소모된다.
커널 트릭을 사용할 경우 유사도 특성을 많이 추가하는 것과 비슷한 결과를 얻을 수 있다. - 매개변수 C가 커질수록 모델에 과대적합 되고, gamma가 커질수록 결정 경계의 곡률이 높아진다.
- 커널 트릭
- 어떤 수식이 벡터의 내적을 포함하고 있을 때 그 내적을 커널 함수로 대치하여 계산하는 기법
- SVM에서는 특징 벡터를 이용하는 것이 아니라 벡터의 내적만을 사용한다.
수학적으로 고차원 데이터를 내적하는 것과 내적한 결과를 고차원으로 보내는 것은 동일하기에
계산은 원래의 공간에서하고 분류는 고차원에서 하는 커널 트릭을 사용할 수 있다.
- 계산 복잡도
- SVM 분류를 위한 사이킷런 파이썬 클래스 비교
파이썬 클래스
시간 복잡도
외부 메모리 학습 지원
스케일 조정의 필요성
커널 트릭
LinearSVC
O(m×n)
아니오
예
아니오
SGDClassifier
O(m×n)
예
예
아니오
SVC
O(m^2×n)~O(m^3×n)
아니오
예
예
- SVM 회귀
- 제한된 마진 오류 안에 가능한 많은 샘플이 들어가도록 학습한다.
도로의 폭은 하이퍼파라미터 으로 조절한다.
'전공 서적 > 핸즈온 머신러닝' 카테고리의 다른 글
앙상블 학습과 랜덤 포레스트 (0) 2018.09.23 결정 트리 (0) 2018.09.13 모델 훈련 (0) 2018.08.30 분류 (0) 2018.08.23 머신러닝 프로젝트 처음부터 끝까지 (0) 2018.08.22 댓글