距离度量 —— 余弦相似度(Cosine similarity)
三角函数,相信大家在初高中都已经学过,而这里所说的余弦距离(Cosine Distance)的计算公式和高中学到过的公式差不多。在几何中,夹角的余弦值可以用来衡量两个方向(向量)的差异;因此可以推广到机器学习中,来衡量样本向量之间的差异。因此,我们的公式也要稍加变换,使其能够用向量来表示。假设 二维平面 内有两向量:A(x1,y1)A(x_{1},y_{1})A(x1,y1) 与 B(x2,y
Python学习系列文章:👉 目录 👈
一、概述
三角函数,相信大家在初高中都已经学过,而这里所说的余弦相似度(Cosine Distance)的计算公式和高中学到过的公式差不多。
在几何中,夹角的余弦值可以用来衡量两个方向(向量)的差异;因此可以推广到机器学习中,来衡量样本向量之间的差异。
因此,我们的公式也要稍加变换,使其能够用向量来表示。
二、计算公式
① 二维平面上的余弦相似度
假设 二维平面 内有两向量: A ( x 1 , y 1 ) A(x_{1},y_{1}) A(x1,y1) 与 B ( x 2 , y 2 ) B(x_{2},y_{2}) B(x2,y2)
则二维平面的 A A A、 B B B 两向量的余弦相似度公式为:
c o s ( θ ) = a ⋅ b ∣ a ∣ ∣ b ∣ cos(\theta)=\frac{a\cdot b}{|a| |b|} cos(θ)=∣a∣∣b∣a⋅b
c o s ( θ ) = a ⋅ b ∣ a ∣ ∣ b ∣ = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 x 2 2 + y 2 2 \begin{aligned} cos(\theta)&=\frac{a\cdot b}{|a| |b|}\\ &=\frac{x_{1}x_{2}+y_{1}y_{2}}{\sqrt{x_{1}^2+y_{1}^2}\sqrt{x_{2}^2+y_{2}^2}} \end{aligned} cos(θ)=∣a∣∣b∣a⋅b=x12+y12x22+y22x1x2+y1y2
② n维空间上的余弦相似度
推广到 n 维空间的两个向量 A ( x 11 , x 12 , . . . , x 1 n ) A(x_{11},x_{12},...,x_{1n}) A(x11,x12,...,x1n) 与 B ( x 21 , x 22 , . . . , x 2 n ) B(x_{21},x_{22},...,x_{2n}) B(x21,x22,...,x2n),则有余弦相似度为:
c o s ( θ ) = a ⋅ b ∣ a ∣ ∣ b ∣ = ∑ k = 1 n x 1 k x 2 k ∑ k = 1 n x 1 k 2 ∑ k = 1 n x 2 k 2 \begin{aligned} cos(\theta)&=\frac{a\cdot b}{|a| |b|}\\ &=\frac{\sum_{k=1}^n x_{1k} x_{2k}}{\sqrt{\sum_{k=1}^nx_{1k}^2}\sqrt{\sum_{k=1}^nx_{2k}^2}} \end{aligned} cos(θ)=∣a∣∣b∣a⋅b=∑k=1nx1k2∑k=1nx2k2∑k=1nx1kx2k
③ 注意
- 余弦相似度的取值范围为 [ − 1 , 1 ] [-1,1] [−1,1]。
- 余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。
- 当两个向量的方向重合时余弦取最大值 1 1 1,当两个向量的方向完全相反余弦取最小值 − 1 -1 −1。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)