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