M.S/Machine learning

sklearn을 이용한 꽃 분류 모델 만들고 시각화 하기(SVM RBF kernel)

Health&Program 2023. 7. 12. 22:14

목표

1. kernel 트릭을 이용한 SVM을 이해한다.

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

 

1. kernel 트릭을 이용한 SVM 을 이해한다.

kernel 이란?

-  기존 SVM은 선형 SVM이라 불린다. 이 뜻은 아래 그림처럼 선형특성을 가지는 Decision boundry를 만든다는 것이다.

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

- 비선형성을 가지는 데이터를 분류 할 때는 어떻게 해야 할까?? 아래는 선형 적인 Decision boundry로 구분하기 힘든 XOR 형식의 데이터이다. 

XOR 형식의 데이터

- XOR 형식의 데이터에 대해 기존 SVM을 적용했을 때 그래프이다.

 

XOR 형식의 데이터를 기존 SVM으로 학습 시켰을때

- 이렇게 특징 데이터가 비선형성을 가지는 경우 비선형성의 데이터를 선형적인 특성으로 변환시킬만한 트릭이 필요하다.

- 이때 사용하는 기법이 Kernel 트릭이다.

- Kernel 트릭은 기존의 특징 데이터를 SVM이 구분 가능한 데이터의 형태로 변환 시키는 것이다. 아래는 널리 사용되는 Kernel 중 하나 인 방사 기저 함수(Radial Basis functionl; RBF) 이다.

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 값은 크면 클수록 일반화에 약해짐으로 학습시킬 때 주의하자.

RBF kerenel을 이용해 데이터를 변환시키고 SVM을 학습 시켰을때

- 마지막으로 gamma 값을 100.0으로 했을 때 그래프이다. 

gamma 값은 100으로 지정하고  SVM을 학습 시켰을 때