Skip to content

Latest commit

 

History

History
124 lines (94 loc) · 10.1 KB

05_support_vector_machines.md

File metadata and controls

124 lines (94 loc) · 10.1 KB

개요

  • SVM(서포트 벡터 머신)은 매우 강력하고 선형이나 비선형 분류, 회귀, 이상치 탐색에도 사용할 수 있는 다목적 머신러닝 모델.
  • 특히 복잡한 분류 문제에 잘 맞고, 작거나 중간 크기의 데이터셋에 적합.

5.1 선형 SVM 분류

image

  • 왼쪽 그래프의 실선 두개는 적절하게 분류하고 있으나, 결정경계가 샘플에 너무 가까워 새로운 샘플에 대해서는 작동하지 못할 우려.
  • 오른쪽 그래프의 직선은 두 개의 클래스를 나누면서, 제일 가까운 훈련 샘플로 부터 멀리 떨어져 있음.
  • SVM 분류기를 클래스 사이에 가장 폭이 넓은 도로를 찾는 것. -> 라지 마진 분류(large margin classification)
  • 또한 도로 경계(오른쪽 점선)에 위치한 샘플에 의해 전적으로 결정. -> 이 샘플을 서포트 벡터(support vector) 즉, 분홍 원에 있는 값.
  • SVM은 특성들의 단위를 통일하기 때문에 특성의 스케일에 민감하여 스케일 조정을 하면 결정경계가 좋아짐.

image

5.1.1 소프트 마진 분류

  • 모든 샘플이 도로 바깥쪽에 올바르게 분류 -> 하드 마진 분류(hard margin classification)
  • 그러나 데이터가 선형적으로 구분되어야 하며, 이상치가 없어야 하는 문제점이 존재.
  • 이러한 문제를 피하는 유연한 모델이 소프트 마진 분류(soft margin classification)
  • 도로의 폭을 가능한 넓게 유지, 마진오류(이상치) 사이의 적절한 균형이 필요.

image

  • SVM모델의 하이퍼파라미터 C를 낮게 설정한 왼쪽, 높게 설정한 오른쪽. -> 과대적합 모델 일 경우 C를 감소시켜 모델을 규제.
  • LinearSVC는 규제에 편향을 포함시키므로, Standard Scaler를 사용하여 데이터 스케일을 맞춰 주어야 함. 또한 loss를 'hinge'로 지정해야하며, 훈련 샘플보다 변수가 많지 않다면 성능을 위하여 dual을 False로 지정.
  • LinearSVC를 SVC와 SGDClassifier로 대체하여 사용 가능.

5.2 비선형 SVM 분류

  • 선형적으로 분류할 수 없을 때, 비선형으로 다뤄야 할 경우에는 다항 변수 같은 변수를 추가. -> 선형적으로 구분됨.

image

  • 2차원 변수를 추가해 2차원 데이터 셋을 만들면 선형적으로 분류 가능.
  • Scikit-learn에서는 PolynomialFeatures를 사용해서 변수를 추가.

5.2.1 다항식 커널

  • 낮은 차수의 다항식은 복잡한 데이터셋을 표현하지 못하고, 높은 차수의 다항식은 많은 변수를 추가하므로 모델속도가 느려짐.
  • SVM에서는 커널 트릭(kernel trick)으로 실제로 변수를 추가하지 않으면서 다항식 특성을 많이 추가한 것과 같은 결과를 얻을 수 있음.
  • Scikit-learn에서 kernel='poly'로 설정하고, degree, coef0, C를 설정하여 구현.
  • degree는 차수. 과대적합이라면 줄여야하고, 과소적합이면 늘려야함.
  • coef0은 모델이 높은 차수와 낮은 차수에 영향을 받을지 조절. -> 이 하이퍼파라미터들은 그리드 서치 등을 이용해 최적을 탐색.

image

5.2.2 유사도 특성

  • 각 샘플이 특정 랜드마크(landmark)와 얼마나 닮았는지 측정하는 유사도 함수(similarity function)로 계산한 특성을 추가하는 방법.
  • 모든 샘플 위치에 랜드마크를 설정 후 유사도 특성을 추가. (n개의 변수를 가진 m개의 샘플) -> (m개의 변수를 가진 m개의 샘플)
  • 장점 : 차원이 커지면서 선형적으로 구분될 가능성이 높음.
  • 단점 : 훈련 세트가 매우 클 경우 동일한 크기의 아주 많은 변수가 생성됨.

5.2.3 가우시안 RBF 커널

  • 커널 트릭으로 유사도 특성을 많이 추가하는 것과 같은 비슷한 결과를 얻을 수 있음.
  • gamma와 C를 조정하여 모델의 복잡도를 조절. -> 규제 역할을 하기 때문에 과대적합일때 감소시키고, 과소적합일때 증가시킴.
  • gamma를 증가시키면 각 샘플의 영향 범위가 작아지고, gamma가 작아지면 샘플이 넓은 범위에 영향을 주므로 결정 경계가 부드러워짐.

image

