主成分分析
主成分分析(PCA)把数据投影到方差最大的方向,以减少维度。先中心化,再求协方差矩阵的特征向量。最大特征值对应第一主成分,该特征值就是沿这个单位方向保留的样本方差。
中心化后,每点都可拆成沿方向的投影和垂直残差。勾股定理使两部分平方和等于原长度平方。对全体点求和、用一致分母归一化,就得到固定预算:保留方差 + 丢弃方差 = 总方差。所以最大化保留方差,也是在最小化相同度量下的重建误差。
工作原理
十二块石头的长、宽都用厘米,原始点云在右上角。先减去均值,让点云以原点为中心,保持相对形状。否则直接对未中心化数据做二阶矩分解,均值到原点的偏移也会进入目标,方向可能更像指向均值而非沿点云延展。
取单位方向 u,每个中心化点的坐标为 z=x·u,重建投影为 zu。投影是到该直线的垂足。用样本协方差口径:
C = XᵀX / (n−1)
v(u) = uᵀCu
r(u) = Σ‖xᵢ − (xᵢ·u)u‖² / (n−1)
v(u) + r(u) = trace(C)
这里 X 已中心化,r(u) 与方差都除以 n−1。普通每点 MSE 则除以 n,不能混用。默认总方差为 14.55 cm²,换方向只改变预算的分配。
线性回归把 y 当目标,计算竖直残差;PCA 没有指定哪一列是答案,计算正交投影的距离。它不做 y 对 x 的预测。
C 的对角线是各特征方差,非对角线是协方差。最大化单位向量的 uᵀCu 是特征值问题,最大特征值的特征向量就是解。二维得到两个正交方向,特征值之和等于 trace。常用 PC1 或 u₁ 从一计数;np.linalg.eigh 按特征值升序返回,不重新排序时同一个方向是最后一列 vecs[:,-1]。
逐步演示
默认十二点,试探角度 θ=0°。这表示只保留第一坐标,恰好是直接丢一列的做法。
- 原数据。 均值在
(6,5),原点附近没有点云主体。 - 中心化。 各行减
(6,5)。原本正好在均值的一点落到原点,此后各主成分坐标都为零。 - 水平投影。 垂足落在横轴,保留方差
9.27 cm²。 - 固定预算。 点
(11,9)变成(5,4),投影坐标 5,垂直残差 4,‖x‖²=25+16=41。旋转会改变两直角边,不改变斜边。对十二点求和并除以 11,保留约9.27、残留约5.27,总计约14.55 cm²。各显示值独立舍入,9.27+5.27 的显示和可能与 14.55 差 0.01。 - 每 20° 扫描。 九个方向记录保留比例:20° 为
88.25%,40° 为94.86%,60° 为80.47%,80° 为51.83%,120° 为5.78%,160° 回到32.81%。180° 后是同一条投影直线。120° 是采样中的低点,不是精确垂直主方向。 - 协方差。
C≈[[9.27,6.27],[6.27,5.27]]。第一对角项就是 0° 的方差。 - 连续曲线。
v(θ)=trace(C)/2+a cos(2(θ−θ₁)),其中a=(λ₁−λ₂)/2。九个样本在这条曲线上,矩阵也包含未采到的所有角度。 - 特征分解。 最优
θ₁=36.16°,λ₁≈13.86,占95.26%,余下λ₂≈0.69。扫描的 40° 比最优少约 0.4 个百分点;最优来自分解,不是离散试角。 - 换坐标。 画面旋转
−36.16°,让第一主方向水平。点间距离不变,各点改用(z₁,z₂)表示。 - 降维。 把 z₂ 设零,只保存 z₁,每点从两个数变一个,保留
95.26%方差。均值点本来就是零,不移动。 - 重建。
x̂=z₁u₁+mean,全部重建点落在一条线上,误差对应丢掉的坐标。样本归一化残差尺度√λ₂≈0.83 cm;每点 RMSE 是√((n−1)λ₂/n),略小,不能把二者称作同一数。 - 比较。 直接丢第二列,样本残差尺度约
2.30 cm;丢第二主成分约0.83 cm,比值约 2.8。每点都保存一个数,但 PCA 选择了方向。还需共享保存均值与主方向,不能忽略模型元数据成本。
PCA 的用途与训练边界
压缩以重建误差换每行更少坐标;可视化把多维投到二维;去相关让样本主坐标的协方差为对角;去噪只有在信号主要位于保留方向、噪声主要位于丢弃方向时成立。去相关不等于统计独立。
均值、标准差和主成分都从数据估计。只在训练折拟合 StandardScaler 和 PCA,再应用到验证/测试折。先用全数据拟合再拆分会泄漏评价信息。保留的 k 也是待验证的选择。
单位如何改变解释方差
将宽从厘米改为毫米,第二列乘 10,石头没变,坐标尺度变了。PC1 从 36.16° 转到 83.19°,解释方差升到 99.67%,几乎只保留数值放大的宽。更高比例不证明表示更适合原任务。
逐列缩放到单位方差后,协方差矩阵成为相关矩阵。对本例的正比例单位变化,结果恒为标准化坐标中的 45.00°、94.85%。这说明消除了该单位选择的影响,不是保证标准化对每个任务都正确;若各轴物理尺度本身有意义,是否缩放应据此决定。常数列也需单独处理。
大方差不一定是类别信息
另一预设的十二点来自两类,沿同一宽方向延展并略有偏移。PC1 占 86.91%,投影后的两类却完全交错;PC2 只占 13.09%,反而能分开。标准化后 PC1 为 83.23%,仍混合。
PCA 不读标签,所以不优化分类分离。保留更多主成分、改变任务目标,或采用利用标签的方法是不同选择。线性判别分析比较类间与类内离散程度,回答的是另一个问题,不能把它当作同一目标的修补。
时间与空间复杂度
n 点、d 特征形成 C 为 O(nd²),对 d×d 对称矩阵分解为 O(d³),投影到 k 维为 O(ndk)。矩阵占 O(d²),数据占 O(nd)。
直接对中心化 X 做 SVD 能得到相同主方向,并避免构造 C 时把条件数平方。是否更快取决于矩阵形状、求解器和保留秩,不能只用“高维所以 SVD”判断。二维良态例中,两方法在显示精度内一致。
边界情况
- 均值点中心化为零,降维后重建仍是均值。
λ₁=λ₂时各方向方差相同,主方向不唯一,任意正交基都有效。此条件也不要求点云外形真的完美圆形。λ₂=0且总方差为正时,点共线,保留一维可无损重建;若全点相同,总方差为零,解释比例本身无定义。- 主成分正负任意,
u₁与−u₁保留相同方差。符号改变需同时改变坐标,不要赋予任意箭头方向额外含义。画面将角度固定到[0°,180°)。 - 中心化后秩最多
min(d,n−1),超过非零秩的方向不提供额外样本方差。数值误差可能显示极小非零值。
常见错误
- 把方差当距离。
0.69是平方厘米;开方才是相应尺度,且须说明 n 与 n−1 的归一化。 - 忘记中心化。直接分解未中心化矩阵会把均值偏移纳入目标;常见 PCA 会中心化,其他分解未必。
- 不检查不同单位。大数值列可能支配方向,缩放应符合任务。
- 将高解释方差当作高质量。它只衡量当前度量下方差集中程度。
- 期待主成分有现成语义。它是为几何目标选出的原特征线性组合,不保证可命名或可解释。
- 以为丢弃低方差就不丢类别信息。分类信息可能恰在尾部。
简化范围
二维是降到一维的最小非平凡例子。更多维度时可用碎石图、累计方差及下游验证选 k,但比例不是任务质量的替代。本课用 2×2 协方差矩阵的闭式解展示两方差和一个协方差;未展示白化、核 PCA、增量与随机化算法。白化会再按各主成分标准差缩放,与仅旋转降维不同。