Kernel Principal Components Analysis

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

故而我们引入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: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}_m$为$m\times m$的全1矩阵。

Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).的更多相关文章

  1. 解释一下核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程(转载)

    KPCA,中文名称”核主成分分析“,是对PCA算法的非线性扩展,言外之意,PCA是线性的,其对于非线性数据往往显得无能为力,例如,不同人之间的人脸图像,肯定存在非线性关系,自己做的基于ORL数据集的实 ...

  2. 核主成分分析(Kernel Principal Component Analysis, KPCA)的公式推导过程

    KPCA,中文名称”核主成分分析“,是对PCA算法的非线性扩展,言外之意,PCA是线性的,其对于非线性数据往往显得无能为力,例如,不同人之间的人脸图像,肯定存在非线性关系,自己做的基于ORL数据集的实 ...

  3. Jordan Lecture Note-9: Principal Components Analysis (PCA).

    Principal Components Analysis (一)引入PCA    当我们对某个系统或指标进行研究时往往会发现,影响这些系统和指标的因素或变量的数量非常的多.多变量无疑会为科学研究带来 ...

  4. Andrew Ng机器学习公开课笔记–Principal Components Analysis (PCA)

    网易公开课,第14, 15课 notes,10 之前谈到的factor analysis,用EM算法找到潜在的因子变量,以达到降维的目的 这里介绍的是另外一种降维的方法,Principal Compo ...

  5. A tutorial on Principal Components Analysis | 主成分分析(PCA)教程

    A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components A ...

  6. Stat2—主成分分析(Principal components analysis)

    最近在猛撸<R in nutshell>这本课,统计部分涉及的第一个分析数据的方法便是PCA!因此,今天打算好好梳理一下,涉及主城分析法的理论以及R实现!come on…gogogo… 首 ...

  7. 主成分分析(principal components analysis, PCA)

    原理 计算方法 主要性质 有关统计量 主成分个数的选取 ------------------------------------------------------------------------ ...

  8. [zz] Principal Components Analysis (PCA) 主成分分析

    我理解PCA应该分为2个过程:1.求出降维矩阵:2.利用得到的降维矩阵,对数据/特征做降维. 这里分成了两篇博客,来做总结. http://matlabdatamining.blogspot.com/ ...

  9. 主成分分析 | Principal Components Analysis | PCA

    理论 仅仅使用基本的线性代数知识,就可以推导出一种简单的机器学习算法,主成分分析(Principal Components Analysis, PCA). 假设有 $m$ 个点的集合:$\left\{ ...

随机推荐

  1. IOS UIActivityIndicatorView 等待指示器

    自己做的一个 等待指示器 #import <UIKit/UIKit.h> @interface RockIndicatorView : UIView { } @property(nonat ...

  2. 使用 svn://ip/filename 方式访问svn 资源库

    a. 下载 SVN的官方网站为 http://subversion.tigris.org/,当前最新版本为1.4.2.Windows下的二进制安装包分为两种,一种是以setup结尾的安装文件,另一种是 ...

  3. CSS使用简介

    1.CSS 指层叠样式表 (Cascading Style Sheets) 2.说明: 样式定义如何显示 HTML 元素:     样式通常存储在样式表中:     把样式添加到 HTML 4.0 中 ...

  4. hdfs 数据块重分布 sbin/start-balancer.sh -threshold

    数据块重分布sbin/start-balancer.sh -threshold <percentage of disk capacity>percentage of disk capa ...

  5. 配置RHadoop与运行WordCount例子

    1.安装R语言环境 su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch. ...

  6. openstack deug

    今天想debug一下nova-compute进程, 用devstack迅速安装之后, kill掉nova-compute进程,然后修改nova/cmd/__init__.py文件的 “eventlet ...

  7. eucalyptus,openNebula云构建漫谈

    Eucalyptus篇 万事在于理解,技术研究贵在入脑入心.生活很苦,乐趣何在,在于君心?不能修心,则诸事繁杂!闲来无事,阅读官网文档遇此 two Why selecter?因此分享给亲们!亲,那么我 ...

  8. Java线程池学习

    Java线程池学习 Executor框架简介 在Java 5之后,并发编程引入了一堆新的启动.调度和管理线程的API.Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java ...

  9. rop框架中@ServiceMethod注解属性

    @ServiceMethod 属性 method :代码服务方法名version :表 示 版 本 号 group:服务分组名.服务的分组没有特殊的意义,您可以为服务定义一个分组,以便在事件监听器.服 ...

  10. 转载Repository 和Unit of work的使用说明

    利用Repository and Unit of Work重构项目 文章索引和简介 项目最基础的东西已经结束了,但是现在我们的项目还不健全  不利于测试 重复性代码多   层与层之间耦合性高  不利于 ...