查看全课大纲(第 4 / 82 节)
  1. 1.函数与数据泛化
  2. 2.向量:从几何直觉到高维空间
  3. 3.矩阵与张量
  4. 4.特征值与特征向量:矩阵变换的不动方向
  5. 5.凸函数:从向量求导的矩阵记号到好优化的函数形状
  6. 6.概率与统计:机器学习的数学基础
  7. 7.独立性与随机变量:贝叶斯公式与二项分布
  8. 8.期望、方差与协方差:随机变量的数字画像
  9. 9.联合概率:当一条轴不够用的时候
  10. 10.概率分布(一):从伯努利到伽马函数
  11. 11.概率分布(二):贝塔、泊松、正态与两个贝叶斯故事
  12. 12.机器学习的模型:找输入与输出的关系
  13. 13.机器学习的应用
  14. 14.过拟合
  15. 15.机器学习的分类
  16. 16.有监督学习:从房价预测说起
  17. 17.损失函数
  18. 18.梯度下降(上):更新规则与学习速率
  19. 19.梯度下降(2)
  20. 20.牛顿方法
  21. 21.KNN简介
  22. 22.距离测算
  23. 23.朴素贝叶斯
  24. 24.朴素贝叶斯的实际应用
  25. 25.信息熵:决策树构建的度量基础
  26. 26.信息增益与决策树的构建
  27. 27.ID3算法
  28. 28.决策树节点的划分
  29. 29.CART树
  30. 30.Bagging
  31. 31.Boosting:自适应提升算法
  32. 32.Gradient Boosting
  33. 33.线性模型:回归与分类的同一副骨架
  34. 34.最小二乘:把最优参数直接解出来
  35. 35.最小二乘法的几何与概率视角
  36. 36.极大似然:给最小二乘一个概率出身
  37. 37.逻辑回归(1):把线性模型接到分类上
  38. 38.逻辑回归(2):损失函数与多分类
  39. 39.---- 手造数据: 5 个样本, 2 个特征; x2 几乎 = 2*x1 (偏差手工指定, 无随机) ----
  40. 40.讲师例: 向量 "23014" -- 三把范数尺子量同一个向量
  41. 41.优化方法(1):坐标下降与前向选择
  42. 42.优化方法(2):前向策略与最小角回归
  43. 43.拉格朗日乘子法(1):从无约束到等式约束
  44. 44.拉格朗日乘子法(2):等式约束下的平行条件与拉格朗日函数
  45. 45.拉格朗日乘子法(3):不等式约束与 KKT 条件
  46. 46.最大间隔:把分类问题变成优化问题
  47. 47.拉格朗日对偶问题:把 w 和 b 全部换成 α
  48. 48.支持向量:边界上的少数派
  49. 49.SVM 计算过程:一笔到底算完,再走进核方法
  50. 50.贝叶斯公式:概率即信念
  51. 51.隐含变量和概率模型:给看不见的原因建模
  52. 52.EM 算法:期望与最大化的迭代
  53. 53.琴生不等式:EM 的数学钥匙
  54. 54.三个硬币问题:EM 的复盘与衔接
  55. 55.高斯混合模型:用隐变量解释双峰数据
  56. 56.隐马尔可夫模型
  57. 57.隐马尔可夫模型(2):前向算法与动态混合模型
  58. 58.隐马尔可夫模型在 NLP 中的运用
  59. 59.EM 算法:把「为什么收敛」推到底
  60. 60.HMM 在 NLP 中的运用:从分词到机器翻译
  61. 61.HMM 参数估计:Baum-Welch 的三块拉格朗日
  62. 62.高维下的高斯模型
  63. 63.主题模型:从词袋到隐含主题
  64. 64.Dirichlet 分布(1)
  65. 65.Dirichlet 分布(2)
  66. 66.统计学习内容回顾
  67. 67.K-means 算法
  68. 68.PCA 降维
  69. 69.SVD 降维
  70. 70.从聚类到流形
  71. 71.局部线性嵌入
  72. 72.随机邻域嵌入:SNE 与 t-SNE
  73. 73.无参模型:让数据自己说话
  74. 74.高斯过程:函数空间里的正态分布
  75. 75.高斯过程(2):噪声、正则化与核的线性组合
  76. 76.神经网络简介:从感知器到自编码器
  77. 77.反向传播:把误差一层层传回去
  78. 78.卷积神经网络(CNN):让特征自己学出来
  79. 79.循环神经网络(RNN):给网络装上记忆
  80. 80.深度学习回顾:静态一类,动态一类
  81. 81.增强学习(1):蒙特卡洛、树搜索与 Q-learning
  82. 82.强化学习(2):从乌鸦吃核桃到井字棋的 value 回传

