[omscs-ml] 从 Dot Product 到 Cosine Similarity,再到 Pearson Correlation

这篇笔记整理的是这几个概念之间的关系: 1. 为什么 a⋅b=∥a∥∥b∥cos⁡θa\cdot b = \|a\|\|b\|\cos \theta 2. 为什么 dot product 为 0 表示两个向量垂直 3. cosine similarity 为什么就是 cos⁡θ\cos \theta 4. Pearson correlation 为什么可以理解成 mean cen

这篇笔记整理的是这几个概念之间的关系:

  1. 为什么

    a⋅b=∥a∥∥b∥cos⁡(θ)a\cdot b = \|a\|\|b\|\cos(\theta)
  2. 为什么 dot product 为 0 表示两个向量垂直

  3. cosine similarity 为什么就是 cos⁡(θ)\cos(\theta)

  4. Pearson correlation 为什么可以理解成 mean-centered cosine similarity


1. Dot product 是什么?

如果有两个向量:

a=[a1,a2,...,an]a = [a_1, a_2, ..., a_n] b=[b1,b2,...,bn]b = [b_1, b_2, ..., b_n]

它们的 dot product 定义为:

a⋅b=a1b1+a2b2+...+anbna\cdot b = a_1b_1 + a_2b_2 + ... + a_nb_n

比如:

a=[1,2,3]a = [1, 2, 3] b=[4,5,6]b = [4, 5, 6]

那么:

a⋅b=1×4+2×5+3×6=32a\cdot b = 1\times4 + 2\times5 + 3\times6 = 32

这个数衡量的是两个向量在方向和长度上的综合重叠程度。


2. 向量长度 ∥a∥\|a\| 是什么?

向量的长度,也叫 norm / magnitude。

如果:

a=[a1,a2,...,an]a = [a_1, a_2, ..., a_n]

那么:

∥a∥=a12+a22+...+an2\|a\| = \sqrt{a_1^2 + a_2^2 + ... + a_n^2}

例如:

a=[3,4]a = [3,4]

那么:

∥a∥=32+42=5\|a\| = \sqrt{3^2 + 4^2} = 5

3. 为什么 a⋅b=∥a∥∥b∥cos⁡(θ)a\cdot b = \|a\|\|b\|\cos(\theta)?

这个公式可以从 余弦定理 law of cosines 推出来。

假设两个向量 aa 和 bb 的夹角是 θ\theta。

看由 aa、bb、a−ba-b 组成的三角形。

根据余弦定理:

∥a−b∥2=∥a∥2+∥b∥2−2∥a∥∥b∥cos⁡(θ)\|a-b\|^2 = \|a\|^2 + \|b\|^2 - 2\|a\|\|b\|\cos(\theta)

另一方面,用 dot product 展开:

∥a−b∥2=(a−b)⋅(a−b)\|a-b\|^2 = (a-b)\cdot(a-b)

展开得到:

(a−b)⋅(a−b)=a⋅a−2a⋅b+b⋅b(a-b)\cdot(a-b) = a\cdot a - 2a\cdot b + b\cdot b

因为:

a⋅a=∥a∥2a\cdot a = \|a\|^2 b⋅b=∥b∥2b\cdot b = \|b\|^2

所以:

∥a−b∥2=∥a∥2+∥b∥2−2a⋅b\|a-b\|^2 = \|a\|^2 + \|b\|^2 - 2a\cdot b

现在我们有两个表达式:

∥a−b∥2=∥a∥2+∥b∥2−2∥a∥∥b∥cos⁡(θ)\|a-b\|^2 = \|a\|^2 + \|b\|^2 - 2\|a\|\|b\|\cos(\theta)

以及:

∥a−b∥2=∥a∥2+∥b∥2−2a⋅b\|a-b\|^2 = \|a\|^2 + \|b\|^2 - 2a\cdot b

所以右边相等:

