这是 数学重学路线图 阶段五的子页面
📌 已有笔记:线性代数入门,本页侧重实战应用
为什么要学线性代数?
线性代数是现代数据科学、机器学习和安全分析的数学语言
推荐系统、搜索引擎排序、恶意软件检测——底层都是向量和矩阵运算
作为安全+大数据+后端方向,线性代数是绕不过去的基础
不需要每个证明都搞懂,但直觉和应用必须到位
一、向量(Vector)
1.1 直觉
向量就是一个有方向和大小的箭头
也可以理解为一组有序的数字,比如 [3, 4] 表示”往右走3,往上走4”
在高维空间中,一个用户的偏好、一段文本的特征,都可以用向量表示
1.2 向量加法
两个向量首尾相连,结果向量从起点指向终点
[a1, a2] + [b1, b2] = [a1+b1, a2+b2]
直觉:走完第一段路再走第二段路,最终位置就是加法结果
1.3 数乘(标量乘法)
数字 × 向量 = 放大/缩小/反转
k × [a1, a2] = [k*a1, k*a2]
k > 1 放大,0 < k < 1 缩小,k < 0 反转方向
1.4 点积(Dot Product)
公式:a · b = a1*b1 + a2*b2 + ... + an*bn
几何意义:a · b = |a| × |b| × cos(θ)
核心理解:点积衡量两个向量的方向一致程度
同向 → 点积为正
垂直 → 点积为零
反向 → 点积为负
这就是余弦相似度的基础!
1.5 叉积(Cross Product)
仅适用于三维向量
结果是一个垂直于两个输入向量的新向量
大小等于两个向量构成的平行四边形面积
在3D图形学中常用来计算法向量
1.6 Python 代码:向量运算
1 | import numpy as np |
二、矩阵(Matrix)
2.1 直觉
矩阵就是一个变换/映射
把一个输入向量通过矩阵”变换”成输出向量
想象成一个”加工厂”:输入原料(向量),输出产品(新向量)
2.2 矩阵基本运算
矩阵加法:对应位置相加,要求形状相同
数乘:每个元素乘以标量
矩阵乘法(行×列):
A(m×n) × B(n×p) = C(m×p)
C[i][j] = A的第i行与B的第j列的点积
⚠️ 矩阵乘法不满足交换律!AB ≠ BA
这是很多新手踩的坑
2.3 特殊矩阵
单位矩阵 I:对角线为1,其余为0,AI = IA = A
逆矩阵 A⁻¹:AA⁻¹ = I,相当于”撤销变换”
转置矩阵 Aᵀ:行列互换
2.4 Python 代码:矩阵运算
1 | import numpy as np |
三、线性变换
3.1 直觉
线性变换 = 矩阵乘法
旋转、缩放、剪切都可以用矩阵表示
这就是游戏引擎和图形渲染的底层原理
3.2 二维变换矩阵
旋转角度θ:[[cos(θ), -sin(θ)], [sin(θ), cos(θ)]]
缩放 sx, sy:[[sx, 0], [0, sy]]
剪切(水平):[[1, k], [0, 1]]
3.3 Python 代码:变换可视化
1 | import numpy as np |
四、特征值与特征向量
4.1 直觉(简化理解)
对于矩阵 A,如果存在向量 v 和标量 λ,使得 A × v = λ × v
那么 v 就是特征向量,λ 就是特征值
含义:特征向量是被矩阵变换后方向不变的向量
特征值是变换后的缩放倍数
比喻:一阵风吹过(变换),大部分东西都被吹偏了,但旗杆(特征向量)只是被拉长或缩短(特征值),方向没变
4.2 为什么重要
PCA 降维的核心就是找协方差矩阵的特征向量
Google PageRank 算法本质上是求特征向量
系统稳定性分析(特征值决定系统是否发散)
4.3 Python 代码
1 | import numpy as np |
五、余弦相似度
5.1 公式
cos(θ) = (a · b) / (|a| × |b|)
值域:[-1, 1]
1 → 方向完全相同(最相似)
0 → 正交(无关)
-1 → 方向完全相反
5.2 为什么不用欧氏距离?
余弦相似度只关心方向,不关心大小
例:两篇文章说的内容一样,但一篇长一篇短,向量大小不同但方向相同
余弦相似度会认为它们相似,欧氏距离会认为它们不同
5.3 Python 代码:余弦相似度
1 | import numpy as np |
六、大数据应用
6.1 推荐系统:用户-物品矩阵
用户对物品的评分构成一个大矩阵
通过矩阵分解(SVD),找到用户和物品的隐含特征向量
预测评分 = 用户向量 · 物品向量
6.2 PCA 降维
高维数据→找到方差最大的方向(主成分)→投影到低维空间
核心步骤:算协方差矩阵→求特征值/特征向量→取最大的几个
6.3 文本向量化
TF-IDF:词频-逆文档频率,把文本变成向量
Word2Vec:把每个词映射成一个向量,语义相近的词向量也相近
之后就可以用余弦相似度算文本相似性
6.4 Python 代码:简单推荐系统
1 | import numpy as np |
6.5 Python 代码:PCA 可视化
1 | import numpy as np |
七、安全应用
7.1 恶意软件特征向量化
提取恶意软件的行为特征(API调用、网络行为、文件操作等)
每个样本 → 一个特征向量
用余弦相似度找同家族的恶意软件
7.2 异常检测中的距离度量
正常行为构成一个”簇”,异常点距离簇中心很远
马氏距离:考虑了特征之间相关性的距离(用到协方差矩阵的逆)
比欧氏距离更适合检测异常行为
7.3 流量指纹分析
网络流量的统计特征(包大小分布、时间间隔等)构成向量
不同协议/攻击的流量指纹不同
可以用向量相似度进行协议识别和攻击检测
八、后端应用
8.1 搜索引擎相关性排序
查询词 → 向量,文档 → 向量
用余弦相似度排序,最相似的排最前
ElasticSearch 底层就是这个原理
8.2 图形变换
如果涉及前端 Canvas、游戏开发、数据可视化
所有的旋转、缩放、平移都是矩阵运算
WebGL/OpenGL 的变换矩阵就是线性代数的直接应用
九、常见误区
❌ 误区1:矩阵乘法满足交换律 → AB = BA
✅ 矩阵乘法一般不满足交换律,AB ≠ BA
❌ 误区2:向量只是一组数字
✅ 向量有几何意义(方向+大小),理解几何直觉很重要
❌ 误区3:特征值/特征向量没用
✅ PCA、PageRank、系统稳定性分析都依赖它们
❌ 误区4:余弦相似度和欧氏距离一样
✅ 余弦关注方向,欧氏关注位置,适用场景不同
❌ 误区5:线性代数只在AI领域有用
✅ 安全分析、搜索引擎、推荐系统、图形渲染都需要
十、练习题
练习1:向量点积
计算向量 a = [1, 2, 3] 和 b = [4, -1, 2] 的点积
判断两个向量的夹角是锐角、直角还是钝角
答案:a·b = 4 + (-2) + 6 = 8 > 0,所以是锐角
练习2:矩阵乘法
A = [[1, 2], [3, 4]],B = [[0, 1], [1, 0]]
手动计算 AB 和 BA,验证 AB ≠ BA
答案:AB = [[2,1],[4,3]],BA = [[3,4],[1,2]]
练习3:余弦相似度
用 Python 计算以下三个文档向量的两两余弦相似度
doc1 = [1, 1, 0, 1],doc2 = [1, 1, 1, 0],doc3 = [0, 0, 1, 1]
哪两个文档最相似?
练习4:特征值验证
对矩阵 [[2, 1], [1, 2]],用 numpy 求特征值和特征向量
手动验证 Av = λv 是否成立
练习5:推荐系统
构造一个 5×3 的用户-物品评分矩阵
用 SVD 分解并重建,预测缺失的评分
思考:为什么 SVD 能预测用户没看过的物品的评分?
本页小结
线性代数的核心:向量(表示数据)+ 矩阵(表示变换)
余弦相似度是文本搜索和推荐系统的基石
特征值/特征向量是 PCA 降维和 PageRank 的核心
下一步 → 25-微积分直觉
| 上一章 | 目录 | 下一章 |
|---|---|---|
| 23-回归与预测 | 数学重学路线图 | 25-微积分直觉 |