特征值与特征向量:矩阵变换的不动方向

约 15 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

小象实战讲义 · 机器学习算法精讲

本节回到矩阵本身,看它的两件”镇家之宝”:行列式与特征值、特征向量。行列式的值不只是计算口诀,它有清晰的几何含义;特征值与特征向量则揭示了矩阵作为线性变换时那些”方向不变”的秘密轴。视频末尾讲师还用一分多钟预告了 SVD(奇异值分解)——本节顺带认识它的样子,正式展开留到第 16 章降维时。

💡 核心导读

  • 行列式的几何意义:方阵的行列式绝对值,等于其列向量张成的”有向面积/体积”(二维是平行四边形面积,三维是平行六面体体积)。
  • 矩阵即变换:左乘一个矩阵,就是把空间中的向量做一次线性变换,矩阵的列就是标准基向量被”搬”到的新位置。
  • 特征值与特征向量:变换后方向不变、只被拉伸或压缩的向量是特征向量,缩放倍数就是特征值;连乘矩阵时,它们决定结果是发散还是收敛。
  • SVD 初见:任何实矩阵都能分解为”正交 × 对角 × 正交”三个矩阵的乘积——第 16 章降维的主角提前亮相。

行列式的几何直观

先复习计算:对于 2×22 \times 2 矩阵

A=[abcd],det⁡(A)=ad−bcA = \begin{bmatrix} a & b \\ c & d \end{bmatrix}, \qquad \det(A) = ad - bc

这个式子不只是定义,它有非常清晰的几何含义。讲师在课上现场算了一遍:以矩阵的两个列向量为邻边,可以在平面上张成一个平行四边形,用”大矩形面积减去四周三角形”的拼图法化简,结果恰好就是 ad−bcad - bc。

用代码复现这个验证(列向量 v1=(3,1)v_1 = (3,1)、v2=(1,2)v_2 = (1,2) 张成的平行四边形,其面积本应等于 det⁡\det):

# 验证:det(A) 的绝对值 = 列向量张成的平行四边形面积
A = [[3, 1],
     [1, 2]]

det_A = A[0][0] * A[1][1] - A[0][1] * A[1][0]  # ad - bc
print(f"矩阵 A = {A}")
print(f"行列式 det(A) = {det_A}")

# 列向量 v1 = (3, 1), v2 = (1, 2)
v1 = (A[0][0], A[1][0])
v2 = (A[0][1], A[1][1])
# 二维叉积 (x1,y1)x(x2,y2) = x1*y2 - y1*x2,其绝对值即张成面积
cross_product = v1[0] * v2[1] - v1[1] * v2[0]
area = abs(cross_product)
print(f"列向量张成的平行四边形面积 = {area}")
print(f"两者是否相等? {abs(det_A - area) < 1e-10}")
矩阵 A = [[3, 1], [1, 2]]
行列式 det(A) = 5
列向量张成的平行四边形面积 = 5
两者是否相等? True

推广到三维:3×33 \times 3 矩阵的行列式代表三个列向量张成的平行六面体的体积——每多一个维度,就多”乘上一层”。这也顺便解释了行列式为零意味着什么:列向量张成的体积塌成了零,说明它们线性相关,矩阵不可逆。

矩阵作为线性变换

理解特征值的关键前提,是把矩阵看成对整个空间施加的一次线性变换。

给定矩阵 AA 和向量 v\mathbf{v},乘积 AvA\mathbf{v} 把 v\mathbf{v} 从空间中一点搬到另一点。讲师在课上用一个可交互的演示展示了这件事(setosa.io 的 eigenvectors and eigenvalues 页面,课件里附了链接):调整矩阵 AA 的两个列向量,整个坐标网格随之被拉伸、倾斜——而 AA 的每一列,正是原标准基向量 e1=(1,0)T\mathbf{e}_1=(1,0)^T、e2=(0,1)T\mathbf{e}_2=(0,1)^T 被变换后到达的新位置。矩阵没做别的,就是给空间做了一次线性变换。