∥a∥2+∥b∥2−2a⋅b=∥a∥2+∥b∥2−2∥a∥∥b∥cos⁡(θ)\|a\|^2 + \|b\|^2 - 2a\cdot b = \|a\|^2 + \|b\|^2 - 2\|a\|\|b\|\cos(\theta)

消掉共同项:

−2a⋅b=−2∥a∥∥b∥cos⁡(θ)-2a\cdot b = -2\|a\|\|b\|\cos(\theta)

两边除以 −2-2:

a⋅b=∥a∥∥b∥cos⁡(θ)a\cdot b = \|a\|\|b\|\cos(\theta)

这就是 dot product 的几何意义。


4. 为什么 dot product = 0 表示垂直?

由公式:

a⋅b=∥a∥∥b∥cos⁡(θ)a\cdot b = \|a\|\|b\|\cos(\theta)

如果 aa 和 bb 都不是零向量,那么 ∥a∥\|a\| 和 ∥b∥\|b\| 都不是 0。

如果:

a⋅b=0a\cdot b = 0

那么只能说明:

cos⁡(θ)=0\cos(\theta)=0

而:

cos⁡(90∘)=0\cos(90^\circ)=0

所以:

θ=90∘\theta = 90^\circ

因此两个非零向量垂直。

数字例子

a=[1,1]a = [1,1] b=[−1,1]b = [-1,1]

dot product 是:

a⋅b=1×(−1)+1×1=0a\cdot b = 1\times(-1) + 1\times1 = 0

所以这两个向量垂直。

注意:零向量比较特殊。
零向量和任何向量的 dot product 都是 0,但零向量没有方向,所以通常不说零向量和谁垂直。


5. Cosine similarity 是什么?

从公式:

a⋅b=∥a∥∥b∥cos⁡(θ)a\cdot b = \|a\|\|b\|\cos(\theta)

两边同时除以:

∥a∥∥b∥\|a\|\|b\|

得到:

cos⁡(θ)=a⋅b∥a∥∥b∥\cos(\theta) = \frac{a\cdot b}{\|a\|\|b\|}

右边这个东西就叫:

cosine similarity(a,b)=a⋅b∥a∥∥b∥\text{cosine similarity}(a,b) = \frac{a\cdot b}{\|a\|\|b\|}

所以 cosine similarity 本质上就是两个非零向量夹角的 cos⁡(θ)\cos(\theta)。


6. Cosine similarity 衡量什么?

它衡量两个向量的方向有多像,而不太关心长度。

常见取值范围:

Cosine similarity几何意义
1完全同方向
0垂直,没有方向相似性
-1完全反方向

7. Cosine similarity 数字例子

例子 1:同方向

a=[1,1]a = [1,1] b=[2,2]b = [2,2]

dot product:

a⋅b=1×2+1×2=4a\cdot b = 1\times2 + 1\times2 = 4

长度:

∥a∥=12+12=2\|a\| = \sqrt{1^2+1^2} = \sqrt{2} ∥b∥=22+22=8=22\|b\| = \sqrt{2^2+2^2} = \sqrt{8} = 2\sqrt{2}

所以:

cosine similarity=42×22=44=1\text{cosine similarity} = \frac{4}{\sqrt{2}\times 2\sqrt{2}} = \frac{4}{4} = 1

虽然 bb 比 aa 长,但是方向完全一样,所以 cosine similarity 是 1。

例子 2:垂直

a=[1,0]a = [1,0] b=[0,1]b = [0,1]

dot product:

a⋅b=1×0+0×1=0a\cdot b = 1\times0 + 0\times1 = 0

所以:

cosine similarity=0\text{cosine similarity} = 0

这两个向量夹角是 90∘90^\circ。

例子 3:反方向

a=[1,0]a = [1,0] b=[−1,0]b = [-1,0]

dot product:

a⋅b=−1a\cdot b = -1

长度都是 1,所以:

cosine similarity=−1\text{cosine similarity} = -1

两个向量方向完全相反,夹角是 180∘180^\circ。


8. Dot product 和 cosine similarity 的区别

