理解主成分分析(PCA)背后的数学与理论
深入理解PCA,或许会帮助你更好的使用。
原作者:Leandre Sabourin
本文经过一定程度的细节增添方便更好理解。
引言
有时候,你可能会面对这样一种情况:
数据实在太多,以至于你根本不知道该从哪里开始分析。
事实上,这并不是坏事。在当今的数据时代,数据过多往往比数据不足更有优势。然而,一个常见的问题是:
当数据维度过高时,人们反而难以理解数据结构,也难以发现其中真正有意义的模式或关系。
换句话说,大量变量可能掩盖真实信息,使模型学习到噪声(noise)而不是结构(structure)。
幸运的是,统计学与机器学习中存在一类方法,可以帮助我们在复杂数据中识别潜在模式。例如在以下领域:
- 心理测验分析
- 基因表达研究
- 生物炎症指标分析
- 高维实验数据分析
这些方法尤其重要,因为它们能够:
- 降低 多重共线性(multicollinearity)
- 减少 过拟合(overfitting)
- 提取数据中的主要信息结构
本文将介绍其中最经典的方法之一:
主成分分析(Principal Component Analysis, PCA)
我们将重点讨论其数学原理与计算步骤。
主成分分析(PCA)
主成分分析(PCA)的目标是:
通过构造一组新的、彼此不相关的变量(称为主成分),来简化复杂数据,同时尽可能保留数据中的方差信息。
换句话说:
PCA 试图找到新的坐标轴,使数据在这些方向上的变化最大。
当数据维度过高时,模型可能会学习到:,而 PCA 能够将信息集中到少数几个方向上。
PCA 属于一种:
因为它在没有标签(label)的情况下,仅依据数据本身寻找结构。
PCA 如何工作
PCA 的核心思想是:
通过重新定义数据集的坐标轴,使新的坐标轴(主成分轴)能够解释数据中最大的方差。
也就是说,我们不再使用原始特征作为坐标轴,而是寻找一组新的方向,使数据在这些方向上的变化最明显。
可以直观理解为:

- 左侧:数据位于原始坐标轴中
- 右侧:坐标轴被新的 主成分(Principal Components) 所替代
这些新的轴通常比原始变量更能揭示数据结构。
PCA 的基本步骤
执行 PCA 通常包含四个主要步骤:
- 数据标准化(Normalize data)
- 计算协方差矩阵(Covariance matrix)
- 计算特征值与特征向量(Eigen decomposition)
- 选择主成分(Select principal components)
下面逐步解释每一步。
数据标准化
PCA 的第一步是对数据进行标准化处理。
目标是将数据转换为:
这一过程通常假设数据近似服从正态分布(Gaussian distribution)。
标准化的作用包括:
- 消除不同变量量纲的影响
- 防止尺度较大的变量主导分析
- 减弱异常值对结果的过度影响
Z-score 标准化
标准化通常通过 Z-score 完成:
其中:
- Xij:第 i 个样本在变量 j 上的取值
- μj:变量 j 的均值
- σj:变量 j 的标准差
经过该变换后:

得到标准化数据矩阵:Z
计算协方差矩阵
数据标准化后,下一步是计算协方差矩阵。
协方差矩阵是一个方阵,用于描述:
数据集中变量两两之间如何共同变化。
其公式为:

其中:
- Z:标准化后的数据矩阵
- N:样本数量
- C:协方差矩阵
数据矩阵结构
矩阵 Z 的含义:
- 每一行 → 一个观测(参与者、实验、样本)
- 每一列 → 一个变量(特征)
例如:

什么是转置(Transpose)
公式中的:
表示矩阵转置,即:
行与列互换。
例如:

则:

为什么这样就得到协方差?
展开矩阵乘法:
这正是协方差定义:
因此:
矩阵乘法一次性计算了:所有变量两两之间的协方差
协方差矩阵的重要作用是:
- 判断变量是否一起增加或减少
- 揭示特征之间的相关结构
计算特征值与特征向量
从协方差矩阵出发,我们需要计算两个关键量:
特征向量(Eigenvectors)
表示 最大方差的方向
特征值(Eigenvalues)
表示 该方向上的方差大小
冷知识:“Eigen”的含义
“Eigen”来源于德语,可译为:
“固有的” 或 “特征性的”。
在矩阵变换中:
大多数向量在变换后会:
- 改变方向
- 改变长度
但特征向量具有特殊性质:
经过变换后方向保持不变。
数学表达为:Cv=λv
其中:
- C:协方差矩阵
- v:特征向量
- λ:特征值
示例(此处矩阵用A表示):

