PCA主成分分析法简介
主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。
PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到这些维度上,使降维后信息量损失最小。
总而言之,PCA的概念很简单:减少数据集的维数,同时保留尽可能多的主要信息。
PCA主要步骤去除平均值
计算协方差矩阵
计算协方差矩阵的特征值和特征向量
将特征值排序
保留前N个最大的特征值对应的特征向量
将原始特征转换到上面得到的N个特征向量构建的新空间中(最后两步,实现了特征压缩)
标准化
此步骤的目的是标准化输入数据集,使数据成比例缩小。
更确切地说,在使用PCA之前必须标准化数据的原因是PCA方法对初始变量的方差非常敏感。也就是说,如果初始变量的范围之间存在较大差异,那么范围较大的变量占的比重较大,和较小的变量相比(例如,范围介于0和100之间的变量较0到1之间的变量会占较大比重),这将导致主成分的偏差。通过将数据转换为同样的比例可以防止这个问题。
求每一个特征的平均值,然后对于所有的样本,每一个特征都减去自身的均值。
经过去均值处理之后,原始特征的值就变成了新的值,在这个新的norm_data的基础上,进行下面的操作。
计算协方差矩阵
此步骤的目的是了解输入数据集的变量相对于彼此平均值变化,换句话说,查看它们是否存在关系。因为有时候,变量由于高度相关,这样就会包含冗余信息。因此,为了识别变量的相关性,我们计算协方差矩阵。
下面以二维矩阵为例:
上述矩阵中,对角线上分别是特征x1和x2的方差,非对角线上是协方差。协方差大于0表示x1和x2。若有一个增,另一个也增;小于0表示一个增,一个减;协方差为0时,两者独立。协方差绝对值越大,两者对彼此的影响越大,反之越小。
计算协方差矩阵的特征值和特征向量
求协方差矩阵
的特征值
和相对应的特征向量
(每一个特征值对应一个特征向量):
特征值
会有
个,每一个
对应一个特征向量
,将特征值λ按照从大到小的顺序排序,选择最大的前k个,并将其相对应的k个特征向量拿出来,我们会得到一组{(λ1,u1),(λ2,u2),...,(λk,uk)}。
将原始特征投影到选取的特征向量上,得到降维后的新K维特征
这个选取最大的前k个特征值和相对应的特征向量,并进行投影的过程,就是降维的过程。对于每一个样本
,原来的特征是
,投影之后的新特征是
,新特征的计算公式如下:
PCA算法的主要优点仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
各主成分之间正交,可消除原始数据成分间的相互影响的因素。
计算方法简单,主要运算是特征值分解,易于实现。
PCA算法的主要缺点主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。
参考https://zhuanlan.zhihu.com/p/58663947
https://blog.csdn.net/lanyuelvyun/article/details/82384179