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

空间中的两个点 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=abab=x12+y12 x22+y22 x1x2+y1y2

欧式距离计算公式为

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=ab2=(x1x2)2+(y1y2)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(1cos(a,b))

欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_40006058/article/details/121070282