#先写到这里,下次再补充详细的推导细节。
对于PCA算法,《Foudations of ML》、《Understanding ML》、周老师的《机器学习》以及《Data Mining》、PRML 和 花书《深度学习》甚至统计学的多元统计分析课本中的出发角度和推导方式都各不相同。
周老师的《机器学习》书提供了从最大重构性和最大可分性的两种角度出发的推导。
个人认为,最正统的方式应该是从最大可分性的角度出发,即寻找投影方向,使得投影后的样本点的方差尽可能大,在这种推导方式下,需要注意方差的计算,是需要用到样本均值的。
若仅仅从最大重构性角度出发,目的是求解问题:
$$mathop{argmin}_{P ext{为} n imes k ext{列直交阵}} quadquadquad| X - PP^TX|_F$$
实际上是不需要对样本进行中心化的(当然中心化也没错), 其解为对样本scatter matrix $XX^T$ 做特征值分解,取其前$k$大特征值对应的特征向量作为投影矩阵。 注意这里的 $XX^T$ 与协方差矩阵不等价(除非$X$是已经中心化过的数据),参见 《Understanding ML》一书的相应章节。此时的 PCA 可以保证投影后的点与原始点尽可能地靠近,但不再具有投影后的点方差尽可能大的性质,(当然也有可能这样方式得到的结果并不称为 ``PCA'' 算法),其实这种方式得到的结果相当于 trancated SVD 的结果。
PRML 也有从最大重构性的角度出发的推导,不过其是求解在平移和投影的两种操作下,投影点逼近原始数据点的问题,即其求解的是:
$$mathop{argmin}_{b,\,P ext{为} n imes k ext{列直交阵}}quadquadquad| (X -m{1}b^T)- PP^T(X -m{1}b^T)|_F$$
对于此问题,可通过矩阵求导(Lagrange 乘子法)的方法进行求解,其解为满足 $b$ 为样本均值点,$P$ 为 样本协方差矩阵$frac{1}{n}X(I-frac{1}{n}m{1}m{1}^T)X^T$ 的前$k$大特征值对应的特征向量构成的矩阵。
另外花书《深度学习》提供了另一种推导方式,即坐标变换(投影)后的数据点的各个维度数据间的 correlation 尽可能的小,其目的是消除各维数据间的correlation,从而尽可能的减少冗余数据。恰好此方式与最大可分性,即降维后的数据的方差尽可能大重合。
在实际使用中,通常是使用中心化版本的 PCA,先对数据进行中心化,$X o X_C$, 然后再对$X_C$执行PCA 算法,这样对于 $X_C$ 来说,投影后的点既满足了最大可分性, 又有了最大重构性的特点。