特征值与特征向量:变换中的”不动方向”

在这个变换里,有没有一些特殊的向量,方向始终不变、只被拉伸或压缩?有——它们就是特征向量(eigenvector),缩放的倍数就是特征值(eigenvalue)。数学定义:对 n×nn \times n 方阵 AA,若存在非零向量 v\mathbf{v} 与标量 λ\lambda 使

Av=λvA\mathbf{v} = \lambda \mathbf{v}

则 λ\lambda 是特征值,v\mathbf{v} 是对应的特征向量。几何上:AA 作用在特征向量上,等价于在原方向上放大 λ\lambda 倍(λ>1\lambda>1 拉长、0<λ<10<\lambda<1 缩短、λ<0\lambda<0 反向);向量到原点的距离,变换前后正好放大 λ\lambda 倍。2×22\times 2 矩阵一般有两个特征方向 S1S_1、S2S_2 和对应的两个特征值——特征向量可以认为是”矩阵最有代表性的东西”,它指明了这个变换”偏爱”的方向。

讲师在演示里还展示了两个值得记住的现象:

  • 连乘的走向:把矩阵 AA 反复作用于向量,若向量落在较大特征值的方向上,结果会越乘越大、冲向无穷;落在较小特征值方向上则越乘越小,最终收缩到另一个特征方向上去。矩阵的长期行为,由它的特征值决定。
  • 迹(trace):方阵对角线元素之和 tr(A)\mathrm{tr}(A),有时也用来刻画矩阵,是个常用的伴随量。

怎么求? 由 Av=λvA\mathbf{v} = \lambda\mathbf{v} 移项得 (A−λI)v=0(A - \lambda I)\mathbf{v} = \mathbf{0},要使非零 v\mathbf{v} 存在,必须 det⁡(A−λI)=0\det(A - \lambda I) = 0——这就是特征方程,解这个关于 λ\lambda 的多项式即得特征值,再回代解出特征向量。(这是标准线性代数方法,站内《人工智能数学基础》有系统展开;本课直接用它。)用一个最小例子跑通全流程:

# 手工求解 2x2 矩阵的特征值与特征向量(A = [[2,1],[1,2]])
A = [[2, 1],
     [1, 2]]

# 特征方程 det(A - λI) = (2-λ)^2 - 1 = λ^2 - 4λ + 3 = 0
# 由求根公式 λ = [4 ± sqrt(16-12)] / 2 = [4 ± 2] / 2
lambda1 = (4 + 2) / 2  # 3
lambda2 = (4 - 2) / 2  # 1
print(f"矩阵 A = {A}")
print(f"特征值 λ1 = {lambda1}, λ2 = {lambda2}")

# 回代求特征向量:λ1=3 时 (A-3I)v=0 → -x+y=0 → v1=(1,1)
#               λ2=1 时 (A-I)v=0 →  x+y=0 → v2=(1,-1)
v1 = [1, 1]
v2 = [1, -1]

for lam, v in [(lambda1, v1), (lambda2, v2)]:
    Av = [A[0][0] * v[0] + A[0][1] * v[1], A[1][0] * v[0] + A[1][1] * v[1]]
    lv = [lam * v[0], lam * v[1]]
    ok = all(abs(a - b) < 1e-10 for a, b in zip(Av, lv))
    print(f"λ={lam}: v={v}, Av={Av}, λv={lv}, Av=λv? {ok}")
矩阵 A = [[2, 1], [1, 2]]
特征值 λ1 = 3.0, λ2 = 1.0
λ=3.0: v=[1, 1], Av=[3, 3], λv=[3.0, 3.0], Av=λv? True
λ=1.0: v=[1, -1], Av=[1, -1], λv=[1.0, -1.0], Av=λv? True

两个特征方向 (1,1)(1,1) 与 (1,−1)(1,-1) 上,矩阵确实只做了”放大 3 倍 / 保持 1 倍”的操作。

SVD 初见:任何矩阵都能”正交-对角-正交”三分

