我正在尝试调整余弦相似度以确定相对于条目两个向量的相似程度。由于获得的度量在向量尺度下是不变的{(0,1,2)和(0,2,4)具有1的余弦相似度,所以将相似性度量扩展到初始向量尺度的方法是什么?我想到乘以min {| v1 |,| v2 |} / max {| v1 |,| v2 |}与| v |表示向量v norm,以保留-1和1的边界。任何建议都受到高度赞赏。
答案 0 :(得分:2)
嗯,余弦相似性是基于两个向量之间的角度(不依赖于向量的长度)。如果你需要考虑矢量长度的东西,那么你需要考虑矢量长度如何影响你的上下文中的相似性。
另请注意,如果需要保持在特定范围内(例如[-1, 1]
),您可以随时对相似度或距离度量进行后处理。执行此类转换的常用功能是arctan。
例如,您可以尝试欧几里德距离并进行适当的变换,而不是扩展余弦相似度:
d = Euclidean distance between your vectors
similarity = 1 - 2 * arctan(d) / (pi/2)
但正如我所说,“正确”的公式取决于你的背景。