在大屏或电脑上体验更佳——动画和操作区域更宽敞。
输入

主成分分析

主成分分析(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°。这表示只保留第一坐标,恰好是直接丢一列的做法。

  1. 原数据。 均值在 (6,5),原点附近没有点云主体。
  2. 中心化。 各行减 (6,5)。原本正好在均值的一点落到原点,此后各主成分坐标都为零。
  3. 水平投影。 垂足落在横轴,保留方差 9.27 cm²。
  4. 固定预算。 点 (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。
  5. 每 20° 扫描。 九个方向记录保留比例:20° 为 88.25%,40° 为 94.86%,60° 为 80.47%,80° 为 51.83%,120° 为 5.78%,160° 回到 32.81%。180° 后是同一条投影直线。120° 是采样中的低点,不是精确垂直主方向。
  6. 协方差。 C≈[[9.27,6.27],[6.27,5.27]]。第一对角项就是 0° 的方差。
  7. 连续曲线。 v(θ)=trace(C)/2+a cos(2(θ−θ₁)),其中 a=(λ₁−λ₂)/2。九个样本在这条曲线上,矩阵也包含未采到的所有角度。
  8. 特征分解。 最优 θ₁=36.16°,λ₁≈13.86,占 95.26%,余下 λ₂≈0.69。扫描的 40° 比最优少约 0.4 个百分点;最优来自分解,不是离散试角。
  9. 换坐标。 画面旋转 −36.16°,让第一主方向水平。点间距离不变,各点改用 (z₁,z₂) 表示。
  10. 降维。 把 z₂ 设零,只保存 z₁,每点从两个数变一个,保留 95.26% 方差。均值点本来就是零,不移动。
  11. 重建。 x̂=z₁u₁+mean,全部重建点落在一条线上,误差对应丢掉的坐标。样本归一化残差尺度 √λ₂≈0.83 cm;每点 RMSE 是 √((n−1)λ₂/n),略小,不能把二者称作同一数。
  12. 比较。 直接丢第二列,样本残差尺度约 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、增量与随机化算法。白化会再按各主成分标准差缩放,与仅旋转降维不同。