我所理解的SVD与PCA

Motivation

之所以要写本文,是因为我先在矩阵课上学了SVD,后又在机器学习课上了解到了PCA,当时就觉得两者十分相似,但是一时又难以融会贯通。遂在网上查阅相关资料,然而网上绝大多数文章要么不加思考就转载,要么掺杂着不少谬误。行文语言和逻辑均清晰的更是少有,读完后甚至会更加迷茫。

因而写作此文,期望用较短的篇幅简要说明SVD、PCA以及两者之间的联系,也希望本文能成为讲义级易懂而严谨的文章。

言归正传,首先一句话概括SVD和PCA的联系:对中心化后的样本矩阵做SVD的过程就是PCA

接下来本文将对SVD与PCA进行简要介绍。


SVD

SVD(Singular Value Decomposition,奇异值分解)就是将任意一矩阵()分解为三个矩阵相乘的形式,但对这三个矩阵的形式有要求,其过程如下:

(1)求的正特征根:,与正交特征向量:

(2)令

(3)令

(4)令S=\begin{bmatrix}  \sqrt{\lambda _{1}}  & 0 & \cdots & 0 \\  0 & \sqrt{\lambda _{2}} & \cdots & 0 \\  \vdots  & \vdots  & \ddots & \vdots  \\  0 & 0 & \cdots & \sqrt{\lambda _{k}}  \end{bmatrix}_{k\times k} 

         对角线元素称为的正奇异值,除此之外,还有个为0的奇异值。

(5)即得到简奇异值分解:  其又称为正奇异值分解

(6)将扩为正交矩阵(扩充的列应与原有列正交)

             同样扩为正交矩阵

              则得到奇异值分解

其实在PCA中,使用到的是简SVD。


PCA

PCA(Principal Component Analysis,主成分分析)顾名思义,就是研究数据所含有的主要成分的方法,常用于矩阵降维。与SVD不同的是,PCA有明确的实际意义,即要尽可能多地保留原数据隐含的信息。其过程如下:

(0)设有条维的数据

(1)将这条数据按行组成矩阵

(2)将进行中心化处理得到:即对每一行减去

(3)求出协方差矩阵

         这里的因子也可省略,并不会影响降维后的结果(因为的特征根虽会等比改变,但特征根的大小关系与其对应的特征向量均不变)。而之所以在这里写出来,是为了和后文PCA的推导部分相对应。

(4)求出的特征根与特征向量

(5)将特征根从大到小排列并取前个,再用这个特征根对应的特征向量组成矩阵。

(6)的每一行为降到维后的数据

可见,若将SVD中的与PCA当中的对应起来并忽略掉协方差矩阵的因子,那么我们就发现了SVD和PCA之间的联系:对中心化后的样本矩阵做SVD的过程就是PCA。

也许读者会有这样的疑惑:为什么协方差矩阵前面有个因子?为什么PCA的计算的过程是上述那样呢?接下来本文将从最小均方误差的角度对PCA的原理进行推导。


最小均方误差指的是:使先降维后升维的新数据与原数据的误差最小。

先定义一组维的标准正交基

每条维的原数据均可以表示为上述基的线性组合

相当于进行了坐标变换

对式等号两侧同左乘易得

将上式带入式得

用个向量近似表示,即下式的第一个求和部分的权值对每个是不同的,但所有的共享第二个求和部分的权值。就是先降维后升维得到的新数据。

目标是使失真度(均方误差)最小

\begin{align}J & = \frac{1}{n} \sum_{j=1}^n ||x_{j}- \hat x_{j}||^2\\& =\frac{1}{n} \sum_{j=1}^n (x_{j}- \hat x_{j})^T(x_{j}- \hat x_{j})\\& =\frac{1}{n} \sum_{j=1}^n \left( \sum_{i=1}^k(x^T_{j}u_{i}-z_{ji})^2 + \sum_{i=k+1}^m(x^T_{j}u_{i}-b_{i})^2 \right) \ (2)\end{align}

式含有的参数无非是,但和的关系可看做“蛋和鸡”的关系:知道了便能确定权重,反之亦然。因而接下来我们不妨先将目标定为通过调整权重来求上式的最小值,之后再反过来确定基。根据多元函数的凸优化理论(本例为2元2次),上式在对各个参数()的导数均为零时取得最小值,因而:

将式对参数求导,得到如下个等式

易得

将式对参数求导,得到如下个等式

易得

因而

为之前出现过的协方差矩阵。由于所求目标为带限制条件()的最优化问题,因而使用拉格朗日乘子法:

上式为矩阵表达式,其对基向量求导并化简可得到个式子(此处用到了矩阵表达式对向量的求导公式,请读者自行查阅)

由上式可知,的最小值对应协方差矩阵的个最小的特征根及其特征向量,对应的失真度为

进一步我们可以得出的前个成分是个最大特征根对应的特征向量,即原数据在最小均方误差目标下的降维后的结果就是Y_{n\times k}=XQ\ \left( X_{n\times m}=[x_{1}, x_{2},..., x_{n}]^T,\ Q_{m\times k}=\left(\frac{u_{1}}{\vert u_{1} \vert },\frac{u_{2}}{\vert u_{2} \vert },..., \frac{u_{k}}{\vert u_{k} \vert } \right)\right)

你可能感兴趣的:(我所理解的SVD与PCA)