Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).

Kernel Principal Components Analysis

PCA实际上就是对原坐标进行正交变换,使得变换后的坐标之间相互无关,并且尽可能保留多的信息。但PCA所做的是线性变换,对于某些数据可能需要通过非线性变换,比如在二维空间下对如下数据进行处理。如果还是采用最初的PCA,则得到的主成分是$z_1,z_2$,而这里的$z_1,z_2$都包含了大量的信息,故无法去掉任何一个坐标,也就达不到降维的目的。而此时如果采用极坐标变换(属于非线性变换),我们就可以尽用一条坐标包含大量的信息(每一数据点都可以用不同的角度来表示)。

Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).

故而我们引入Kernel PCA,将原空间通过映射,投影到特征空间(Feature Spaces),然后在进行正交变换。假设有$m$个已作平均值为0处理的数据$x_k,k=1,2,\cdots,m$,$x_k\in\mathbb{R}^N,\sum_{k=1}^mx_k=0$。PCA的协方差矩阵为$\mathbf{C}=\frac{1}{m}\sum_{j=1}^mx_jx_j^\prime$,于是我们要解决的是特征值方程:

\begin{equation}\mathbf{C}v=\lambda v\label{equ:te*n}\end{equation}

将$\mathbf{C}=\frac{1}{m}\sum_{j=1}^mx_jx_j^\prime$代入式子\ref{equ:te*n}得:

$$\mathbf{C}v=\frac{1}{m}\sum_{j=1}^mx_jx_j^\prime v=\frac{1}{m}\sum_{j=1}^m\langle x_j,v\rangle x_j=\lambda v\Longrightarrow v=\frac{1}{m\lambda}\sum_{j=1}^m\langle x_j,v\rangle x_j\triangleq \sum_{j=1}^m\alpha_j x_j$$

即$v$总可以用$x_j$线性表示。同时将式子\ref{equ:te*n}两边同时点乘$x_k$:$\lambda\langle x_k,v\rangle=\langle x_k,\mathbf{C}v\rangle$

我们引入非线性映射$\Phi:\mathbb{R}^N\rightarrow\mathcal{F}$,其中$\mathcal{F}$表示特征空间,所以得到$\Phi(x_k)$,同样我们对$\Phi(x_k)$进行均值为0处理(在后面部分我们会介绍如何不通过$\Phi$即可进行中心化处理),这里我们暂且假设$\sum_{k=1}^m\Phi(x_k)=0$,同样我们得到协方差矩阵:

\begin{equation}\mathbf{\bar{C}}=\frac{1}{m}\sum_{j=1}^m\Phi(x_j)\Phi(x_j)^\prime\end{equation}

这里要解决的同样是特征值方程$\lambda V=\mathbf{\bar{C}}V,\lambda>0,V\in\mathcal{F}/\{0\}$。两边同时点乘$\Phi(x_k)$得:

\begin{equation}\lambda\langle \Phi(x_k),v\rangle=\langle\Phi(x_k),\mathbf{\bar{C}}V\rangle,\forall k\end{equation}

同时也必定存在$\alpha_i$使$V=\sum_{i=1}^m\alpha_i\Phi(x_i)$,故

