Processing math: 1%

Boostable

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  116 随笔 :: 0 文章 :: 28 评论 :: 92343 阅读

Kernel Principal Components Analysis

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

    故而我们引入Kernel PCA,将原空间通过映射,投影到特征空间(Feature Spaces),然后在进行正交变换。假设有m个已作平均值为0处理的数据x_k,k=1,2,\cdots,mx_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:tezhengFun}\end{equation}

\mathbf{C}=\frac{1}{m}\sum_{j=1}^mx_jx_j^\prime代入式子\ref{equ:tezhengFun}得:

\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:tezhengFun}两边同时点乘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}_mm\times m的全1矩阵。

posted on   Boostable  阅读(884)  评论(0)    收藏  举报
编辑推荐:
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 一文彻底搞懂 MCP:AI 大模型的标准化工具箱
· 电商平台中订单未支付过期如何实现自动关单?
· 用 .NET NativeAOT 构建完全 distroless 的静态链接应用
阅读排行:
· 如果单表数据量大,只能考虑分库分表吗?
· 一款让 Everything 更加如虎添翼的 .NET 开源辅助工具!
· (原创)[开源][.Net Framework 4.5] SimpleMVVM(极简MVVM框架)更
· 冲压车间软件实施
· 干货分享!MCP 实现原理,小白也能看懂
点击右上角即可分享
微信分享提示