sklearn을 이용한 꽃 분류 모델 만들고 시각화 하기(SVM RBF kernel)
목표
1. kernel 트릭을 이용한 SVM을 이해한다.
2. 학습한 kernel SVM에 대해 Decision boundry 그래프를 그려본다.
1. kernel 트릭을 이용한 SVM 을 이해한다.
kernel 이란?
- 기존 SVM은 선형 SVM이라 불린다. 이 뜻은 아래 그림처럼 선형특성을 가지는 Decision boundry를 만든다는 것이다.
- 비선형성을 가지는 데이터를 분류 할 때는 어떻게 해야 할까?? 아래는 선형 적인 Decision boundry로 구분하기 힘든 XOR 형식의 데이터이다.
- XOR 형식의 데이터에 대해 기존 SVM을 적용했을 때 그래프이다.
- 이렇게 특징 데이터가 비선형성을 가지는 경우 비선형성의 데이터를 선형적인 특성으로 변환시킬만한 트릭이 필요하다.
- 이때 사용하는 기법이 Kernel 트릭이다.
- Kernel 트릭은 기존의 특징 데이터를 SVM이 구분 가능한 데이터의 형태로 변환 시키는 것이다. 아래는 널리 사용되는 Kernel 중 하나 인 방사 기저 함수(Radial Basis functionl; RBF) 이다.
- RBF Kernel 트릭은 샘플 간의 유사도 함수(similarity function)로 사용한다고 한다.
- 이렇게 지수 함수로 얻은 값이 1에 가까우면 두 샘플 간 거의 비슷한 값, 0에 가까우면 매우 다른 샘플이라 한다.
2. 학습한 kernel SVM에 대해 Decision boundry 그래프를 그려본다.
- 아래는 RBF Kernel 트릭을 이용해 데이터를 변환시키고 선형 SVM을 적용하는 코드와 그래프이다.
from sklearn.svm import SVC
svm = SVC(kernel='rbf', C=1.0,gamma=0.2, random_state=1)
svm.fit(X_xor, y_xor)
- 이 코드에서 gamma 값은 크면 클수록 일반화에 약해짐으로 학습시킬 때 주의하자.
- 마지막으로 gamma 값을 100.0으로 했을 때 그래프이다.
끝