视频的最后,讲师用一分多钟预告了奇异值分解(Singular Value Decomposition, SVD):特征值分解只对方阵成立,而对一般的 m×nm \times n 实矩阵 AA,SVD 断言它总能分解成三个矩阵的乘积

A=UΣVTA = U \Sigma V^T

其中 UU、VV 是正交矩阵,Σ\Sigma 是对角矩阵——对角线上的元素叫奇异值。实际使用时,在 R 或 MATLAB 里输入 svd(A) 一行就能得到分解结果。

为什么”任何矩阵都能这样拆”、奇异值又有什么用?讲师留了个钩子:讲主题模型之前会细讲。对应到本课程,SVD 的正式舞台在第 16 章——PCA 降维、SVD 降维都在那里展开。现在只需要记住它的形状:正交 × 对角 × 正交。

📝 动手练一练

  1. 概念辨析:一个 3×33 \times 3 矩阵 AA 的行列式 det⁡(A)=0\det(A)=0,从几何角度和特征值角度分别意味着什么?
👉 点击查看参考答案

几何角度:三个列向量张成的平行六面体体积为零——它们共面甚至共线,整个三维空间被这个变换”压扁”到低维子空间上,变换不可逆。

特征值角度:特征方程 det⁡(A−λI)=0\det(A-\lambda I)=0 的常数项恰是 det⁡(A)\det(A);det⁡(A)=0\det(A)=0 意味着 λ=0\lambda=0 必是特征方程的根——存在非零向量 v\mathbf{v} 使 Av=0⋅v=0A\mathbf{v} = 0\cdot\mathbf{v} = \mathbf{0},即某个方向被整个压到原点,同样说明了不可逆。

  1. 动手验证:对 A=[4213]A = \begin{bmatrix} 4 & 2 \\ 1 & 3 \end{bmatrix},求特征值,并验证 v=(2,−1)\mathbf{v} = (2, -1) 是否为特征向量。
👉 点击查看参考答案

特征方程 (4−λ)(3−λ)−2=λ2−7λ+10=0(4-\lambda)(3-\lambda) - 2 = \lambda^2 - 7\lambda + 10 = 0,解得 λ1=5\lambda_1 = 5、λ2=2\lambda_2 = 2。

验证:Av=(4×2+2×(−1), 1×2+3×(−1))=(6,−1)A\mathbf{v} = (4\times2 + 2\times(-1),\ 1\times2 + 3\times(-1)) = (6, -1)。若 v\mathbf{v} 是特征向量,需 (6,−1)=λ(2,−1)(6,-1) = \lambda(2,-1):第一个分量要求 λ=3\lambda = 3,第二个分量要求 λ=1\lambda = 1,矛盾——所以 (2,−1)(2,-1) 不是 AA 的特征向量(顺带一提,AA 的两个特征方向分别在 λ=5\lambda=5 与 λ=2\lambda=2 对应的解空间里)。

本章小结

  • 行列式是几何量:∣det⁡(A)∣|\det(A)| = 列向量张成的面积/体积;行列式为零 = 空间被压扁 = 矩阵不可逆。
  • 矩阵即线性变换:左乘矩阵就是把空间做一次变换,矩阵的列是基向量变换后的落点。
  • 特征向量是变换中方向不变的轴,特征值是沿该轴的缩放倍数;矩阵连乘时”越乘越大还是越乘越小”由特征值决定;迹 tr(A)\mathrm{tr}(A)(对角线之和)是常用伴随量。
  • SVD 把任意矩阵拆成”正交 × 对角 × 正交”,第 16 章降维时正式展开。

📋 行动清单

  • 打开课件里 setosa.io 的特征向量互动页,拖动矩阵的列向量,观察特征方向如何随矩阵变化
  • 任取一个 2×22\times2 矩阵,纸上走一遍完整流程:写特征方程 → 解 λ\lambda → 回代解 v\mathbf{v} → 用 Av=λvA\mathbf{v}=\lambda\mathbf{v} 验证
  • 预习下一节:Jacobian、Hessian 与凸函数——导数工具如何升级到多元与矩阵世界

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第1章课件:机器学习的数学基础 I
    下载
  • 第1章笔记:机器学习导论
    下载
  • 第1章笔记:行列式的几何解释
    下载
  • 第1章笔记:Lp 范数
    下载