主成分分析(principal component analysis,PCA)是一种无监督学习方法,用来计算主成分理解数据。
PCA的主要思想是n个样本值虽然都是存在于p维空间当中,但是并不是所有维度都有同样的价值,PCA致力于寻找少数尽可能有意义的维度来表达数据。而维度是否有意义由所有观测值在每一维度上的离散程度(方差,variance)决定。
PCA步骤:
假设现在有这么一组数据
第一步:数据中心化,分别求X1和X2的均值,然后对于所有的样本数据都减去对应的均值,如样本数据
所以中心化的数据如下图所示
第二步,求X1和X2的协方差矩阵
对角线上分别是x和y的方差,非对角线上是协方差。协方差是衡量两个变量同时变化的变化程度。协方差大于0表示x和y若一个增,另一个也增;小于0表示一个增,一个减。如果x和y是统计独立的,那么二者之间的协方差就是0;但是协方差是0,并不能说明x和y是独立的。协方差绝对值越大,两者对彼此的影响越大,反之越小。协方差是没有单位的量,因此,如果同样的两个变量所采用的量纲发生变化,它们的协方差也会产生数值上的变化。
第三步,求协方差的特征值和特征向量,得到
上面是两个特征值,下面的是对应的特征向量,
对应的特征想想是
第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的K个特征向量组成特征向量矩阵
第五步,将样本点投影到选取的特征向量上,完成数据降维。
这里有一个问题就是,我们到底需要选用多少个主成分去进行降维呢?在已确定的全部p个主成分中合理选择m个来实现最终的数据降维,一般用方差贡献率
来解释主成分所反映的信息量的大小,合理选择m个的确定,便以累计贡献率达到足够大的阈值为原则(一般情况下取85%)。
关于PCA:除了一开始需要对数据样本进行中心化,一般还需要进行标准化,也就是除以样本的标准差,因为不同特征采用不同的计量单位,会影响到方差的大小。