gpt4 book ai didi

cluster-analysis - 关于余弦相似度的一些问题

转载 作者:行者123 更新时间:2023-12-04 08:32:03 24 4
gpt4 key购买 nike

昨天我了解到余弦相似度,定义为

enter image description here

可以有效地衡量两个向量的相似程度。

我发现这里的定义使用 L2 范数来归一化 A 的点积和 B ,我感兴趣的是为什么不使用A的L1范数?和 B在分母?

我的老师告诉我,如果我在分母中使用 L1 范数,那么如果 A=B,余弦相似度就不会是 1。 .然后,我进一步问他,如果我修改余弦相似度定义如下,修改后的模型与原模型相比有哪些优缺点?

sim(A,B) = (A * B)/(||A||1 * ||B||1) 如果 A!=B

sim(A,B) = 1 如果 A==B

如果有人能给我更多解释,我将不胜感激。

最佳答案

如果您使用 L1 范数,您不再计算余弦 .

余弦是一个几何概念,不是随机定义。有一整套数学方法与之相关。 如果您使用 L1,您将不再测量角度 .

另见:Wikipedia: Trigonometric functions - Cosine

请注意 余弦对 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... .所以你的相似性不符合任何直觉,是吗?

关于cluster-analysis - 关于余弦相似度的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25439073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com