想象你是一位摄影师,接到一个特殊任务:给100位个性鲜明的朋友拍一张“特长合影”。每个人都有多项数据——身高、体重、跑步速度、弹跳高度、握力、反应时间……你需要选一个拍摄角度,让照片最清楚地体现“谁和谁不同”。如果从正面直拍,大家排成一排,高矮胖瘦差异被正脸挡住,看不分明;如果从斜侧面拍,身高差异立刻拉开,照片更有“层次感”。同一个班级,换个角度,照片能传达的信息量就完全不同。 PCA(主成分分析)就是一位“找角度大师”:它自动分析全体数据,找到那个能让投影后数据分散程度(方差)最大的方向,然后沿着这条“黄金角度”把高维数据压缩到低维空间。核心思想一句话:降维不是随便砍掉几个特征,而是找到新的坐标方向,让数据投影后拉开最大差距,保留最多的差异化信息。这篇文章将带你拆解PCA的完整逻辑:从“为什么方差大等于信息多”的直觉,到投影方向如何选择,再到协方差矩阵和特征分解怎样一步步算出黄金角度。读完你会明白PCA每个步骤在干什么,而不是只会调用sklearn里的一行API。

岗位关联

掌握“方差最大化”这一核心直觉,是理解数据降维的第一块基石。它能帮你读懂基于PCA的各类工具(可视化、特征压缩、去噪),并在高维数据处理中做出有依据的工程决策,是从“会用工具”迈向“懂原理”的分水岭。

目录
  1. 可视化演示
  2. 降维动机与目标
  3. 方差与信息量
  4. 投影方向选择
  5. 协方差矩阵
  6. 特征分解原理
  7. 降维投影步骤
  8. 方差贡献率
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示PCA核心原理:投影方向方差最大化、协方差矩阵特征值分解、方差解释比与降维效果。切换模式探索不同数学视角。

本节配有交互动效(进入视口后自动加载,约 3KB)。

投影方向方差最大化 PCA寻找使投影方差最大的方向,方差越大信息量越多,第一主成分捕获最大方差 最优方向是协方差矩阵最大特征值对应的特征向量,满足正交约束 max Var(w^T X) s.t. |w|=1 方差最大化等价于最小化重建误差

降维动机与目标

摄影师接到任务,要给班里30个同学拍一张“特长合影”。每个同学都有10项身体数据:身高、体重、腿长、臂展、弹跳、跑步速度……如果10个数据都记录下来,客户得对照10列数字才能想象每个人的样子——信息太多,反而看不清重点。摄影师想:能不能只用2个数字,就把每个人的特点说清楚?这就是降维的原始冲动:维度太多,人脑装不下,分析和计算也变得笨重。

机器学习的“维度”就是样本的特征个数。一个同学是10维数据,一台设备的传感器可能是1000维。当维度一高,问题随之而来:特征之间互相冗余(身高和腿长高度相关,记录了两次),数据在空间中变得稀疏,距离度量失去意义——这就是著名的“维度灾难”。降维的目标,是在压缩维度的同时“保住重点信息”,就像摄影师要找一条能把人物差异集中表现的主轴线。

从数学上看,降维是把每个样本从 d 维映射到 k 维(k < d)。标准写法是:

z=W⊤x,z∈Rk,  x∈Rd,  k<dz = W^\top x, \quad z \in \mathbb{R}^k, \; x \in \mathbb{R}^d, \; k < d

1. 高维样本 x:把一条数据看成 d 个特征组成的列向量,比如同学的身高、体重、腿长等10个数字。

x=[x1,x2,…,xd]⊤x = [x_1, x_2, \dots, x_d]^\top

2. 投影矩阵 W:由 k 个“投影方向”拼接成的 d×k 矩阵,相当于摄影师选好的 k 个拍摄机位。

W=[w1,w2,…,wk]W = [w_1, w_2, \dots, w_k]

3. 低维结果 z:每个样本在每个方向上投影得到 k 个坐标,从 d 维变成 k 维,完成降维。

z=[w1⊤x,  w2⊤x,…,wk⊤x]⊤z = [w_1^\top x, \; w_2^\top x, \dots, w_k^\top x]^\top

