본문 바로가기
ML&DATA/핸즈온 머신러닝

5. SVM - 선형분류

by sun__ 2020. 9. 28.

www.youtube.com/watch?v=6omvN1nuZMc&list=PLJN246lAkhQjX3LOdLVnfdFaCbGouEBeb&index=13

박해선 교수님의 유튜브 강의로 공부했음을 밝힙니다. 

 


SVM

서포트 벡터 머신은 분류(선형, 비선형), 회귀, 이상치 탐색에 사용할 수 있는 다목적 머신러닝 모델이다. 굉장히 사용 빈도가 높으며 반드시 알고 있어야 한다. SVM은 복잡한 분류 문제에 잘 맞고 중간 이하 크기의 데이터셋에 적합하다.

 

 

5.1 선형 SVM 분류

두 개의 클래스를 나누는 결정 경계를 각 클래스의 훈련 샘플로부터 가능한 멀리 떨어져 있도록 한다. 라지 마진 분류(large margin classification)라고도 하며 이진 분류이다.

 

우측이 선형 SVM 분류


<실제 모듈 사용>

sklearn.svm의 LinearSVC를 사용한다. C로 규제를 정한다.  (support vector classification의 약자)

반드시 전처리한 후에 사용한다.

import numpy as np
from sklearn import datasets
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import LinearSVC

iris = datasets.load_iris()
X = iris['data'][:,(2,3)]	 #꽃잎 길이, 꽃잎 너비
y = (iris['target']==2).astype(np.float64)

svm_clf = Pipeline([
    ('scaler', StandardScaler()),
    ('linear_svc', LinearSVC(C=1, loss='hinge')),
])
svm_clf.fit(X,y)
svm_clf.predict([[5.5, 1.7]])
#array([1.])

LinearSVC대신 SVC 클래스의 커널을 linear로 설정하는 것으로 대체할 수 있다.

SVC(kernel = 'linear', C=1)

 

 


 

<서포트 벡터>

도로 밖에 새로운 데이터가 추가 돼도  결정 경계엔 영향을 주지 않는다. 빨간색으로 하이라이트 된 점들을 서포트 벡터라고 한다.

결정 경계는 도로 경계에 위치한 샘플(서포트 벡터)에 의해 전적으로 결정된다.

 

 


 

<소프트 마진 분류 / 하드 마진 분류>

 

마진 오류 : 도로 내부에 위치한 샘플들이 만드는 오류

 

하드 마진 분류 : 모든 샘플이 도로 바깥쪽에 올바르게 분류되어 있는 경우

  • 데이터가 선형적으로 구분될 수 있어야 제대로 작동
  • 이상치에 민감

소프트 마진 분류 : 도로의 폭을 최대한 넓게 하는 것과 마진 오류 사이에 적절한 균형을 잡는 경우

  • 하이퍼파라미터 C로 규제함(마진 오류의 가중치). C가 작을수록 마진 오류를 더 허용해줌

C가 작을수록 도로의 폭이 넓어짐

'ML&DATA > 핸즈온 머신러닝' 카테고리의 다른 글

5. SVM - 비선형 분류  (0) 2020.09.28
4 - 정리, 연습문제  (0) 2020.09.18
4 - 로지스틱 회귀, 소프트맥스 회귀  (0) 2020.09.15
4 - 다항회귀, 규제  (2) 2020.09.09
4 - 선형회귀 (경사하강법)  (0) 2020.09.04