첫 번째 주성분만 그렸을 때(오른쪽 그래프) 겹친 부분을 잘 나타내기 위해 삼각형 샘플을 조금 위에 그렸고 동그라미 샘플을 조금 아래 그렸습니다. 왼쪽 그래프를 보면 원래 반달 모양이 조금만 변형되고 수직 축을 기준으로 반전되었습니다. 이 변환은 동그라미와 삼각형 사이를 판별하는 선형 분류기에 도움이 되지 않습니다. 비슷하게 두 개의 반달 모양을 구성하는 동그라미와 삼각형은 오른쪽 그래프처럼 1차원 특성 축에 투영하면 선형적으로 구분 가능하지 않습니다.
Note ≡ PCA vs LDA
PCA는 비지도 학습 방법임을 기억하세요. LDA와 다르게 분산이 최대인 방향을 찾기 위해 클래스 레이블 정보를 사용하지 않습니다. 여기서 삼각형과 동그라미 기호는 구분이 잘 되는지를 나타내기 위해 시각적 효과의 목적으로 추가되었습니다.
이제 앞 절에서 구현한 커널 PCA 함수 rbf_kernel_pca를 적용해 보죠.
>>> X_kpca = rbf_kernel_pca(X, gamma=15, n_components=2)
>>> fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(7,3))
>>> ax[0].scatter(X_kpca[y==0, 0], X_kpca[y==0, 1],
... color='red', marker='^', alpha=0.5)
>>> ax[0].scatter(X_kpca[y==1, 0], X_kpca[y==1, 1],
... color='blue', marker='o', alpha=0.5)
>>> ax[1].scatter(X_kpca[y==0, 0], np.zeros((50,1))+0.02,
... color='red', marker='^', alpha=0.5)
>>> ax[1].scatter(X_kpca[y==1, 0], np.zeros((50,1))-0.02,
... color='blue', marker='o', alpha=0.5)
>>> ax[0].set_xlabel('PC1')
>>> ax[0].set_ylabel('PC2')
>>> ax[1].set_ylim([-1, 1])
>>> ax[1].set_yticks([])
>>> ax[1].set_xlabel('PC1')
>>> plt.tight_layout()
>>> plt.show()