老饼讲解:一步一步上手学习
本文讲解主成份分析PCA中主成份系数矩阵是怎么求解出来的,并用代码实现及验证与sklearn包的结果是否一致。
PCA中的主成份系数矩阵A是怎么求解出来的?本节我们先梳理PCA问题的数学表达。
PCA就是求一个旋转变换,使变换之后每维之间不相关,即要求一个标准正交矩阵A,使得XA列列之间的协方差为0,也即XA的协方差矩阵是对角矩阵。总的来说,PCA的数学问题表达如下:
求一标准正交矩阵A,使它满足
这里我们忽略了数据的中心化,下面的推导也忽略数据的中心化,事实上,下面我们就会看到,中不中心化并不影响PCA的求解原理。
由于
上述第1到第2个等号中是需要证明的,这里省略,通过上式,可知PCA问题可以化简为:
求一个标准正交矩阵A,使得。
可以看到,这是一个经典的矩阵对角化问题,由于是对称矩阵,所以必能找到一个标准正交矩阵A。
事实上,只要仔细思考一下就会发现,数据中不中心化,经过化简后的PCA问题都是一样的。
本节讲解求解PCA问题的两种求解方法:特征值法及SVD法。
PCA问题的求解其实就是矩阵对角化的问题。
数学上常用的方法是先求出的特征值,再求得对应的特征向量,将特征向量标准化后组合在一起就是所需求解的、让 对角化的标准正交矩阵A。
备注:将特征向量组合成A的时候需要根据特征值由大到小对应的特征向量进行组合,具体操作这里不再细说,矩阵对角化,懂的都懂。
实际中更常用的是通过SVD分解来求得PCA问题中的A。
SVD分解是指将一个的矩阵分解成三个矩阵的积,其中U、V分别是的酉矩阵,是对角矩阵。
注意到
只需将进行SVD分解,即有
易知,当时就是对角矩阵,如下
根据以上的原理,可以将PCA的求解方法总结如下:
将进行SVD分解,得到
(1) 就是所求
(2)就是
用SVD来求解PCA就是这么简单,只需要进行SVD分解一下就可以得到系数矩阵A和方差了。
总的来说,PCA其实就是求一个标准正交矩阵A,使得,也就是求的对角化矩阵,而是对称矩阵,所以必能求得A。另一方面,由于是对称矩阵,用SVD分解来求A会更为方便。
评论