Dot product 受两个因素影响:

  1. 方向是否相似
  2. 向量长度有多大

而 cosine similarity 把长度除掉了:

a⋅b∥a∥∥b∥\frac{a\cdot b}{\|a\|\|b\|}

所以它更关注方向相似性。

例如:

a=[1,1]a = [1,1] b=[100,100]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\text{Pearson correlation} = \text{cosine similarity of centered vectors}

假设有两个向量:

x=[x1,x2,...,xn]x = [x_1, x_2, ..., x_n] y=[y1,y2,...,yn]y = [y_1, y_2, ..., y_n]

cosine similarity 是直接算:

x⋅y∥x∥∥y∥\frac{x\cdot y}{\|x\|\|y\|}

而 Pearson correlation 是:

r=∑i(xi−xˉ)(yi−yˉ)∑i(xi−xˉ)2∑i(yi−yˉ)2r = \frac{\sum_i (x_i-\bar{x})(y_i-\bar{y})} {\sqrt{\sum_i (x_i-\bar{x})^2}\sqrt{\sum_i (y_i-\bar{y})^2}}

其中:

xˉ=mean(x)\bar{x} = \text{mean}(x) yˉ=mean(y)\bar{y} = \text{mean}(y)

也就是说,先定义:

xcentered=x−xˉx_{\text{centered}} = x - \bar{x} ycentered=y−yˉy_{\text{centered}} = y - \bar{y}

然后:

r=xcentered⋅ycentered∥xcentered∥∥ycentered∥r = \frac{x_{\text{centered}}\cdot y_{\text{centered}}} {\|x_{\text{centered}}\|\|y_{\text{centered}}\|}

所以:

Pearson=cosine(x−xˉ,y−yˉ)\text{Pearson} = \text{cosine}(x-\bar{x}, y-\bar{y})

10. Pearson 数字例子

假设:

x=[1,2,3]x = [1,2,3] y=[2,4,6]y = [2,4,6]

先算 mean:

xˉ=2\bar{x} = 2 yˉ=4\bar{y} = 4

mean-center:

xcentered=[−1,0,1]x_{\text{centered}} = [-1,0,1] ycentered=[−2,0,2]y_{\text{centered}} = [-2,0,2]

然后算 centered cosine similarity:

xcentered⋅ycentered=(−1)(−2)+0×0+1×2=4x_{\text{centered}}\cdot y_{\text{centered}} = (-1)(-2) + 0\times0 + 1\times2 = 4

长度:

∥xcentered∥=(−1)2+02+12=2\|x_{\text{centered}}\| = \sqrt{(-1)^2+0^2+1^2} = \sqrt{2} ∥ycentered∥=(−2)2+02+22=8\|y_{\text{centered}}\| = \sqrt{(-2)^2+0^2+2^2} = \sqrt{8}

所以:

r=428=44=1r = \frac{4}{\sqrt{2}\sqrt{8}} = \frac{4}{4} = 1

因此 Pearson correlation 是 1,表示完全线性正相关。


11. Pearson 为什么不关心 baseline?

看这个例子:

x=[1,2,3]x = [1,2,3] y=[101,102,103]y = [101,102,103]

这两个向量的趋势完全一样,只是 yy 整体比 xx 大 100。

mean-center 后:

xcentered=[−1,0,1]x_{\text{centered}} = [-1,0,1] ycentered=[−1,0,1]y_{\text{centered}} = [-1,0,1]

所以 Pearson correlation 是:

r=1r = 1

Pearson 不关心整体 baseline,只关心两个变量是否一起上升、一起下降。


12. 三者怎么记?

方法是否去除长度影响是否去除 mean/baseline关注点
Dot product否否方向 + 长度
Cosine similarity是否原始方向相似
Pearson correlation是是变化趋势相似

一句话总结:

Dot product 衡量方向和长度的综合重叠;cosine similarity 把长度 normalize 掉,只看方向;Pearson correlation 进一步先做 mean-centering,所以看的是两个变量的变化趋势是否一致。