11.1 主成分分析¶
小率把一份班级生活调查带来找均哥。每个同学都有十几列指标:睡眠时长、运动分钟、阅读时间、手机使用时长、零花钱、通勤时间……小率想画图,却发现纸面上根本放不下这么多轴。
| 同学 | 睡眠 | 运动 | 阅读 | 手机 | 零花钱 | ... |
|---|---|---|---|---|---|---|
| A | 7.5 | 35 | 40 | 120 | 30 | ... |
| B | 6.0 | 10 | 15 | 210 | 50 | ... |
| C | 8.0 | 55 | 60 | 80 | 25 | ... |
| ... | ... | ... | ... | ... | ... | ... |
这么多指标,我连散点图都画不出来。
那就先问:有没有几条“主线”,能概括大部分差异?这就是 PCA。
11.1.1 多列指标压成几条主线¶
主成分分析(Principal Component Analysis, PCA)做的事很朴素:把许多相关变量,重新组合成几条彼此垂直的新轴。第一条新轴叫 PC1,它让数据投影后的方差最大;第二条新轴叫 PC2,它和 PC1 垂直,并解释剩下方差中最多的一部分。
所以 PCA 不是删列,而是换一个角度看同一批数据?
对。它先旋转坐标轴,再只保留最能解释差异的前几根轴。
11.1.2 方差最大的方向最先留下¶
设数据矩阵 \(X\) 已经中心化,\(n\) 行是观察对象,\(p\) 列是变量。协方差矩阵为:
\[
S=\frac{1}{n-1}X^\top X
\]
PCA 要找单位向量 \(w\),让投影 \(Xw\) 的方差最大:
\[
\operatorname{Var}(Xw)=w^\top S w
\]
结果是:\(w\) 就是协方差矩阵 \(S\) 最大特征值对应的特征向量。特征向量给方向,特征值给这条方向上的方差。
一句话
PCA 的数学核心是:对协方差矩阵做特征分解,按特征值从大到小选前几条轴。
11.1.3 选几个主成分¶
每个主成分解释的方差比例是:
\[
\text{解释比例}_j=\frac{\lambda_j}{\lambda_1+\lambda_2+\cdots+\lambda_p}
\]
累计解释比例则是:
\[
\text{累计比例}_k=\frac{\lambda_1+\cdots+\lambda_k}{\lambda_1+\cdots+\lambda_p}
\]
常用判断:
- 累计解释比例达到 80%、90% 或 95%。
- 碎石图出现明显“肘部”。
- 保留下来的主成分还能讲出清楚含义。
需要注意
PCA 默认“方差大就是信息多”。这在图像压缩、综合指标里常常有效,但在分类任务里不一定成立,因为区分类别的方向可能方差并不大。
11.1.4 标准化不是可选项¶
如果变量量纲不同,必须先标准化。否则“月消费金额”这种数值范围很大的变量,会压过“运动分钟”“阅读时间”等变量。
如果我忘了标准化,PC1 可能只是“谁花钱多”?
很可能。PCA 前先看量纲,这是救命动作。
11.1.5 用 Python 做 PCA¶
完整脚本放在:
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
iris = load_iris()
X = StandardScaler().fit_transform(iris.data)
pca = PCA(n_components=2, random_state=0)
Z = pca.fit_transform(X)
print("二维坐标形状:", Z.shape)
print("方差解释比例:", pca.explained_variance_ratio_.round(3))
print("累计解释比例:", pca.explained_variance_ratio_.sum().round(3))
print("载荷矩阵:", pca.components_.round(3))
读输出
explained_variance_ratio_ 告诉你每条主成分解释了多少差异;components_ 是载荷,可以用来判断 PC1、PC2 主要由哪些原变量组成。
11.1.6 PCA 适合和不适合什么¶
适合:
- 高维数据可视化。
- 去掉冗余变量。
- 图像压缩、指标合成。
- 作为聚类或回归前的降维步骤。
不适合:
- 强非线性结构。
- 离群点很多的数据。
- 需要直接解释原变量含义的报告。
- 直接做因果解释。
小率的笔记本
PCA 把很多变量旋转成几条主成分。PC1 是方差最大的方向,PC2 与 PC1 垂直并解释剩余方差。做 PCA 前通常要标准化;选几个主成分要看累计解释比例、碎石图和可解释性。

