算法目标:
将数据集X={x1,…,xn}从维数为d维的高维空间映射到k维的低维空间,令得到的y={y1,…,yn}中各数据间“区分度”最大。
上述的降维转换通过正交变换实现,降维得到的线性子空间由k个相互正交的向量表示,而数据低维表示的各个线性不相关的分量被称为主成分。
算法步骤:
假设有m条n维数据。
1、首先将原始数据排列成n行m列矩阵X。
2、将X的每一行减去每一行的均值,在这里也可以给每一行的权重进行设置,也就是乘一个权重系数矩阵。
3、求出协方差矩阵C=(1/m)*XT*X。
4、求出协方差矩阵的特征值以及特征向量。
5、将特征向量对应特征值的大小按行排列成矩阵,取前k行组成矩阵P。也可以根据所选特征值占特征值总和的某个比例进行选择(比如95%),但是也需要将相应的特征值和特征向量进行排序,并且在满足条件的情况下,所选特征值个数取下限。
6、Y=PX就是降维后降到K维的数据。
作为非监督性线性降维算法,PCA可以用于任何数据集上。需要注意的是,PCA假设数据中的重要信息分布在变化最大的k个方向上,并且在主成分计算过程中对数据协方差矩阵的处理方式意味着PCA默认所有数据服从同一高斯分布。