降维不是“随便扔掉几个特征”,而是设计一组新方向,把大家重新“投影”到一条更聪明的刻度尺上。至于这条刻度尺怎么选,答案就藏在“方差”这个词里——照片上人物拉得越开,我们能分辨的细节就越多。

方差与信息量

继续想那张合影。摄影师先试了两个角度:正面拍,所有同学几乎一样高,照片上20多个人堆在画面中间,微小的差异肉眼根本分不清;换成侧面拍,高个子和矮个子立刻被拉开,照片的“层次感”出来了。为什么同一个班级,两张照片感觉完全不同?因为第二张照片里,人物在画面上的坐标分布得更开——这个“分布得开不开”,在统计学里就叫方差。

方差衡量一组数据偏离中心的程度。数据越分散,说明数值差异越大,能传递的信息也越多。如果一件商品定价都是9.9元,价格这个维度方差为0,它完全无法帮你区分商品;反过来,如果价格从1元到10000元乱跳,那这个特征就非常能说明问题。“方差大 = 信息多”是PCA整个方法的地基。

假设我们选定方向 w,把所有数据点投影到 w 上(相当于照片的横坐标),投影后的方差为:

Var(w⊤x)=1n∑i=1n(w⊤xi−w⊤xˉ)2\mathrm{Var}(w^\top x) = \frac{1}{n}\sum_{i=1}^{n}\left(w^\top x_i - w^\top \bar{x}\right)^2

1. 投影坐标:\(w^\top x_i\) 是第 i 个样本在方向 w 上的投影,相当于人物在照片上的位置。

w⊤xiw^\top x_i

2. 投影中心:\(w^\top \bar{x}\) 是所有投影坐标的均值,先把照片沿画面中心对齐。

w⊤xˉw^\top \bar{x}

3. 偏差平方:(投影坐标 - 中心)² 衡量该点偏离中心的程度。

(w⊤xi−w⊤xˉ)2\left(w^\top x_i - w^\top \bar{x}\right)^2

4. 求平均:对所有样本的偏差平方求平均,得到投影方差。

1n∑i=1n(⋅)\frac{1}{n}\sum_{i=1}^{n}(\cdot)

要让照片保留最多差异,就要选一个方向 w,让上面的方差最大。这就像摄影师在取景器里不断转动角度,直到发现“画面里人物分布最开”的那个机位。

投影方向选择

现在摄影师明确了目标:转动取景器,找一个拍摄角度,让照片上人物坐标的方差最大。但他很快发现,如果不加约束,这个“角度”可以作弊——把镜头越拉越远,人就越分越开?不对,我们只改变拍摄角度(方向),不改变拍摄距离。在数学上,这意味着方向向量 w 的长度必须固定,通常令 ∥w∥=1。

给定一组已经中心化的数据(每个特征都减去了均值),在一定方向 w 上的投影方差可以写成目标函数:

max⁡∥w∥=11n∑i=1n(w⊤xi−w⊤xˉ)2\max_{\|w\|=1} \frac{1}{n}\sum_{i=1}^{n}\left(w^\top x_i - w^\top \bar{x}\right)^2

“单位长度约束”就是说:只看方向、不看长短。就像摄影师只动云台角度,不移动机位距离。

1. 单位长度:∥w∥=1 把方向向量规格化,防止靠放大 w 伪造大方差。

∥w∥=1\|w\|=1

2. 投影方差:括号里是数据在方向 w 上投影后的方差,衡量该方向的信息量。

1n∑i=1n(w⊤xi−w⊤xˉ)2\frac{1}{n}\sum_{i=1}^{n}(w^\top x_i - w^\top\bar{x})^2

3. 取最大值:在所有单位方向上求最大值,这个最优方向就是第一个主成分。

max⁡∥w∥=1(⋅)\max_{\|w\|=1}(\cdot)

读者可能会问:有了第一个方向,怎么找第二个?答案是加上正交约束——第二个方向必须和第一个方向垂直,因为第一个方向已经拿走了它能解释的方差,我们希望第二个方向补充“剩余”的信息,而不是重复。这与摄影同理:拍完全景正面照后,再补一张侧面照,新照片才能提供正面照看不到的角度。

到这一步,“选方向”还是一个直觉问题。下一节我们引入协方差矩阵,它会把“在所有方向上找方差”这个需求,变成一个漂亮的矩阵运算。

协方差矩阵

