Principal Component Analysis
PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。 在PCA中,我们的基本思想是将所有数据投影到一个子空间中,从而达到降维的目标,为了寻找这个子空间,我们的基本想法是:
- 所有数据在子空间中更加分散(最大方差理论)
- 损失的信息最少(最小平方误差理论)
0.预备知识
假设数据矩阵X如下所示:
(x1,x2,…,xN)N×pT=⎣⎢⎢⎢⎡x1Tx2T⋮xNT⎦⎥⎥⎥⎤=⎣⎢⎢⎢⎡x11x21⋮xN1x12x22⋮xN2……⋮…x1px2p⋮xNp⎦⎥⎥⎥⎤N×p
本文使用 xi,i=1,2,…,N 行向量代表每一个样本,除此之外的向量均为列向量。
样本的均值(sample Mean)可表示为:
Xˉp×1=N1i=1∑Nxi=N1XTIN
式中IN为N×1的单位向量。
样本的协方差矩阵(sample Covariance)可表示为:
Sp×p=N1i=1∑N(xi−xˉ)(xi−xˉ)T
1.最大方差理论
假定拥有的数据只有两个维度,每个数据都由横纵坐标表示,如下图所示。原始数据在椭圆的短轴方向上变化很小,在极端的情况下,短轴方向上的数据可能会退化为一个点。而在长轴方向上的数据能够解释所有数据的变化,将所有数据往长轴上投影时,能够保证样本与样本间的离散程度最大,也就是映射后的数据方差最大。这样由二维向一维空间的降维也就找到了投影方向,而且椭圆的长短轴相差的越大,降维后所保留的信息也就越多。

PCA的步骤如下所示:
-
标准化: xi=std(xi)xi−xˉ 步骤使得数据集移至0均值附近,同时使得数据的方差为1;
-
计算投影方差: 由于映射的投影方向与投影向量的模长无关,假设将PCA种的第一投影向量记作∣∣u1∣∣=1,则投影方差可以表示为:
J(u1)=N1i=1∑N[xiu1]T[xiu1]s.tu1Tu1=1
将上式展开即可得到:
J(u1)=N1i=1∑Nu1T(xiu1)T(xiu1)u1=u1T[N1i=1∑N(xiu1)T(xiu1)]u1=u1TSu1
上式中的 S 表示的是数据集的协方差矩阵,在 Sp×p=N1∑i=1N(xi−xˉ)(xi−xˉ)T 中由于第一步的标准化处理使得 xˉ 为0,因此上式能够进行化简。接下来将上述的目标函数记作如下形式:
⎩⎨⎧u1argmaxu1TSu1.s.t.u1Tu1=1
-
求解有约束的优化问题: 构造朗格朗日函数,如下:
L(u1,λ)=u1TSu1+λ(1−u1Tu1)
将拉格朗日函数对 $ u_1 $ 求偏导,得到:
∂u1∂L(u1,λ)=2Su1−λ2u1=0⟹Su1=λu1
其中 u1 即是特征向量,λ 为特征值。
-
最终的目标函数
通过上述的分解可以得到最后化简完成的目标函数,如下所示:
u^1=u1argmaxu1TSu1.=u1argmaxu1Tλu1.=u1argmaxλu1Tu1.=u1argmaxλ.
最终,只需要找到最大的特征值 λ 对应的特征向量作为主元方向即可保证投影后的数据方差最大。