\begin{align}\lambda\langle\Phi(x_k),V\rangle &= \lambda V^\prime\Phi(x_k)\nonumber\\&=\lambda\sum_{i=1}^m\alpha_i\Phi(x_i)^\prime\Phi(x_i)\nonumber\\&=\lambda\sum_{i=1}^m\alpha_i\langle\Phi(x_k),\Phi(x_i)\rangle\nonumber\\&=\langle\Phi(x_k),\mathbf{\bar{C}}V\rangle\nonumber\\&=\langle\Phi(x_k),\frac{1}{m}\sum_{j=1}^m\Phi(x_j)\Phi(x_j)^\prime\sum_{i=1}^m\alpha_i\Phi(x_i)\rangle\nonumber\\&=\frac{1}{m}\Phi(x_k)^\prime\sum_{j=1}^m\Phi(x_j)\Phi(x_j)^\prime\sum_{i=1}^m\alpha_i\Phi(x_i)\nonumber\\&=\frac{1}{m}\Phi(x_k)^\prime\sum_{j=1}^m[\langle\Phi(x_j),\sum_{i=1}^m\alpha_i\Phi(x_i)\rangle\Phi(x_j)]\label{equ:1}\\&=\frac{1}{m}\Phi(x_k)^\prime\sum_{j=1}^m[\sum_{i=1}^m\alpha_i\langle\Phi(x_j),\Phi(x_i)\rangle\Phi(x_j)]\nonumber\\&=\frac{1}{m}\Phi(x_k)^\prime\sum_{j=1}^m\sum_{i=1}^m[\alpha_i\langle\Phi(x_j),\Phi(x_i\rangle\Phi(x_j))]\nonumber\\&=\frac{1}{m}\sum_{i=1}^m\sum_{j=1}^m[\alpha_i\Phi(x_k)^\prime\langle\Phi(x_j),\Phi(x_i)\rangle\Phi(x_j)]\nonumber\\&=\frac{1}{m}\sum_{i=1}^m\sum_{j=1}^m[\alpha_i\langle\Phi(x_k),\Phi(x_j)\rangle\langle\Phi(x_j),\Phi(x_i)\rangle]\end{align}

$$m\lambda\sum_{i=1}^m\alpha_i\langle \Phi(x_k),\Phi(x_i)\rangle=\sum_{i=1}^m\sum_{j=1}^m[\alpha_i\langle\Phi(x_k),\Phi(x_j)\rangle\langle\Phi(x_i),\Phi(x_j)\rangle]$$

对所有$k=1,2,\cdots,m$都成立,其中等式\ref{equ:1}成立是因为$(xx^\prime)v=\langle x,v\rangle x$。现在我们将其写成矩阵形式。对左边式子:

\begin{equation}m\lambda[K_{k1},K_{k2},\cdots,K_{km}]\left[\begin{array}&\alpha_1\\\vdots\\\alpha_m\end{array}\right]\end{equation}

再将其按$k$排成列:

\begin{equation}m\lambda\left[\begin{array}&K_{11}&K_{12}&\cdots&K_{1m}\\K_{21}&K_{22}&\cdots&K_{2m}\\\vdots&\vdots&\ddots&\vdots\\K_{m1}&K_{m2}&\cdots&K_{mm}\end{array}\right]\left[\begin{array}&\alpha_1\\\vdots\\\alpha_m\end{array}\right]=m\lambda\mathbf{K}\alpha\end{equation}

对右边有:

\begin{equation}[\sum_jK_{kj}K_{1j},\sum_jK_{kj}K_{2j},\cdots,\sum_jK_{kj}K_{mj}]\left[\begin{array}&\alpha_1\\\alpha_2\\\vdots\\\alpha_m\end{array}\right]=[K_{1\cdot}^\prime K_{k\cdot},\cdots,K_{m\cdot}^\prime K_{k\cdot}]\left[\begin{array}&\alpha_1\\\vdots\\\alpha_m\end{array}\right]=\mathbf{K}K_{k\cdot}\alpha\end{equation}

再将其按$k$排成列:

\begin{equation}\left[\begin{array}&\mathbf{K}K_{1\cdot}\\\mathbf{K}K_{2\cdot}\\\vdots\\\mathbf{K}K_{m\cdot}\end{array}\right]\alpha=\mathbf{K}\mathbf{K}\alpha=\mathbf{K}^2\alpha\end{equation}

于是我们得到$m\lambda\mathbf{K}\alpha=\mathbf{K}^2\alpha\Longrightarrow m\lambda\alpha=\mathbf{K}\alpha$,其中$m\lambda$是矩阵$\mathbf{K}$的特征值,$\alpha$为矩阵$\mathbf{K}$的特征向量。注意这里的$\mathbf{K}$是半正定的,因为对于任意$x\in\mathcal{F}$有:

\begin{align*}x^\prime\mathbf{K}x&=x^\prime[\Phi(x_1),\cdots,\Phi(x_m)]^\prime[\Phi(x_1),\cdots,\Phi(x_m)]x\\&=\|(\Phi(x_1),\cdots,\Phi(x_m))x\|^2\geq 0\end{align*}