摄影师需要一个“信息分布地图”,一图看清所有方向上的分散情况。这个地图就是协方差矩阵。它记录两件事:每个特征自己有多分散(方差),以及两个特征之间有没有联动关系(协方差)。

对于 d 维数据,协方差矩阵是 d×d 的方阵。它的对角线是每个特征的独立方差,非对角线是两两特征的协方差:正值表示两个特征同涨同跌,负值表示一个涨另一个跌,0 表示互不相关。公式为:

Σ=1n∑i=1n(xi−xˉ)(xi−xˉ)⊤\Sigma = \frac{1}{n}\sum_{i=1}^{n}(x_i - \bar{x})(x_i - \bar{x})^\top

1. 中心化向量:\(x_i-\bar{x}\) 是每个样本偏离整体中心的向量。

xi−xˉx_i-\bar{x}

2. 外积:偏差向量乘自己的转置,得到 d×d 矩阵,同时记录“自身方差”和“两两关系”。

(xi−xˉ)(xi−xˉ)⊤(x_i-\bar{x})(x_i-\bar{x})^\top

3. 求平均:对所有样本求和再除以 n,得到均值意义上的协方差矩阵。

1n∑i=1n(⋅)\frac{1}{n}\sum_{i=1}^{n}(\cdot)

4. 矩阵元素:Σ_ij = 第 i 个特征和第 j 个特征的协方差;Σ_ii = 第 i 个特征的方差。

Σ=(σ12σ12σ21σ22)\Sigma = \begin{pmatrix} \sigma_1^2 & \sigma_{12} \\ \sigma_{21} & \sigma_2^2 \end{pmatrix}

5. 投影方差的矩阵形式:把 Σ 代入任意方向 w,二次型正好给出该方向上的投影方差。

w⊤Σww^\top \Sigma w

6. 搜索转矩阵运算:寻找最大方差方向,等价于在 Σ 上找使二次型最大的单位向量。

max⁡∥w∥=1w⊤Σw\max_{\|w\|=1} w^\top \Sigma w

协方差矩阵就像广场上的“温度+风力+湿度”综合仪表盘——你不需要亲自走遍广场的每个角落,看仪表盘就知道哪里的变化最大。同样的,PCA 的下一个动作——特征分解,就是从这个仪表盘上读取“最佳角度”和“信息量”。

特征分解原理

摄影师拿到了协方差矩阵这张“信息分布地图”,下一步是从地图中读出真正的“黄金角度”。这时就要用到线性代数中的特征分解:把一个矩阵分解出若干“方向不变、只被缩放”的特殊向量。

对协方差矩阵 Σ,特征分解解的是方程:

Σv=λv\Sigma v = \lambda v

特征向量 v 就是“方向不变”的方向,特征值 λ 表示该方向上被放大的倍数。对于实对称矩阵(协方差矩阵天然是),特征向量两两正交,特征值均为非负,这保证了PCA找出的方向彼此独立且信息量非负。

1. 矩阵作用:某个方向向量 v 经过 Σ 变换后,方向还在原方向。

Σv\Sigma v

2. 缩放表示:结果等于 λ 倍的 v,λ 就是缩放倍数。

λv\lambda v

3. 特征方程:Σv=λv 是特征分解的核心方程,解出的 (v, λ) 就是数据背后的“主方向和主信息量”。

Σv=λv\Sigma v = \lambda v

把特征值从大到小排序:λ1 ≥ λ2 ≥ …… ≥ λd,对应的特征向量 v1, v2, ……, vd 就是我们要找的投影方向。第一个特征向量让投影方差最大,第二个次之,依此类推。这就是“主成分”的来历——主成分 = 协方差矩阵的特征向量,按特征值大小排序。

特征分解像拆礼物:矩阵把整个数据集的“差异结构”打包成一个整体,特征分解把它拆成一排名好的礼物,每一份礼物都是“一个方向 + 一份信息量”。取前面 k 份,就完成了一次有取舍的降维打包。

降维投影步骤

摄影师已经拥有所有工具,现在整理出一套标准拍摄流程。PCA 的完整步骤可以概括为六步,每一步都有明确目的,就像“选景→调光→架机→对焦→取景→按快门”。

