资讯

主成分分析 PCA 是什么?找出数据变化最大的几个方向来降维

2026-11-054 分钟阅读百科
TL;DR主成分分析(Principal Component Analysis,PCA)是最经典的线性降维方法,由皮尔逊在 1901 年提出、霍特林在 1933 年发展,通过对中心化数据的协方差矩阵做特征分解(或对数据矩阵做 SVD),找出方差最大且彼此正交的主成分方向,把数据投影到前 k 个主成分上,以最少维度保留最多信息;常用于可视化、去噪、压缩和特征提取,对尺度敏感需标准化,只能捕捉线性结构。

主成分分析(Principal Component Analysis,PCA)是最经典、使用最广泛的数据降维方法。它的目标是:找到少数几个新的方向,把原来高维的数据投影到这些方向上,用尽可能少的维度保留尽可能多的信息。英国统计学家卡尔·皮尔逊在 1901 年最早提出了这一思想,美国统计学家哈罗德·霍特林在 1933 年进一步发展了它,并给出了“主成分”这个名称。

直观理解

想象在一张纸上画了很多点,这些点大致沿着一条斜线分布,形成一个细长的椭圆形。虽然每个点都需要两个坐标来描述,但它们主要是沿着那条斜线的方向变化,在与它垂直的方向上变化很小。如果把坐标轴旋转一下,让第一个坐标轴沿着那条斜线,第二个坐标轴与它垂直,那么每个点在第一个坐标轴上的位置,就包含了它的大部分信息;第二个坐标几乎都接近零,即使丢掉,也损失不了多少信息。这样,二维的数据就被近似地压缩成了一维。主成分分析做的就是这件事,只不过是在更高的维度上:比如把一百个特征压缩成十个,同时尽量保留数据中的主要变化。

两个等价的视角

最大方差:主成分分析寻找的第一个方向,是让数据投影到上面之后方差最大的方向,也就是数据分布最“散开”的方向,叫作第一主成分;第二个方向是在与第一个方向垂直的前提下,方差最大的方向,叫作第二主成分;以此类推。方差越大,说明这个方向上包含的信息越多。最小重建误差:等价地,主成分分析也可以理解为寻找一个低维的子空间,使得把数据投影到这个子空间上之后,投影点与原始点之间的距离之和最小,也就是用低维表示重建原始数据时损失最小。周志华《机器学习》中正是从这两个角度推导出了主成分分析。

如何计算

第一步,中心化:把每个特征都减去它的平均值,让数据以原点为中心。如果各个特征的单位和取值范围相差很大,还需要先进行标准化,否则取值范围大的特征会主导结果。第二步,计算数据的协方差矩阵,它描述了各个特征的方差以及特征之间的相关性。第三步,对协方差矩阵进行特征值分解:特征向量就是各个主成分的方向,对应的特征值就是数据在这个方向上的方差。第四步,把特征值从大到小排列,选取最大的 k 个特征值所对应的特征向量,把数据投影到这些方向上,就得到了降维后的 k 维数据。在实际的计算中,通常直接对中心化后的数据矩阵进行奇异值分解,这在数值上更加稳定。如何选择 k?常用的做法是看累计的“解释方差比例”,比如选择能够保留原始数据 95% 方差的最少的主成分数量。

应用

数据可视化:把高维的数据降到二维或三维,画成散点图,直观地观察数据的结构。去噪:数据中的噪声通常分布在方差很小的那些方向上,只保留前几个主成分,就能去掉大部分的噪声。数据压缩和加速:减少特征的数量,降低存储和计算的成本,加快后续模型的训练。去除特征之间的相关性:各个主成分之间是互不相关的,这对一些要求特征独立的模型有帮助。一个经典的应用是“特征脸”:1991 年,Matthew Turk 和 Alex Pentland 用主成分分析处理大量的人脸图片,得到的主成分看起来像一张张模糊的“幽灵脸”,每张人脸都可以近似地表示为这些特征脸的组合,用于人脸识别。主成分分析还被广泛用于基因数据分析、金融中的风险因子分析、图像压缩等领域。

局限

主成分分析只能发现线性的结构,如果数据分布在一个弯曲的流形上,它的效果就会受到限制,这时可以使用核主成分分析、t-SNE、UMAP 等非线性降维方法。它是无监督的,只关心方差,不考虑类别标签,方差最大的方向不一定是最有利于分类的方向,需要考虑类别信息时可以使用线性判别分析。此外,主成分是原始特征的组合,含义往往不太直观,可解释性较差,而且对异常值比较敏感。