核心要点

  • 先对特征中心化(必要时标准化),消除均值与量纲影响。

  • 计算协方差矩阵并做特征分解,特征向量是主成分方向、特征值是该方向上的方差。

  • 按特征值从大到小排序,取前 k 个主成分张成低维子空间,把数据投影上去即降维

  • 工程上常用对中心化数据矩阵做 SVD 求主成分,比显式构造协方差矩阵更数值稳定。

标准回答

目标

PCA 寻找一组互相正交的新坐标轴(主成分),使数据投影后方差最大(信息保留最多),用前几个主成分替代原始高维特征,达到降维去冗余。

步骤

  1. 中心化:每个特征减去均值;若量纲差异大则再标准化。
  2. 求协方差矩阵 C = (1/n)XᵀX。
  3. 对 C 做特征分解,得到特征向量(主成分方向)和特征值(对应方向的方差)。
  4. 按特征值降序排列,选累计方差占比(如 95%)所需的前 k 个特征向量。
  5. 把中心化数据投影到这 k 个主成分上,得到降维后的表示。

与 SVD 的关系

对中心化矩阵 X 做 SVD:X = UΣVᵀ,则 V 的列即主成分,奇异值平方与特征值成正比。实践中直接用 SVD 更稳定,避免显式构造可能病态的协方差矩阵。

常见误区

⚠️ 常见踩坑

别忘了先中心化、量纲不一致时还要标准化,否则方差大的特征会主导主成分。另外 PCA 是无监督线性降维,只看方差不看标签,方差大的方向未必对分类最有判别力(那是 LDA 的目标)。

追问

追问 1怎么决定保留多少个主成分?

常用累计解释方差比,取达到阈值(如 90%~95%)所需的最小 k;或看碎石图(scree plot)的「拐点」;若用于下游模型,也可把 k 作为超参用交叉验证选。

追问 2PCA 和 t-SNE/UMAP 有什么不同?

PCA 是线性、可解释、保全局方差结构、可对新数据做投影,主要用于降维与去相关;t-SNE/UMAP 是非线性、侧重保留局部邻域结构、主要用于可视化,计算更贵且一般不便直接外推到新样本。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Scikit Learn

    Python 机器学习库,65,876+ stars。最流行的 Python 机器学习框架,提供分类、回归、聚类、降维等全面的 ML 算法,API 设计简洁优雅,是 ML 入门和工业实践的首选