중요

  • 여러 가지 커널 중 어떤 것을 사용할지는 먼저 선형커널(LinearSVC)를 먼저 시도해보는 것이 좋음. -> 훈련 세트가 아주 크거나 변수가 많을 경우
  • 훈련 세트가 너무 크지 않으면 가우시안 RBF 커널 시도. -> 대부분 이 커널이 잘 들어맞음.
  • 문자열 서브시퀀스 커널(String subsequence kernel), 레벤슈타인 거리(Levenshtein distance)등의 문자열 커널 등은 텍스트 문서나 DNA 서열 분류와 같은 특정한 경우에 사용.

5.2.4 계산 복잡도

분류기 시간 복잡도(m 샘플수, n 변수 수) 외부 메모리 학습 스케일 조정 커널 트릭 다중 클래스 분류
LinearSVC 𝑂(𝑚 × 𝑛) 미지원 필요 미지원 OvR 기본
SGDClassifier 𝑂(𝑚 × 𝑛) 지원 필요 미지원 지원
SVC 𝑂(𝑚^2 × 𝑛) ∼ 𝑂(𝑚^3 × 𝑛) 미지원 필요 지원 OvR 기본
  • LinearSVC는 훈련 샘플과 변수 수가 거의 선형적으로 증가
  • SVC는 복잡하지만 작거나 중간 규모의 훈련 세트에 잘 맞음.
  • SVC의 변수 개수는 특히 희소 특성(sparse features)이 잘 확장됨. -> 알고리즘의 성능이 샘플이 가진 0 아닌 변수 평균 수에 비례.

5.3 SVM 회귀

  • SVM은 선형 비선형 분류 뿐만 아니라, 선형 비선형 회귀에도 사용 가능.
  • 회귀에 적용하는 경우 목표를 반대로. -> 제한된 마진 오류(도로 밖의 샘플)안에서 도로 안에 가능한 한 많은 샘플이 들어가도록 학습.
  • 도로의 폭은 하이퍼파라미터 ε으로 조절.
  • Scikit-learn에서는 선형 회귀작업은 LinearSVR으로 적용. cf) LinearSVC -> 분류

image

  • 비선형 회귀작업은 커널 SVM 모델(SVR) 사용. cf) SVC -> 분류

image

5.4 SVM 이론

5.4.1 결정 함수와 예측

  • 선형 SVM 분류기 모델은 결정함수를 계산해 결과값이 0보다 크면 예측된 클래스 ŷ은 양성 클래스(1)이 되고 결과값이 0보다 작으면 음성 클래스(0)이 됨.

image image

  • 여기서 w는 변수의 가중치 벡터, b는 편향.
  • 결정경계를 구하기 위해 결정함수와 0인값의 평면을 교차시킴. -> 직선(실선으로 나타냄)으로 교차함(결정경계)
  • 결정함수의 값이 1 또는 -1인 값을 교차시켜 두 직선(점선으로 나타냄)을 생성하여 마진 형성.

image

  • 선형 SVM 분류기를 훈련 시키는 것은 마진 오류를 하나도 발생하지 않거나, 제한적인 마진 오류를 가지면서 가능한 한 마진을 크게하는 w와 b를 찾는 것.

5.4.2 목적 함수

  • 결정 함수의 기울기는 가중치 벡터의 노름 ‖𝐰‖와 같음. 가중치 벡터 w(기울기)가 작을수록 마진은 커짐.
  • 마진을 크게 하기 위해 ‖𝐰‖를 최소화.
  • 하드 마진 : 모든 양성 샘플에 대한 결정 함수의 값이 1보다 크고 -1보다 작음. image
  • 소프트 마진 : 모든 샘플에 대한 결정 함수의 값이 지정된 값 이상 또는 이하.image
  • 소프트 마진에서 하이퍼파라미터 C는 슬랙 변수의 값을 작게 만드는 목표와 1/2𝑤𝑇𝑤값을 작게 만드는 목표의 트레이드오프를 조절.
  • ‖𝐰‖를 최소화 하는 대신 𝑤𝑇𝑤를 최소화 하는 이유는 ‖𝐰‖는 w=0에서 미분할 수 없기에 최적화 알고리즘이 작동하지 않음.

5.4.3 콰드라틱 프로그래밍(QP)

  • 하드 마진과 소프트 마진 모두 선형 제약조건이 있는 볼록함수의 이차 최적화 문제. -> 콰드라틱 프로그래밍(QP) 문제
  • 어려우니까 pass.

5.4.4 쌍대 문제

  • 쌍대 문제(dual problem)란, 주어진 문제의 답과 동일한 답을 갖는 문제.
  • SVM 문제는 원 문제 또는 쌍대 문제 둘다 해결 가능.
  • 훈련 샘플 수가 변수 개수보다 작을 때 원 문제보다 쌍대 문제로 푸는 것이 더 빠르며, 커널 트릭을 가능하게 함.

5.4.5 커널 SVM

  • 몰라.(후에 추가 예정)

5.4.6 온라인 SVM

  • 온라인 학습은 새로운 샘플이 생겼을 때 점진적으로 학습하는 것.
  • 선형 온라인 SVM 구현 : 특정 비용함수를 최소화하기 위한 경사하강법 사용. -> SGDClassifier에서 loss 파라미터를 hinge로 설정.
  • 그러나 QP 기반의 방법보다 훨씬 느리게 수렴.
  • 비선형 온라인 SVM 구현 : 온라인 커널 SVM 구현 가능 -> 논문에 기술 및 Matlab이나 C++로 주로 구현.
  • 신경망 알고리즘을 고려하는 것이 좋음.