第一步:对每个特征做标准化,目的是消除量纲影响,让身高(厘米)和体重(千克)站在同一起跑线。第二步:计算协方差矩阵 Σ。第三步:对 Σ 做特征分解,得到特征值和特征向量。第四步:按特征值从大到小排序。第五步:取前 k 个特征向量组成投影矩阵 W_k。第六步:把中心化后的数据投影到 W_k 上:

Z=XcWkZ = X_c W_k

1. 标准化数据:每个特征减去均值再除以标准差,得到零均值、单位方差的数据 X_c。

x~j=xj−μjσj\tilde{x}_j = \frac{x_j - \mu_j}{\sigma_j}

2. 特征分解排序:对协方差矩阵分解并按特征值排序,得到有序的 (λi, vi)。

λ1≥λ2≥⋯≥λd\lambda_1 \ge \lambda_2 \ge \dots \ge \lambda_d

3. 投影矩阵:把前 k 个特征向量作为列,拼成 d×k 矩阵。

Wk=[v1,v2,…,vk]W_k = [v_1, v_2, \dots, v_k]

4. 投影变换:中心化数据乘投影矩阵,得到 n×k 的降维结果。

Z=XcWkZ = X_c W_k

标准化步骤容易被忽略,但它对 PCA 至关重要。如果不标准化而特征量纲差异大(例如身高180、体重70),协方差矩阵会把几乎所有权重压到量纲大的特征上,主成分变成“只看身高”,丢失了其他信息。标准化的本质是给每个特征一张“同等投票权”的入场券。

整套流程下来,摄影师完成了从“面对一堆数字”到“交出几张精选照片”的转变。标准化、协方差、特征分解、投影,每一步都是为了让照片里的差异最大、噪音最少。

方差贡献率

降维前最后一个问题:到底保留几个主成分(k 取几)?拍的张数太少,损失细节;张数太多,又没达到压缩目的。摄影师需要一个“信息完整度”指标,告诉自己当前这组照片包含了原场景的百分之多少信息——这就是方差贡献率。

每个主成分的“信息量”就是对应的特征值。所有特征值相加,相当于原始数据在所有方向上的总方差。第 i 个主成分的贡献率 = λi / Σλ,前 k 个主成分的累计贡献率为:

ηk=∑i=1kλi∑i=1dλi\eta_k = \frac{\sum_{i=1}^{k}\lambda_i}{\sum_{i=1}^{d}\lambda_i}

1. 总信息量:分母是所有特征值之和,代表数据在所有方向上的方差总和。

∑i=1dλi\sum_{i=1}^{d}\lambda_i

2. 已保留信息:分子是前 k 个特征值之和。

∑i=1kλi\sum_{i=1}^{k}\lambda_i

3. 贡献率比值:二者相除得到累计贡献率,值越接近1,说明降维后保留的信息越完整。

ηk=∑i=1kλi∑i=1dλi\eta_k = \frac{\sum_{i=1}^{k}\lambda_i}{\sum_{i=1}^{d}\lambda_i}

实际使用中常用“累计贡献率 ≥ 80%(或85%、95%)”来确定 k 值。比如前两个主成分累计贡献率达到92%,说明降维到2维还能保住九成以上的差异,可视化时非常有底气。如果降到2维只有40%,就要考虑多留几个主成分。

方差贡献率好比照片的“清晰度评分”:90分意味着看照片能还原九成的现场差异。有了这个指标,PCA 就不再是黑箱——每保留一个方向,你都知道自己留下了多少信息、丢掉了多少噪声。

AI 应用场景

基因表达数据可视化

阶段:数据探索与降维预处理

解决的问题:基因芯片每次测量表达水平在数千维,医生无法在 2D 图表中观察样本之间的差异。传统做法是随便挑两个基因画散点图,会丢失大量信息。用 PCA 把数千基因压缩到前 2 个主成分,样本的类别(如癌症/正常)往往自动聚成两团,一目了然,就像摄影师找到了那个能把人群差异全摊开的黄金角度。

具体案例:癌症研究团队拿到 500 个肿瘤样本的表达数据(2 万个基因维度)。先用 PCA 做标准化和特征分解,取前两个主成分画散点图,发现肿瘤亚型在平面上分成了三个清晰的簇,极大帮助了亚型鉴定。

人脸识别特征压缩

阶段:特征提取

