PCA算法的优化目标是用低维数据来近似表示高维数据,低维数据两两不相关,并保留绝大部分的数据方差。在执行算法之前,首先对数据进行均值归一化和特征缩放处理,也就是将样本的每维数据都转化均值为零、方差为一的标准化随机变量。文中的向量指的都是列向量。
设矩阵表示个维随机样本,向量表示其中的一个样本。我们希望在空间内找到一个标准正交基,原样本经过基变换后,不同维度的数据线性无关,即不同维度数据的协方差为零。
向量在基中的新坐标为:,所以样本经过基变换后为样本,其中:
由于每维数据的样本均值都是零,所以样本的协方差矩阵为:
协方差矩阵对角线上的个数据表示个维度的数据方差,其他数据表示不同维度数据的协方差,我们希望协方差矩阵除了对角线之外的数据全部为零,即把矩阵对角化。
注意到就是样本的协方差矩阵,并且是一个阶对称矩阵,那么一定存在正交矩阵,使:
其中是由的个经过正交化和单位化之后的特征向量组成的正交矩阵,是以的个特征值为对角元的对角矩阵。这就证明了矩阵解的存在性和组成结构。
我们已经找到了矩阵,现在希望把维向量映射到维向量,并按比例保留的数据方差,其中未知。通过下面的方法来确定最小的值:
,其中是按照倒序排列的特征值
确定值后,我们实际上就是找到了空间中的一个子空间,由前个最大的特征值对应的特征向量组成。每一个样本在子空间上的投影即为映射到的维向量,其中:
同时,维样本降维为维样本,并保留了的数据方差,其中:
矩阵和可以通过对协方差矩阵进行特征分解或奇异值分解得到,确定了矩阵和值后即完成了PCA降维算法。
网友评论