第 3 步 · 不转向的那几根轴
特征值、特征向量与谱分解Eigenvalues & Spectral Decomposition
矩阵把空间揉搓变形,绝大多数方向都被既拉又扭;只有极少数方向只被拉伸、不被偏转 —— 它们是这个变换的灵魂主轴。找到它们,就找到了协方差矩阵的主成分、图拉普拉斯的连通性,以及深层网络梯度爆炸与消失的谱半径。
20 分钟
阅读 + 实操
3 个
交互演示
进阶
难度
特征值与主轴 · 交互演示
第一特征值 λ₁3.00
第二特征值 λ₂1.00
二次型定性正定
① 特征向量寻宝探针:旋转青色探针 v,当紫色 Av 与 v 落在同一条直线上时,这个方向就是特征方向
探针角 θ 30°
v 与 Av 夹角 0.0°
|Av| 拉伸倍数 1.00
② 单位圆变椭圆:调节对称矩阵的三个元素,椭圆的两条主轴恰好是两组互相垂直的特征向量
③ 点云协方差与实时 PCA:在画布上点击加点、拖动改点,系统实时算出协方差矩阵与两条主成分轴
点数 n 0
第一主轴方差 λ₁ 0.00
解释方差比 0%
为什么学这步?
机器学习里的高维数据几乎从不均匀地铺满整个空间:它们挤在少数方向上。协方差矩阵的特征向量告诉我们「数据往哪儿散得最开」,特征值告诉我们「散得有多开」—— 这就是降维、去噪、白化的全部依据。而在深度网络里,一层层雅可比矩阵相乘的放大倍数由谱半径决定:大于 1 就爆炸,小于 1 就消失。
📌 发生了什么
- 特征方向只被拉伸不被偏转,拉伸倍数就是特征值
- 对称矩阵的特征向量互相垂直,可以拼成一组正交坐标轴
- 协方差矩阵的特征值 = 该方向的方差,特征向量 = 主成分方向
⚠️ 常见陷阱
- 特征值只对方阵有定义,而且并非所有方阵都有实的特征方向(纯旋转就没有)
- 把「特征值」和「特征向量」记混:前者是放大倍数(一个数),后者是方向(一个向量)
- 只有对称矩阵才保证特征向量两两正交;一般方阵的特征向量可能并不垂直
✅ 本章小结
- Av = λv:方向不变、长度乘以 λ,解 det(A − λI) = 0 得到 λ
- 对称矩阵可正交对角化 A = QΛQᵀ,二次型 xᵀAx 的正负由 λ 的符号决定
- 幂迭代反复施加 A 就能逼近最大特征值方向,收敛速度由 |λ₂/λ₁| 决定
📐 为什么对称矩阵的特征向量一定互相垂直?
设 u 与 w 是对称矩阵 A 的两个特征向量,分别属于不同的特征值 λ₁ 与 λ₂。分别用对方做内积,并利用 A 的对称性 u·(Aw) = (Au)·w:
移项得到 (λ₁ − λ₂)(u·w) = 0。既然 λ₁ ≠ λ₂,就只能有 u·w = 0,也就是两个特征向量严格垂直。把这两条互相垂直的单位向量摆成矩阵 Q 的两列,就得到正交谱分解 A = QΛQᵀ —— 几何上等于「转到一个不相关的坐标系 → 沿各轴独立缩放 → 转回来」,这正是 PCA 白化与图像压缩的做法。
📊 特征值就是方差:协方差矩阵的几何
把一列数据点先减去均值(中心化),再算协方差矩阵 C = (1/n)Σ(xᵢ−μ)(xᵢ−μ)ᵀ。它是对称半正定的,所以特征值恒为非负数,可以读成「方差」:
单位向量 u 上的投影方差等于二次型 uᵀCu,而它的最大值正好落在最大特征值的特征向量上 —— 这就是「第一主成分」的定义。把特征值按从大到小排列,λ₁/(λ₁+λ₂) 就是第一主轴的解释方差比:它接近 1 说明数据其实是一维的,压到一条线上也不损失多少信息。
💻 对称特征分解与幂迭代核心
// 对称 2x2 的闭式特征分解:先对称化,再用旋转角公式
function eigenSymmetric2(M) {
var a = M.a, b = (M.b + M.c) / 2, d = M.d;
var tr = a + d, diff = a - d;
var rad = Math.sqrt(diff * diff + 4 * b * b);
var l1 = (tr + rad) / 2, l2 = (tr - rad) / 2; // l1 >= l2
var v1 = normalize([b, l1 - a]); // 属于 l1 的单位特征向量
return { values: [l1, l2], vectors: [v1, [-v1[1], v1[0]]] };
}
// 幂迭代:反复施加 A 并归一化,逼近最大特征值方向
function powerIter(A, steps) {
var v = [1, 0.37]; // 随便挑一个非零起点
for (var k = 0; k < steps; k++) {
var w = [A.a * v[0] + A.b * v[1], A.c * v[0] + A.d * v[1]];
var n = Math.hypot(w[0], w[1]);
if (n < 1e-14) break; // 零矩阵:任何方向都是特征方向
v = [w[0] / n, w[1] / n];
}
var Av = [A.a * v[0] + A.b * v[1], A.c * v[0] + A.d * v[1]];
return { vector: v, value: v[0] * Av[0] + v[1] * Av[1] }; // 瑞利商
}
📚 参考文献与延伸阅读
- Strang, Introduction to Linear Algebra, Ch. 6 「Eigenvalues and Eigenvectors」 — 特征值、对角化与对称矩阵谱定理的经典讲法
- Hastie, Tibshirani & Friedman (2009), The Elements of Statistical Learning, §14.5 「Principal Components Analysis」 — 从协方差矩阵特征分解到解释方差比的完整推导
- Golub & Van Loan, Matrix Computations, Ch. 7-8 — 幂迭代、QR 迭代与对称特征问题的数值算法
- 对照阅读 → ML 第 11 步 · PCA 降维:本章主轴的实际应用;数学第 14 步 · 散度与源汇:图拉普拉斯的特征值为什么能决定图的连通性
📝 课后练习
检验你的理解——答对为止