解决的问题:人脸图像 64×64 像素 = 4096 维,直接做分类计算量大且易过拟合。传统方法直接全尺寸比对,慢且对光线敏感。PCA 提取“特征脸”(特征向量构成的基图像),每张人脸用几十个系数就能重构,几十维替代四千维。这相当于摄影师找到了“最出片的一组机位”,从此所有人都在同一套基线下被记录。

具体案例:门禁系统在登记时对每张人脸图像做 PCA,只保存前 50 个主成分系数(共 50 个数)作为模板,识别时把新图像投影到相同的特征脸上,比较系数距离即可。

金融风控特征去冗余

阶段:特征工程

解决的问题:银行风控的原始特征多达数百个,其中很多强相关(月收入、年收入、资产总额本质都在描述“有钱”)。传统方法手工剔除相关特征费时且主观。PCA 把数百维压缩到 20 维,去掉冗余,降低模型过拟合风险,就像摄影师把 100 个相似姿势的废片删掉,只留下最有辨识度的几张。

具体案例:消费金融公司做信用评分模型,原始特征 120 个,PCA 后前 25 个主成分累计贡献率达 88%,用这 25 维训练逻辑回归,AUC 比直接用全部特征略升,模型训练和推理耗时下降 70%。

Python 演示

python46 行
"""从零实现PCA:找到方差最大的投影方向并降维"""import numpy as np  def pca_from_scratch(X, k=2):    # 1. 数据中心化    mean = np.mean(X, axis=0)    Xc = X - mean     # 2. 计算协方差矩阵    n = X.shape[0]    cov = np.dot(Xc.T, Xc) / n     # 3. 特征分解    eig_vals, eig_vecs = np.linalg.eigh(cov)     # 4. 按特征值从大到小排序    idx = np.argsort(eig_vals)[::-1]    eig_vals = eig_vals[idx]    eig_vecs = eig_vecs[:, idx]     # 5. 取前k个特征向量构成投影矩阵    W = eig_vecs[:, :k]     # 6. 投影到低维空间    Z = np.dot(Xc, W)     # 7. 方差贡献率    ratios = eig_vals / np.sum(eig_vals)    return Z, W, eig_vals, ratios  if __name__ == "__main__":    rng = np.random.RandomState(42)    X = rng.multivariate_normal(        mean=[0, 0, 0],        cov=[[1.0, 0.8, 0.6],             [0.8, 1.0, 0.7],             [0.6, 0.7, 1.0]],        size=200    )    Z, W, vals, ratios = pca_from_scratch(X, k=2)    print("特征值:", np.round(vals, 4))    print("方差贡献率:", np.round(ratios, 4))    print("前2个主成分累计贡献率:", round(ratios[:2].sum(), 4))    print("降维后数据形状:", Z.shape)
目的:从零实现 PCA 的完整流程,先在三维相关数据上做中心化、协方差矩阵、特征分解,再投影到前 2 个主成分并打印方差贡献率。
  1. mean = np.mean(X, axis=0)按列求均值,得到每个特征的中心,用于后续中心化。
  2. Xc = X - mean每个特征减去均值,让数据围绕原点分布,投影方差才算得准。
  3. cov = np.dot(Xc.T, Xc) / n中心化数据的转置乘自身再除以样本数,得到协方差矩阵。
  4. eig_vals, eig_vecs = np.linalg.eigh(cov)协方差矩阵是实对称矩阵,用 eigh 做特征分解最稳定。
  5. idx = np.argsort(eig_vals)[::-1]特征值默认升序,反转得到从大到小的下标排序。
  6. eig_vecs = eig_vecs[:, idx]把特征向量按信息量从大到小重新排列。
  7. W = eig_vecs[:, :k]取前 k 个特征向量作为投影方向,这就是“黄金角度”。
  8. Z = np.dot(Xc, W)中心化数据乘投影矩阵,一行代码完成降维投影。
  9. ratios = eig_vals / np.sum(eig_vals)每个特征值除以总和,得到每个主成分的方差贡献率。

常见误区

误区我拿到数据就直接调用 PCA 函数,反正库会自动处理好一切。数据量纲不同也没关系吧?身高用厘米、收入用元,差异巨大,但程序没报错。

