怪了,为什么一些场景中使用余弦相似度而不是欧式距离

空间中的两个点 a ( x 1 , y 2 ) , b ( x 2 , y 2 ) a(x_1, y_2), b(x_2, y_2) a(x1​,y2​),b(x2​,y2​)

余弦相似度计算公式为

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 cos = \frac{a·b}{||a|| * ||b||} = \frac{x_1x_2+y_1y_2}{\sqrt{x_1^2+y_1^2} · \sqrt{x_2^2+y_2^2}} cos=∣∣a∣∣∗∣∣b∣∣a⋅b​=x12​+y12​ ​⋅x22​+y22​ ​x1​x2​+y1​y2​​

欧式距离计算公式为

e u c = ∣ ∣ a − b ∣ ∣ 2 = ( x 1 − x 2 ) 2 + ( y 1 − y 2 ) 2 euc = ||a-b||_2 = \sqrt{(x_1-x_2)^2 + (y_1-y_2)^2} euc=∣∣a−b∣∣2​=(x1​−x2​)2+(y1​−y2​)2

余弦相似度计算的是两个向量夹角的余弦,关注的是向量之间的角度关系,不关心绝对值大小,取值为[-1, 1]。

  • 当两个相似文本,如果使用词频座位特征时,他们在特征空间的欧式距离可能很大,但是两者的夹角很小,因此相似度高。
  • 特征维度很高时,余弦相似度在高维下依然保持相同为1,正交为0,相反-1的性质,而欧式距离则受维度的影响,取值范围不固定。
  • 余弦距离体现的是数值上的绝对差异,余弦相似度体现了方向上的相对差异

当向量归一化后,欧式距离与余弦相似度存在转换关系 e u c ( a , b ) = 2 ( 1 − c o s ( a , b ) ) euc(a,b) = \sqrt{2(1-cos(a,b))} euc(a,b)=2(1−cos(a,b))

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~
怪了,为什么一些场景中使用余弦相似度而不是欧式距离

上一篇:C语言练习12---杨辉三角


下一篇:微积分(A)随缘一题[9]