添加一个向量v:

计算Av,三行均为:18×1+18×1+18×1=54。
所以,

得到:
特征向量:(1,1,1)
特征值:54
PCA 中的意义
在 PCA 中:
- 每一个特征向量 → 一个候选主成分
- 对应特征值 → 该主成分的重要程度
因为:
- 特征向量指向数据变化最大的方向
- 特征值表示该方向包含多少方差信息
结合我们的示例
协方差结构:
得到:λ1=54
对应方向:

说明:
数据几乎全部变化集中在一个方向。
而其他方向:λ2=λ3=0
表示没有新的信息。
选择主成分
当我们已经计算出所有的特征值(eigenvalues)和特征向量(eigenvectors)之后,下一步需要决定:
应该保留多少个主成分。
通常在进行 PCA 时,主成分会按照其对应的特征值大小进行降序排列。
- 第一主成分解释的数据方差最多;第二主成分解释次多的方差;依此类推。

确定应保留多少主成分的方法有多种。其中一种常见方法称为 碎石图(Scree Plot)。该方法通过绘制每个主成分所解释的方差比例来进行判断。

上述碎石图展示了:随着所保留主成分数量增加,数据累计解释方差比例的变化情况。
通常可以观察到:
- 在最初的几个主成分中,曲线会上升得非常陡峭;
- 随后曲线逐渐变平。
这意味着:
后续增加的主成分对解释数据方差的贡献越来越小,即出现收益递减(diminishing return)。
曲线开始明显变平的位置通常被称为 “拐点(Elbow)”,因为其形状类似人的手肘所以英文是Elbow。这个位置通常被认为是选择主成分数量的一个较为可靠的参考点。
将数据投影到主成分空间
现在来到 PCA 的最后一步:
将原始数据投影到选定的主成分上。
在数学上,这一步可以表示为:
其中:
- Z:步骤 1 中得到的标准化数据矩阵
- V:由选定特征向量组成的矩阵(即主成分矩阵)
- :在主成分空间中的新数据表示
这一过程通过将标准化数据矩阵与所选择的特征向量矩阵相乘完成。
换句话说:
我们将数据投影到协方差矩阵的特征向量方向上。
从概念上来看,这相当于:
- 对原始坐标系统(由原始特征构成)进行一次旋转,
- 使新的坐标轴与数据中方差最大的方向对齐(即主成分方向)。
在新的表示空间中:
- 每一个新维度都是原始变量的线性组合;
- 各主成分之间彼此不相关;
- 主成分按照所包含的方差大小依次递减:
即:
- 第一主成分包含最多方差;
- 第二主成分包含次多方差;
- 依次类推。

左图为 PCA 之前的原始数据;右图为使用主成分替代原始坐标轴后的数据表示。
在某些情况下,当我们保留三个或更多主成分时,还可以将数据可视化到三维空间中:

在该示例中,虽然数据被表示为三个主成分,但可以观察到:
- 数据在 PC3 方向上的扩散远小于 PC1 和 PC2。
这说明:
第三个主成分所包含的方差信息相对较少。
因此,PCA 并不会真正删除维度,而是:
根据重要性对各维度进行排序。
此时,PCA 已经将原始数据转换为一种更低维、更易于:
- 可视化,分析,或用于后续模型训练的数据表示形式。
总结
本文介绍了主成分分析(PCA),一种非常常用的降维算法。
从本质上讲,PCA 的目标是:
找到数据变化最大的方向,并使用这些方向重新表达数据集。
这些方向由数据协方差矩阵的:
- 特征向量(eigenvectors),特征值(eigenvalues)所决定。
通过选择能够解释最多方差的主成分,PCA 能够在保持数据整体结构的同时降低数据复杂度。因此,它在以下领域中非常重要:
- 探索性数据分析(Exploratory Data Analysis)
- 神经科学(Neuroscience)
- 机器学习(Machine Learning)
同时还能有效降低计算成本。