대략적으로 말하면 커널(kernel)이란 용어를 샘플 간의 유사도 함수(similarity function)로 해석할 수 있습니다. 음수 부호가 거리 측정을 유사도 점수로 바꾸는 역할을 합니다. 지수 함수로 얻게 되는 유사도 점수는 1(매우 비슷한 샘플)과 0(매우 다른 샘플) 사이 범위를 가집니다.
지금까지 커널 기법에 대한 개요를 정의했습니다. 이제 커널 SVM을 훈련하여 XOR 데이터를 구분하는 비선형 결정 경계를 그릴 수 있는지 알아보겠습니다. 앞서 임포트한 사이킷런의 SVC 클래스를 사용하고 매개변수 kernel='linear'를 kernel='rbf'로 바꿉니다.
>>> svm = SVC(kernel='rbf', random_state=1, gamma=0.10, C=10.0)
>>> svm.fit(X_xor, y_xor)
>>> plot_decision_regions(X_xor, y_xor, classifier=svm)
>>> plt.legend(loc='upper left')
>>> plt.tight_layout()
>>> plt.show()
결과 그래프에서 볼 수 있듯이 커널 SVM은 비교적 XOR 데이터를 잘 구분합니다.
▲ 그림 3-14 커널 SVM 모델이 학습한 XOR 데이터셋의 결정 경계