这篇笔记整理的是这几个概念之间的关系:
-
为什么
a⋅b=∥a∥∥b∥cos(θ)
-
为什么 dot product 为 0 表示两个向量垂直
-
cosine similarity 为什么就是 cos(θ)
-
Pearson correlation 为什么可以理解成 mean-centered cosine similarity
1. Dot product 是什么?
如果有两个向量:
a=[a1,a2,...,an]
b=[b1,b2,...,bn]
它们的 dot product 定义为:
a⋅b=a1b1+a2b2+...+anbn
比如:
a=[1,2,3]
b=[4,5,6]
那么:
a⋅b=1×4+2×5+3×6=32
这个数衡量的是两个向量在方向和长度上的综合重叠程度。
2. 向量长度 ∥a∥ 是什么?
向量的长度,也叫 norm / magnitude。
如果:
a=[a1,a2,...,an]
那么:
∥a∥=a12+a22+...+an2
例如:
a=[3,4]
那么:
∥a∥=32+42=5
3. 为什么 a⋅b=∥a∥∥b∥cos(θ)?
这个公式可以从 余弦定理 law of cosines 推出来。
假设两个向量 a 和 b 的夹角是 θ。
看由 a、b、a−b 组成的三角形。
根据余弦定理:
∥a−b∥2=∥a∥2+∥b∥2−2∥a∥∥b∥cos(θ)
另一方面,用 dot product 展开:
∥a−b∥2=(a−b)⋅(a−b)
展开得到:
(a−b)⋅(a−b)=a⋅a−2a⋅b+b⋅b
因为:
a⋅a=∥a∥2
b⋅b=∥b∥2
所以:
∥a−b∥2=∥a∥2+∥b∥2−2a⋅b
现在我们有两个表达式:
∥a−b∥2=∥a∥2+∥b∥2−2∥a∥∥b∥cos(θ)
以及:
∥a−b∥2=∥a∥2+∥b∥2−2a⋅b
所以右边相等:
∥a∥2+∥b∥2−2a⋅b=∥a∥2+∥b∥2−2∥a∥∥b∥cos(θ)
消掉共同项:
−2a⋅b=−2∥a∥∥b∥cos(θ)
两边除以 −2:
a⋅b=∥a∥∥b∥cos(θ)
这就是 dot product 的几何意义。
4. 为什么 dot product = 0 表示垂直?
由公式:
a⋅b=∥a∥∥b∥cos(θ)
如果 a 和 b 都不是零向量,那么 ∥a∥ 和 ∥b∥ 都不是 0。
如果:
a⋅b=0
那么只能说明:
cos(θ)=0
而:
cos(90∘)=0
所以:
θ=90∘
因此两个非零向量垂直。
数字例子
a=[1,1]
b=[−1,1]
dot product 是:
a⋅b=1×(−1)+1×1=0
所以这两个向量垂直。
注意:零向量比较特殊。
零向量和任何向量的 dot product 都是 0,但零向量没有方向,所以通常不说零向量和谁垂直。
5. Cosine similarity 是什么?
从公式:
a⋅b=∥a∥∥b∥cos(θ)
两边同时除以:
∥a∥∥b∥
得到:
cos(θ)=∥a∥∥b∥a⋅b
右边这个东西就叫:
cosine similarity(a,b)=∥a∥∥b∥a⋅b
所以 cosine similarity 本质上就是两个非零向量夹角的 cos(θ)。
6. Cosine similarity 衡量什么?
它衡量两个向量的方向有多像,而不太关心长度。
常见取值范围:
| Cosine similarity | 几何意义 |
|---|
| 1 | 完全同方向 |
| 0 | 垂直,没有方向相似性 |
| -1 | 完全反方向 |
7. Cosine similarity 数字例子
例子 1:同方向
a=[1,1]
b=[2,2]
dot product:
a⋅b=1×2+1×2=4
长度:
∥a∥=12+12=2
∥b∥=22+22=8=22
所以:
cosine similarity=2×224=44=1
虽然 b 比 a 长,但是方向完全一样,所以 cosine similarity 是 1。
例子 2:垂直
a=[1,0]
b=[0,1]
dot product:
a⋅b=1×0+0×1=0
所以:
cosine similarity=0
这两个向量夹角是 90∘。
例子 3:反方向
a=[1,0]
b=[−1,0]
dot product:
a⋅b=−1
长度都是 1,所以:
cosine similarity=−1
两个向量方向完全相反,夹角是 180∘。
8. Dot product 和 cosine similarity 的区别
Dot product 受两个因素影响:
- 方向是否相似
- 向量长度有多大
而 cosine similarity 把长度除掉了:
∥a∥∥b∥a⋅b
所以它更关注方向相似性。
例如:
a=[1,1]
b=[100,100]
dot product 很大,但 cosine similarity 仍然是 1,因为方向完全一样。
9. Pearson correlation 和 cosine similarity 的关系
Pearson correlation 可以理解成:
先把两个 vector 做 mean-centering,再算 cosine similarity。
也就是:
Pearson correlation=cosine similarity of centered vectors
假设有两个向量:
x=[x1,x2,...,xn]
y=[y1,y2,...,yn]
cosine similarity 是直接算:
∥x∥∥y∥x⋅y
而 Pearson correlation 是:
r=∑i(xi−xˉ)2∑i(yi−yˉ)2∑i(xi−xˉ)(yi−yˉ)
其中:
xˉ=mean(x)
yˉ=mean(y)
也就是说,先定义:
xcentered=x−xˉ
ycentered=y−yˉ
然后:
r=∥xcentered∥∥ycentered∥xcentered⋅ycentered
所以:
Pearson=cosine(x−xˉ,y−yˉ)
10. Pearson 数字例子
假设:
x=[1,2,3]
y=[2,4,6]
先算 mean:
xˉ=2
yˉ=4
mean-center:
xcentered=[−1,0,1]
ycentered=[−2,0,2]
然后算 centered cosine similarity:
xcentered⋅ycentered=(−1)(−2)+0×0+1×2=4
长度:
∥xcentered∥=(−1)2+02+12=2
∥ycentered∥=(−2)2+02+22=8
所以:
r=284=44=1
因此 Pearson correlation 是 1,表示完全线性正相关。
11. Pearson 为什么不关心 baseline?
看这个例子:
x=[1,2,3]
y=[101,102,103]
这两个向量的趋势完全一样,只是 y 整体比 x 大 100。
mean-center 后:
xcentered=[−1,0,1]
ycentered=[−1,0,1]
所以 Pearson correlation 是:
r=1
Pearson 不关心整体 baseline,只关心两个变量是否一起上升、一起下降。
12. 三者怎么记?
| 方法 | 是否去除长度影响 | 是否去除 mean/baseline | 关注点 |
|---|
| Dot product | 否 | 否 | 方向 + 长度 |
| Cosine similarity | 是 | 否 | 原始方向相似 |
| Pearson correlation | 是 | 是 | 变化趋势相似 |
一句话总结:
Dot product 衡量方向和长度的综合重叠;cosine similarity 把长度 normalize 掉,只看方向;Pearson correlation 进一步先做 mean-centering,所以看的是两个变量的变化趋势是否一致。