/knowledge/linear-algebra
线性代数
每个模型之下的语法。数据是向量,变换是矩阵——一旦你这样看待它,机器学习就不再是魔法,而成为几何。
- 学于
- 线性代数理学学士 · 数据科学核心
- 时间
- 墨尔本大学,2019–2022
- 应用于
- PCA · 嵌入 · 回归
- 阅读 / 复习
- 约 15 分钟阅读2026-06-24
数据科学中几乎一切的底层,都是线性代数。一个数据集是一个矩阵。一行是一个向量。 训练一个线性模型就是解一个方程组。NLP 页中的词嵌入是一些向量,它们的夹角编码了含义。PCA、推荐引擎、 Transformer 中的注意力机制——这一切都构建于对向量和矩阵的一小组运算之上。
这是我会在接触任何机器学习之前,递给过去的自己的那张基础页。目标不是摆弄符号; 而是建立那种让其余一切豁然开朗的几何直觉——把向量看作箭头、把矩阵看作变换, 以及那几个悄然驱动着现代数据科学的分解。
01
为何它是数据的语言
把任意数据集整理成一张表——行是样本,列是特征——你就有了一个矩阵。 一行(一位客户、一份文档、一张被展平的图像)是一个向量:一个有序的 数字列表,等价地是空间中的一个点或一支箭头。一个有 1000 个样本、20 个特征的 数据集,是一个 1000×20 的矩阵;每个样本作为 20 维空间中的一个点而存在。
这种重新表述就是全部的收益。「找到相似的客户」变成「找到邻近的点」。「把 20 个 特征降到 2 个」变成「投影到一个平面上」。「拟合一个线性模型」变成「解一个方程组」。 线性代数不过是测量、移动并简化空间中点的工具箱——而数据就是空间中的点。
02
向量与向量空间
一个向量是一个有序的数字列表,写成一列。几何上它是从原点指向某个点的 一支箭头。你可以对向量做两件事,其余一切都由它们构建:
- 相加——首尾相接(
[1,2] + [3,1] = [4,3])。 - 缩放——乘以一个数(一个标量)——拉伸或翻转 (
2·[1,2] = [2,4])。
把这两者结合——缩放若干向量再把结果相加——你就得到一个线性组合。 某些向量的所有线性组合的集合,就是它们的张成空间。一组基是张成空间为整个空间的极小向量集;它们的数量就是维数。我们熟悉的三维 空间以 x, y, z 为基——三个独立的方向,每个点都是它们的唯一组合。
03
点积、范数与投影
点积把两个向量逐元素相乘再求和——将两个向量变成一个数字,衡量它们在 多大程度上指向同一方向。
由它你得到两个要点。一个向量的范数(长度)是 ‖a‖ = √(a · a)——勾股距离。而重新整理这个公式,就得到两个向量之间的夹角,这正是余弦相似度:
这正是比较词嵌入时所用的同一个余弦相似度:含义变成几何,「相关」变成「小夹角」。 当点积为零时,向量是正交的——成直角,毫无共同之处。
04
作为线性映射的矩阵
这是解锁一切的思想:矩阵是一个函数,它变换空间。用矩阵乘一个向量会 移动它——旋转、拉伸、错切或投影它——同时保持网格平直、原点不动。
读懂一个矩阵的诀窍:它的各列就是基向量落脚的地方。一个 2×2 矩阵的第一列 说明 [1,0] 去往何处,第二列说明 [0,1] 去往何处。因为任何 向量都是基的组合,知道基落在哪里,就知道一切落在哪里:
那个矩阵把 x 方向拉伸为 2 倍、把 y 方向拉伸为 3 倍。换上不同的数字,你就得到旋转、 反射或错切——每一次都是同一个操作:「施加线性映射」。
05
矩阵乘法
矩阵乘法初见时像是一条任意的规则——行乘列,把乘积加起来。它一点也不任意:两个矩阵相乘就是复合它们的变换。AB 意味着「先做 B,再做 A」 ——和嵌套函数 f(g(x)) 一样。
这一个洞见就解释了其余的规则:
- 维度必须对齐(内侧尺寸相同),因为一个变换的输出必须是下一个变换的 有效输入。
- 顺序重要——一般而言
AB ≠ BA——因为先旋转再拉伸和先拉伸 再旋转并不相同。 - 单位矩阵
I(对角线上为 1)是「什么也不做」的映射;AI = A。
06
方程组、秩与可逆性
一个线性方程组就是 Ax = b:给定一个变换 A 和一个目标 b,找到落在它上面的输入 x。解这个方程组,就是把变换反向 运行。
你能否把它反向,取决于秩——矩阵中真正独立的方向的数量 (其列张成空间的维数)。如果一个矩阵把空间压扁到更低的维度——比如一个把一切都拍平到 一个平面上的三维映射——它就丢失了信息,无法被撤销。两种关键情形:
- 满秩(列独立):映射可逆,存在逆
A⁻¹,而Ax = b恰有一个解,x = A⁻¹b。 - 秩亏(某些列是冗余的):映射坍缩了维度,不存在逆,方程组要么无解、 要么有无穷多解。用数据的话说,冗余的列意味着共线特征——回归中真实而 常见的麻烦。
07
特征值与特征向量
当你施加一个矩阵时,大多数向量会被撞离它们原来的直线——它们的长度和方向都改变。 但对于任何给定的变换,有少数特殊的向量始终指向同一方向,只是被缩放。它们就是特征向量,而那个缩放因子就是特征值:
把它读作:对 v 施加变换 A,与简单地把 v 缩放 λ 倍做的是同一件事。特征向量是变换的「自然坐标轴」——它作用得最简单的 那些方向。特征值为 2 意味着那个方向被加倍;为 1 意味着不变;为负则意味着被翻转。
这对数据很重要,因为一个数据集的协方差矩阵,其特征向量沿着方差最大的 方向——数据实际展开的那些坐标轴。这就是 PCA 的引擎,而从那里到 SVD 只有 一步之遥。
08
SVD——皇冠上的明珠
奇异值分解是其余一切都在为之铺垫的结果。它说任何矩阵——无论 方阵与否——都可以被拆成三个简单的部分:
每一个线性映射,无论看起来多么纠缠,其实都只是一次旋转(Vᵀ)、 沿坐标轴的一次拉伸(Σ),以及另一次旋转(U)。Σ 的对角线上是奇异值——映射沿每个方向拉伸了多少,按重要性 降序排列。
SVD 无处不在的原因:只保留最大的几个奇异值,你就得到该矩阵可能的最佳 低秩近似——用最少的数字承载最多的信息。这一个思想驱动了:
- PCA 与降维——把 100 个相关特征压缩成承载信号的 5 个方向。
- 图像与数据压缩——把一个大矩阵存成几个小矩阵,几乎没有可见的损失。
- 推荐系统——把一个稀疏的「用户×物品」评分矩阵分解为潜在的品味向量。
- 降噪与潜在语义——小的奇异值通常是噪声;丢掉它们,结构依然保留。
09
它在我工作中的体现
10