0.基本说明
PCA主成分分析是一种数据降维(有损压缩)的方法,在尽量保持信息的情况下,尽量减少数据的维度。
1.PCA思想
以二维为例,假设我们现在有一系列点,如下图所示:
假设我们总共有n个点,每个点需要2个坐标值,存储代价为2n。现在我们考虑将所有点投影到L上,可以发现,相互距离大的点对在投影后依旧保持大距离,相互距离小的点对在投影后依旧保持小距离,而表达L我们可以用一个单位向量表示,所有的点投影到L上,相当于把L当作一个数轴,于是就可以量化所有点投影后对应的值,于是存储代价可以变为n(n个点的数值)+2(L在原空间下的方向单位向量):
但是这样做很明显有一个问题,就是投影前后其实是存在差距的(A投影为A'后,在原二维空间上,投影前是OA,投影后是OA',存在误差OA-OA'=A'A),而我们要怎么选择L关键就在于如何让这部分误差最小,也就是信息损失最少,这部分误差我们称之为最小重构误差。
我们来尝试推导一下:设U为L上的方向向量,简单起见设e=A‘A,OA=x,那么有
由于向量很难描述,因此我们转而描述向量的模长,即
注意在上述推导中,要时刻记住和
均是点积,结果是一个数,在矩阵的连续乘法子式中可以任意移动。
即我们的目标就变成了:对于所有的原样本,求解一个方向
,使得
2.样本点中心化
中心化操作和均值化实际上是同一个意思,所谓中心化就是让样本各个维度的均值为0。如果缺少了这一步均值化我们看看会发生什么?首先需要明确的一点是,由PCA选出的主方向是一定要过原点的。因为向量本身只有方向和长度,所以我们必须要统一一个起点,最为方便和直观的自然就是原点。选其他点行不行?当然也是可以的,然而我们必须知道,这是一个统一的标准,即在所有的坐标系下都必须以这个原则为准。那既然是这样,为什么不干脆都选的简单些?
可以看到,主方向的方向向量其实是一致的,只是起点不一致而已,而在这种情况下,显然误差是被放大了的,因此中心化这一步必不可少。