前言
这篇笔记结合了多篇博客,总结这篇笔记,是因为每次忘了PCA都重新找资料,挺麻烦,所以把找的资料整理成这篇笔记,方便自己以后再回顾,也希望可以帮助到正在学习PCA的各位,参考的资料中,我知道出处的,我会在笔记中写出,如果有我没标出的,请告诉我,我会补上或删除。特征值分解、奇异值分解、PCA详见:
https://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html
PCA 原理
一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向,我们在数据挖掘中或者数字信号处理中,往往要提高信号与噪声的比例,也就是信噪比。 PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。如此,PCA就是要找到多个主成分,以代替原来的特征,有点坐标变换的意思。1. PCA降维为什么就是对协方差矩阵进行特征分解?
这一部分资料是来自实验室学卿大佬的笔记整理而来,已经过其同意,这部分资料也可能是由他由网上某博客找来,如有知道来源,请告知,我会加上来源链接。
设当前有数据集X∈Rn×m, 其中m 表示样本数,xi∈Rn×1 表示特征维度, ˉX∈Rn×1 按行求各个特征维度的平均值。则将数据向量去中心化再投影到某一单位向量e 上,其长度为向量积eT(xi−ˉX), 其中eTe=1。该数据集的方差为: \(\sigma ^2=\frac{1}{n}\sum_{i=1}^n{\left[ e^T\left( x_i-\bar{X} \right) \right] ^2} \tag{1}\) 首先要求第一个轴上的单位向量,使得数据集在该单位向量上的投影方差最大: \(σ2=1nn∑i=1[eT(xi−ˉX)]2=1nn∑i=1[eT(xi−ˉX)][eT(xi−ˉX)]T=1nn∑i=1[eT(xi−ˉX)(xi−ˉX)Te]=eT[1n(xi−ˉX)(xi−ˉX)T]e=eTΣe
可以看出,当 λ 对应 Σ 的特征值,而 e 为 λ 对应的单位特征向量时,即求得单位向量 e, 而 \(\sigma ^2=e^T\varSigma e=\lambda e^Te=\lambda \tag{6}\) 可以看出,当取最大特征值时,对应的方差最大,设此时的最大特征值为 λ1,对应单位特征向量 e1,同理,第二个轴即为第二大的特征值 λ2 对应的单位特征向量 e2 ,以此类推,取前 r 个最大的特征值, 对应 r 个单位特征向量,组成矩阵 W, 则可以将原数据集 X 投影到新的轴上,不做降维时,W∈Rn×n, 取前 r 个特征值时,由n→r,W∈n×r: \(Y = W^T(X-\bar{X})=[e_1, e_2, \dots, e_r]^T(X-\bar{X}) \tag{7}\) 则样本方差之和为协方差矩阵对角线的之和,即为协方差矩阵的秩: \(tr\left( \varSigma \right) =\lambda _1+\lambda _2+\cdots \lambda _n \tag{8}\)
2. 为什么对X进行SVD分解或者对内积矩阵XTX做特征分解也可以做PCA降维
这部分内容主要来自知友 li Eta的回答 https://www.zhihu.com/question/39234760/answer/80323126
对数据集按行求均值,然后就可以对数据集进行中心化了,即新数据集的均值为0。此处假设X是经过中心化处理的,则协方差矩阵为1nXXT, 而PCA的目标就是求使方差最大的特征向量(第1问中): \(\argmaxWst(WTXXTW) s.t. WTW=I
如有错误,希望能指出来,相互提升,谢谢。