Motivation
之所以要写本文,是因为我先在矩阵课上学了SVD,后又在机器学习课上了解到了PCA,当时就觉得两者十分相似,但是一时又难以融会贯通。遂在网上查阅相关资料,然而网上绝大多数文章要么不加思考就转载,要么掺杂着不少谬误。行文语言和逻辑均清晰的更是少有,读完后甚至会更加迷茫。
因而写作此文,期望用较短的篇幅简要说明SVD、PCA以及两者之间的联系,也希望本文能成为讲义级易懂而严谨的文章。
言归正传,首先一句话概括SVD和PCA的联系:对中心化后的样本矩阵做SVD的过程就是PCA。
接下来本文将对SVD与PCA进行简要介绍。
SVD
SVD(Singular Value Decomposition,奇异值分解)就是将任意一矩阵()分解为三个矩阵相乘的形式,但对这三个矩阵的形式有要求,其过程如下:
(1)求的正特征根:,与正交特征向量:
(2)令
(3)令
(4)令
对角线元素称为的正奇异值,除此之外,还有个为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的原理进行推导。
最小均方误差指的是:使先降维后升维的新数据与原数据的误差最小。
先定义一组维的标准正交基
每条维的原数据均可以表示为上述基的线性组合
相当于进行了坐标变换
对式等号两侧同左乘易得
将上式带入式得
用个向量近似表示,即下式的第一个求和部分的权值对每个是不同的,但所有的共享第二个求和部分的权值。就是先降维后升维得到的新数据。
目标是使失真度(均方误差)最小
式含有的参数无非是,但和的关系可看做“蛋和鸡”的关系:知道了便能确定权重,反之亦然。因而接下来我们不妨先将目标定为通过调整权重来求上式的最小值,之后再反过来确定基。根据多元函数的凸优化理论(本例为2元2次),上式在对各个参数()的导数均为零时取得最小值,因而:
将式对参数求导,得到如下个等式
易得
将式对参数求导,得到如下个等式
易得
因而
为之前出现过的协方差矩阵。由于所求目标为带限制条件()的最优化问题,因而使用拉格朗日乘子法:
上式为矩阵表达式,其对基向量求导并化简可得到个式子(此处用到了矩阵表达式对向量的求导公式,请读者自行查阅)
由上式可知,的最小值对应协方差矩阵的个最小的特征根及其特征向量,对应的失真度为
进一步我们可以得出的前个成分是个最大特征根对应的特征向量,即原数据在最小均方误差目标下的降维后的结果就是