목표

1. (Support Vector Machine; SVM)을 이해하고 꽃 분류 모델을 만든다.

2. 학습한 SVM에 대해 Decision boundry 그래프를 그려본다.

 

1. (Support Vector Machine; SVM) 을 이해하고 꽃 분류 모델을 만든다.

SVM 이란?

-  SVM을 이해하려면  Decision boundry, 서포트 벡터, 마진을 알아야한다.

1. decision boundry

  - 직역하면 결정 경계선을 의미한다. 

Decision boundry (빨간색 사각형선 표시)

2. support vector

  - 결정 경계선에서 가장 가까운 데이터를 의미한다. 가깝다는 것은 간단하게 L2 Norm으로 계산했을 때 나오는 값을 봤을 때 다른 데이터 보다 작은 값을 의미한다.

3. margin 

 -  서포트 벡터와 결정 경계선간의 거리

 - 마진을 최대화했다 -> 일반화 오차를 낮췄다. 

 - 마진을 최소화했다 -> 일반화 오차가 크다. (오버피팅)

서포트 벡터(동그라미 표시), 마진(직선)

- SVM은 학습을 통해 서로 다른 레이블과 매칭하는 특성 데이터의 support vector와 생성할 decision boudry 간에 margin값을 최대화하는 것이 목표이다. 

- soft margin classification : 이전의 SVM에서 슬랙 변수를 이용하여 선형적으로 구분되지 않는 데이터에서 선형 제약 조건을 완화시킨 분류기이다. 

 

 

from sklearn.svm import SVC
svm = SVC(kernel='linear', C=1.0, random_state=1)
svm.fit(X_train_std, y_train)

- 위는 SVM을 생성하고 학습시키는 코드이다.

- SVC인 이유는 Support Vector classification 이기 때문이다. (SVM과 학습 원리 동일)

- 이때 C 값은 마진 폭을 조절해 주는 변수이다. C 값을 조절하여 편향-분산 트레이드오프 (bais vs variance trade-off)를 조절한다.

 

2. 학습한 SVM에 대해 Decision boundry 그래프를 그려본다.

plot_decision_regions(X_combined_std, y_combined,classifier=svm, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()

- 위 코드는 학습한 모델을 아래 챕터에서 정의한 함수를 재사용하여 그리는 코드이다.

https://computervision-is-fun.tistory.com/111

- 아래 그림은 학습한 SVM의 Decision boundry 그래프이다.

+ Recent posts