所以$\mathbf{K}$的特征值都是非负的。由于$\mathbf{\bar{C}}=\frac{1}{m}\mathbf{K}$,故$\mathbf{\bar{C}}$的特征值也都是非负的且其值为$\lambda$。设$\lambda_m\geq\lambda_{m-1}\geq\cdots\geq\lambda_p\geq\cdots\geq\lambda_1$,$\lambda_p$为第一个非0特征值。

由于$V^{(k)}=\sum_{i=1}^m\alpha_i^{(k)}\Phi(x_i)$,我们对$\alpha^p,\cdot,\alpha^m$进行正交化,并使$\alpha^k\cdot\alpha^k=\frac{1}{m\lambda}$,故而可得:

$$V^{(k)}\cdot V^{(k)}=\sum_{i,j=1}^m\alpha_i^k\alpha_j^k\langle\Phi(x_i),\Phi(x_j)\rangle=\sum_{i,j=1}^m\alpha_i^k\alpha_j^kK_{ij}=\langle\alpha^k,\mathbf{K}\alpha^k\rangle=m\lambda\langle\alpha^k,\alpha^k\rangle=1$$

$$\forall k\neq \bar{k},V^{(k)}\cdot V^{(\bar{k})}=m\lambda\langle \alpha^k,\alpha^{\bar{k}}\rangle=0$$

所以我们得到主成分为$V^m,V^{m-1},\cdots,V^p$。对数据进行如下投影即可得到新变量的第$k$个元素$\langle V^k,\Phi(x)\rangle=\sum_{i=1}^m\alpha_i^k\langle\Phi(x_i),\Phi(x)\rangle=\sum_{i=1}^m\alpha_i^kK(x_i,x)$。我们称$V^k$为映射$\Phi$的第$k$个非线性主成分。

总结,KPCA的步骤:

  1. 选取合适的和函数,计算矩阵$\mathbf{K}$。
  2. 计算其特征值对应的特征向量$\alpha_i$,并将其正交化,且使$\alpha_k\cdot\alpha_k=\frac{1}{m\lambda}$,$m\lambda$为矩阵$\mathbf{K}$的特征值。
  3. 根据$\langle V^k,\Phi(x)\rangle=\sum_{i=1}^m\alpha_i^kK(x_i,x)$计算其相应的主成分$k=p,\cdots,m$。

附录:对$\Phi(x_k)$进行均值为0化。

$$\hat{\Phi(x_k)}=\Phi(x_k)-\frac{1}{m}\sum_{i=1}^m\Phi(x_i)$$

\begin{align*}\hat{K_{ij}}&=\hat{\Phi(x_i)}^\prime\hat{\Phi(x_j)}=[\Phi(x_i)-\frac{1}{m}\sum_{k=1}^m\Phi(x_k)]^\prime[\Phi(x_j)-\frac{1}{m}\sum_{k=1}^m\Phi(x_k)]\\&=\Phi(x_i)^\prime\Phi(x_j)-\frac{1}{m}\sum_{k=1}^m\Phi(x_k)^\Phi(x_j)-\frac{1}{m}\sum_{k=1}^m\Phi(x_k)^\prime\Phi(x_i)+\\&\quad\frac{1}{m^2}\sum_{k=1}^m\Phi(x_k)^\prime\sum_{k=1}^m\Phi(x_k)\\&=K_{ij}-K_{\cdot j}^\prime-\frac{1}{m}K_{\cdot i}^\prime\mathbf{1}-\frac{1}{m}K_{\cdot i}^\prime\mathbf{1}+\frac{1}{m^2}\mathbf{1}^\prime\mathbf{K}\mathbf{1}\end{align*}

其中$\mathbf{1}=(1,1,\cdots,1)^\prime$。写成矩阵的形式为:

$$\mathbf{\hat{K}}=\mathbf{K}-\frac{1}{m}\mathbf{I}_m\mathbf{K}-\frac{1}{m}\mathbf{K}\mathbf{I}_m+\frac{1}{m^2}\mathbf{I}_m\mathbf{K}\mathbf{I}_m$$

其中$\mathbf{I}_m$为$m\times m$的全1矩阵。

上一篇:springboot的日志框架slf4j (使用logback输出日志以及使用)


下一篇:HDU2018-母牛的故事