正解PCA 对特征尺度极其敏感。比如身高(180cm)和收入(5000元),两者数量级差距很大,协方差矩阵会把主成分“掰”向数值大的特征,导致低方差的特征几乎不起作用。正确做法是先标准化(减去均值除以标准差),让每个特征站在同一条起跑线上。很多实际项目里,PCA 的结果会因是否标准化而完全不同。

为何常见:不少入门数据集特征量纲天然一致,加上部分工具库没有默认标准化,初学者很容易忽略这一步。

误区PCA 降维后保留了几个主成分,就相当于从原始数据里挑出几个最重要的特征,其余的直接丢掉。

正解主成分是原始特征的线性组合,而不是原始特征的子集。比如主成分 1 可能是“0.5×身高 + 0.6×体重 + 0.2×年龄”,是一个新的综合指标。它通常比任何单一原始特征都能更好地代表数据差异。想看单个特征的贡献,可以看特征向量中每个系数的绝对值,但主成分本身是组合变量。

为何常见:“降维”和“特征选择”(如用树模型筛选重要列)都减少了特征数量,初学者容易把二者混为一谈。

误区PCA 把高维降到 2 维,数据还能还原个八九不离十,感觉信息没丢太多。

正解只要 k < d,PCA 就一定有信息损失。损失多少由未保留的特征值决定(即被舍弃方向的方差之和)。方差贡献率就是用来量化“保留了多少信息”的指标。如果累计贡献率只有 60%,意味着 40% 的差异信息被丢弃,后续模型表现可能明显下降。

为何常见:降维后的数据看起来仍然很“像”原数据,加上可视化效果好,容易给人“无损压缩”的错觉。

误区既然 PCA 去掉了冗余和噪声,那用它降维后训练模型,准确率一定会更高。

正解PCA 的目标是保留最大的方差,不保证这些方向与分类目标相关。如果某个“小方差”的方向恰好包含判别信息(比如把所有样本的类别区分开),PCA 反而会把它丢弃,导致准确率下降。实践中需要对比降维前后的交叉验证结果,不能默认 PCA 降维一定提升精度。

为何常见:PCA 常被宣传为“去噪”利器,让人误以为去噪必然提升性能。实际上“噪声”和“与任务无关的信号”是两回事。

误区主成分是数学构造出来的,说不上它代表什么,只能当黑箱使用。

正解主成分是原始特征的加权组合,每个权重(特征向量分量)都说明该方向与各特征的关系。比如特征向量第一个分量很大,说明这个主成分主要由第一个特征驱动;符号正负还表示方向是正向还是负向相关。结合业务背景,主成分常常能被解释出明确含义(如“综合实力”、“体型大小”等),这正是 PCA 在业务分析中受欢迎的原因。

为何常见:PCA 的输出看起来是一堆抽象数字(权重、投影坐标),没有现成的“特征名”,初学者容易放弃解释。

面试题

Q1. PCA的核心优化目标是什么?

单选题 · easy

  • A.让投影后的数据方差最大← 正确答案
  • B.让投影后的数据均值最大
  • C.让投影后的数据误差最小
  • D.让投影后的数据维度最小

答案:A。PCA 的核心是寻找让投影方差最大的方向,因为方差越大代表数据差异越明显、信息保留越多。B 是均值,均值大不代表信息多;C 是最小化重构误差的思路(这更接近自编码器);D 是降维的外在表现,不是目标本身。

Q2. 在PCA之前,对数据最基本的预处理是什么?

单选题 · easy

  • A.对每个特征减去该特征的均值← 正确答案
  • B.对每个特征加上一个常数
  • C.对每个特征乘以该特征的均值
  • D.对每个特征除以一个随机数

答案:A。中心化(减去均值)是 PCA 的必要前置步骤,让每个特征的均值归零,这样协方差矩阵才能正确反映数据的离散结构。加常数不改变方差但没必要;乘均值会破坏协方差结构;除以随机数会引入无意义噪声。

Q3. 协方差矩阵对角线上存储的是什么?

单选题 · easy

  • A.各特征自身的方差数值← 正确答案
  • B.各特征与目标的相关系数
  • C.各特征之间的协方差数值
  • D.各特征之间距离的平均值

答案:A。协方差矩阵第 i 行第 i 列的元素是第 i 个特征自己的方差,衡量该特征自身的离散程度。非对角线才是特征两两之间的协方差。B 涉及目标变量,C 是非对角线,D 与协方差矩阵无关。

