파이썬을 이용하여 커널법 배우기/커널 주성분 분석 이론

위키책, 위키책
Jump to: 둘러보기, 찾기

커널 주성분 분석은 선형 주성분 분석과 마찬가지로 특징 공간상에서 목적함수 J_1 를 최소화하는 단위 벡터를 찾는 문제이다. 사상 함수 \phi(\cdot) 를 통해 임의의 고차원 (\in \Re^F) 으로 확장된 샘플 집합을 \mathbf{X}^F = [\phi(\mathbf{x}_1, \ldots, \phi(\mathbf{x}_l)]^\top \in \Re^{F \times l} 라 하면, 특징 공간상의 공분산 행렬은 다음과 같이 계산 가능하다.


   \mathbf{C}^F =  \sum_{k=1}^{l}(\phi(\mathbf{x}_k) -  \mathbf{m}^F)(\phi(\mathbf{x}_k) 
      - \mathbf{m}^F)^\top

여기서 \mathbf{m}^F는 특징 공간상에서의 샘플 평균이다.


   \mathbf{m}^F = \frac{1}{l}\sum_{k=1}^{l}\phi(\mathbf{x}_k)

Matlab 및 Numpy를 비롯한 다양한 행렬관련 언어로 쉽게 구현하기위해 행렬표현법을 이용하여 식 ()를 나타내면 다음과 같다.


   \mathbf{C}^F =  \mathbf{X}^F \mathbf{H}\mathbf{H} \mathbf{X}^{F\top}

여기서 \mathbf{H} = \mathbf{I} - \frac{1}{l}\mathbf{1}_{l, l}, \mathbf{H} = \mathbf{H}^\top 이고,

\mathbf{I}\mathbf{1}_{n,n} 는 각각 크기가 n \times n 인 단위 행렬, 모든 원소가 1인 행렬이다. 이제 선형 주성분 분석과 마찬가지로 위 식의 고유값으로 주성분을 구할 수 있다.

그러나 식 ()은 임의의 고차원 특징 공간상에 존재하기 때문에 고유값을 직접 구할 수 없다.

   Kernel method 설명!!!!!!!!!

특징 공간상의 고유벡터 \mathbf{v}^F 는 샘플들의 선형 결합으로 나타낼 수 있다는 가정을 통해 문제를 해결할 수 있다.


   \mathbf{v}^F = \mathbf{X}^F \mathbf{H} \boldsymbol{\alpha}

식 ()의 고유값 문제는 다음과 같이 표현 가능하다.


   \mathbf{C}^F \mathbf{v}^F = \lambda \mathbf{v}^F

이제 각 항에 \mathbf{H} \mathbf{X}^{F\top} 을 곱하고, 식 ()을 대입하면 다음을 얻을 수 있다.


\begin{align}
   \mathbf{H} \mathbf{X}^{F\top}
   \mathbf{X}^F \mathbf{H}\mathbf{H}\mathbf{X}^{F\top} 
   \mathbf{X}^F \mathbf{H} \boldsymbol{\alpha}
   & = 
   \lambda
   \mathbf{H} \mathbf{X}^{F\top}
   \mathbf{X}^F \mathbf{H} \boldsymbol{\alpha}
   \\
   \Rightarrow \mathbf{H}\mathbf{X}^{F\top} \mathbf{X}^F \mathbf{H} \boldsymbol{\alpha}
   & = \lambda \boldsymbol{\alpha}
   \\
   \Rightarrow \mathbf{H} \mathbf{K} \mathbf{H} \boldsymbol{\alpha}
   & = \lambda \boldsymbol{\alpha}
\end{align}

여기서 \mathbf{K} 는 커널 행렬(kernel matrix)이며, 이 행렬의 i 열, j 행 값 K_{ij} 는 다음과 같이 구할 수 있다.


   K_{i, j} = \phi(\mathbf{x}_i)^\top \phi(\mathbf{x}_j) = k(\mathbf{x}_i, \mathbf{x}_j)

위 식에서 k(\cdot, \cdot) 는 커널 함수(kernel function)을 의미하며 Mercer's Theorem을 만족하는 커널 함수를 이용할 수 있다.

이제 식 ()에서 고유값 문제로 \boldsymbol{\alpha} 를 구할 수 있다. 추가적으로 \mathbf{v}^{F\top}\mathbf{v^F} = 1 을 만족시키기 위해 다음과 같은 정규화가 필요하다.


\begin{align}
   \mathbf{v}^{F\top}\mathbf{v}^F & = \boldsymbol{\alpha}^\top  \mathbf{HKH}\boldsymbol{\alpha} 
      \\
      & = \lambda  \boldsymbol{\alpha}^\top  \boldsymbol{\alpha} = 1
      \\
      \therefore \boldsymbol{\alpha}' & = \frac{\boldsymbol{\alpha}}{\sqrt{\lambda}}
\end{align}

이제 \mathbf{C}^F 의 고유값 \mathbf{v}^F\mathbf{v}^F = \mathbf{X}^F \mathbf{H} \boldsymbol{\alpha}' 로 나타낼 수 있다.

선형 주성분 분석과 같이 커널 주성분(kernel principal components)은 q 개의 선택된 고유값을 \mathbf{V}^F = [\mathbf{v}_1^F, \ldots, \mathbf{v}_q^F] 라 하면, 이 주성분으로 특징 샘플 \phi(\mathbf{y}) 를 사상하면 P_{V^F} (\phi(\mathbf{y})) 를 얻을 수 있다.


\begin{align}
   P_{V^F} (\phi(\mathbf{y})) & = \mathbf{V}^{F\top} (\phi(\mathbf{y}) - \mathbf{m}^F) \\
      & = \mathbf{A}^T \mathbf{H} \mathbf{X}^{F \top}  
         (\phi(\mathbf{y}) - \frac{1}{l}\mathbf{X}^F \mathbf{1}_{l, 1}) \\
      & = \mathbf{A}^T \mathbf{H} 
         (\mathbf{K}_{\mathbf{y}} - \frac{1}{l} \mathbf{K} \mathbf{1}_{l, 1})
\end{align}

여기서 \mathbf{A} = [\boldsymbol{\alpha}_1', \ldots, \boldsymbol{\alpha}_q'] 는 식 :eq:`eq-kpca-norm` 에서 고유값이 큰 순에 대응하는 q 개의 선택된 고유벡터이다. \mathbf{K}_{\mathbf{y}}\mathbf{X}^{F\top}\phi(\mathbf{y}) 를 나타내며 커널 함수를 이용하여 구할 수 있다. 원래 샘플 복원은 다음과 같이 수행하는데,


   \phi(\mathbf{y})' = \mathbf{V}^F\mathbf{V}^{F\top} (\phi(\mathbf{y}) -\mathbf{m}^F) + \mathbf{m}^F

복원 결과는 여전히 특징 공간상에 존재하게 된다. 이 복원된 샘플의 입력 공간상의 값 \mathbf{y}' 는 pre-image 문제로 해결 가능하다.