如果您使用 L1-norm,您将不再计算余弦。
余弦是一个几何概念,而不是一个随机定义。它附有一整套数学。如果您使用 L1,则不再测量角度。
另请参阅:维基百科:三角函数 - 余弦
请注意,余弦在 L2 归一化向量上与欧几里得距离是单调的。
Euclidean(x,y)^2 = sum( (x-y)^2 ) = sum(x^2) + sum(y^2) - 2 sum(x*y)
如果x 和 y 是 L2 归一化的,则sum(x^2)=sum(y^2)=1
,然后
Euclidean(x_norm,y_norm)^2 = 2 * (1 - sum(x_norm*y_norm)) = 2 * (1 - cossim(x,y))
因此,使用余弦相似度本质上意味着将您的数据标准化为单位长度。但也有与此相关的计算优势,因为sum(x*y)
稀疏数据的计算成本更低。
如果你 L2 标准化你的数据,那么
Euclidean(x_norm, y_norm) = sqrt(2) * sqrt(1-cossim(x,y))
对于您问题的第二部分:修复L1 规范并不容易。考虑向量 (1,1) 和 (2,2)。显然,这两个向量具有相同的角度,因此应该具有余弦相似度 1。
使用您的方程式,它们将具有相似性(2+2)/(2*4) = 0.5
查看向量 (0,1) 和 (0,2) - 大多数人都认为它们应该具有与上述示例相似的相似性(并且余弦确实给出了相同的相似性),您的等式得出(0+2)/(1+2) = 0.6666...
。所以你的相似性不符合任何直觉,是吗?