Q4. 为什么第一主成分要选最大特征值对应的特征向量?

单选题 · mid

  • A.该方向上的投影方差最小
  • B.该方向上的投影均值最大
  • C.该方向上的投影方差最大← 正确答案
  • D.该方向上的投影误差最小

答案:C。特征值大小直接对应投影方差大小。最大特征值对应的特征向量指向数据差异最明显的方向,沿这个方向投影能保留最多信息,所以它成为第一主成分。A 说反了;B 与均值无关;D 是重构角度而非方差角度。

Q5. 下列关于PCA的说法,正确的有哪些?

多选题 · mid

  • A.主成分之间两两相互正交← 正确答案
  • B.主成分是原始特征的线性组合← 正确答案
  • C.特征值越大方向信息越多← 正确答案
  • D.主成分是原始特征的直接选取

答案:ABC。协方差矩阵是实对称矩阵,不同特征值对应的特征向量相互正交,所以主成分两两正交(A 对);主成分是原始特征的加权求和,是线性组合(B 对);特征值就是该方向的投影方差,越大信息越多(C 对);主成分不是简单挑出几个原始特征,D 错误。

Q6. 累计方差贡献率主要用来解决什么问题?

单选题 · mid

  • A.决定是否对数据做标准化处理
  • B.决定保留多少个主成分← 正确答案
  • C.决定是否采用线性方法降维
  • D.决定协方差矩阵的估计方法

答案:B。累计方差贡献率告诉我们前 k 个主成分总共保留了原始数据多少比例的方差。实际应用中,我们通常选择使累计贡献率达到 80% 或 85% 的最小的 k,用它来决定保留几个主成分。其他三项与累计贡献率无直接关系。

Q7. 对量纲差异很大的数据直接做PCA,最可能发生什么?

单选题 · hard

  • A.数值大的特征主导主成分← 正确答案
  • B.数值小的特征主导主成分
  • C.所有特征得到完全平等的对待
  • D.协方差矩阵无法正常计算出来

答案:A。量纲大的特征(如收入成千上万)方差数值天然很大,协方差矩阵会被它“带偏”,主成分方向主要由这个特征决定,而量纲小的特征(如身高 0.5 米的小数)几乎被忽略。这不是模型出错,而是量纲差异造成的偏差,所以要先做标准化。

Q8. 关于PCA降维后的信息与效果,正确的有哪些?

多选题 · hard

  • A.降维一定会损失一部分信息← 正确答案
  • B.降维后模型准确率一定会提升
  • C.累计贡献率可以评估信息保留量← 正确答案
  • D.小方差方向可能与分类任务相关← 正确答案

答案:ACD。只要 k < d,被丢弃方向的方差就丢失了,所以一定有信息损失(A 对)。累计贡献率正是用来量化这种损失的指标(C 对)。PCA 只看方差大小,不关心类别,如果区分两类样本的关键信息恰好在小方差方向上,PCA 会把它丢掉,模型准确率可能下降(B 错、D 对)。

Q9. 关于协方差矩阵和特征分解,正确的有哪些?

多选题 · mid

  • A.协方差矩阵是实对称矩阵← 正确答案
  • B.它的特征值一定是非负的← 正确答案
  • C.不同特征值的特征向量正交← 正确答案
  • D.特征向量的方向必须完全相同

答案:ABC。协方差矩阵由外积求和得到,天然是实对称矩阵,且是半正定的,所以特征值非负(A、B 对)。实对称矩阵的一个重要性质是不同特征值对应的特征向量相互正交(C 对)。特征向量方向各不相同,D 明显错误。

Q10. 若特征值已按从大到小排序,要保留至少85%的信息,应如何选择主成分个数k?

单选题 · extreme

  • A.选取最小的k使累计贡献率达到85%以上← 正确答案
  • B.选取最大的k使累计贡献率达到85%以上
  • C.固定k等于2便于可视化展示
  • D.固定k等于d以保留全部信息

答案:A。累计贡献率随 k 增大而单调上升。要在满足“至少保留 85% 信息”的前提下尽量压缩维度,应该选最小的 k 使得前 k 个特征值占比 ≥ 85%。选最大的 k 没有压缩意义;固定 k=2 或 k=d 都没有依据“信息需求”来决策,不够严谨。