어떤 데이터들이 들어왔을 때, 이들을 좀 더 분류하기 쉽게 변환, 혹은 처리하기 쉽게 차원을 낮춰주는 역활을 하는 대표적인 방법은 Principal Component Analysis (PCA) 이다. 이번 포스팅은 PCA가 아니라 이 PCA에 kernel trick을 적용한 Kernel PCA란 것이 있다. 

자세한 설명은 아래 slide를 통해서 알 수 있다. 


포항대에서 만든 KPCA자료 (잘 설명되어있다. )

더보기


 이것이 무엇인고 하니, 기존의 PCA에 kernel trick을 적용한 것이다. 

 그렇다면 Kernel trick은 무엇인고 하니, 조금 어려운 것을 의미한다. 수학적으로 증명을 하기 위해서 Reproducing Kernel Hilbert Space (RKHS) 까지 나오지만 않다면 Kernel Trick 자체는 어려운 것이 아니다. 


 우리가 마음껏 Affine 연산을 하는 유클리디언 공간에서는 어떤 데이터 간의 관계를 내적으로 표현할 수 있다. 이 내적의 의미는 두 데이터 사이의 유사도를 의미한다. 두 벡터의 내적이란 각 벡터의 element들의 곱의 합이다. 이 때 각 element가 비슷할 수록 (특히 부호) 내적의 값은 크게 나온다. 


 이러한 유사도의 개념을 좀 더 범용적으로 적용하기 위해서 kernel function이 등장한다. 이름만 봐서는 매우 어려워 보이지만, kernel function은 단순히 두 개의 벡터를 입력으로 가지는 함수이다. 그리고 일반적으로 두 벡터 사이의 거리 (보통, 두 벡터의 차의 유클리디안 norm) 에 반비례한다. 기존 formulation의 내적 부분을 이 kernel function을 통해 만든 kernel matrix로 대채하는 것이 바로 Kernel trick이다. 


 그 의미를 조금 들여다 보면, 우리의 데이터가 살고 있는 n 차원의 유클리디언 공간을 매우 차원이 큰 공간으로 mapping하는 nonlinear function이 있다고 가정하는 것이다. 그리고, 그 공간에서 내적은 우리가 정의한 kernel function의 출력값이 된다고 가정하는 것이다. 이러한 가정을 증명할 때 필요한 개념이 앞의 RKHS이다. 


  활용적인 면에서 Kernel을 적용할 경우 가장 큰 장점은 주어진 두 데이터의 상관 관계를 우리가 정한 kernel function을 통해 나타낼 수 있다는 점이다. Kernel trick이 가장 활발히 사용되는 곳은 nonlinear SVM으로 해보면 알겠지만 classification 성능이 비약적으로 상승한다. 이유는 간단한데 기존의 linear SVM은 decision boundary를 칼로 자르는 것과 같이 나누지만, kernel SVM은 학습 데이터에 맞는 곡선으로 나누기 때문이다. 더 flexible하다고나 할까. 


 이번 포스팅의 주제인 Kernel PCA 역시 기존의 PCA에 Kernel trick을 적용한 것이다. PCA를 unsupervised learning에 적용할 경우, 주어진 데이터를 우리가 정한 basis에 projection시키고, 각 basis들에 project된 값이 주어진 데이터의 feature가 되는 구조이다. 이것에 kernel trick을 적용하였기 때문에 기존의 linear projection이 nonlinear한 projection으로 바뀌게 된다. 


그리고 그 결과는 다음과 같다. 

 위의 그림은 6개의 feature를 뽑아서 그린 것이고, 아래 그림은 상위 세 개의 feature를 R, G, B에 대응시킨 것이다. 

  재밌는 점은 원래 데이터의 dimension이 2였는데, kernel PCA를 통해선 그 dimension을 데이터의 갯수에 해당하는 N까지 오히려 올릴 수 있다는 것이다. 이러한 경향은 nonlinear SVM에서도 나타난다. 


데이터 (꼭 필요는 없음. 새롭게 생성할 수 있음.)

더보기


main_kpca.m

더보기


kpca_kernel.m

더보기


« PREV : 1 : ··· : 86 : 87 : 88 : 89 : 90 : 91 : 92 : 93 : 94 : ··· : 142 : NEXT »