我正在尝试调整余弦相似度,以确定两个向量相对于条目的相似度。由于所获得的度量在向量尺度{(0,1,2)和(0,2,4)具有余弦相似度1}下是不变的,那么扩展相似性度量以说明初始向量尺度的方法是什么?我想乘以min{|v1|,|v2|}/max{|v1|,|v2|},其中|v|表示向量v范数,以保持-1和1的界限。任何建议都是非常感谢的。
发布于 2012-01-06 11:08:17
嗯,余弦相似度是基于两个向量之间的角度(而不是依赖于向量的长度)。如果你需要一些东西来考虑向量的长度,那么你需要考虑向量长度如何影响上下文中的相似性。
还要注意,如果需要保持在特定的边界内(如[-1, 1]
),您始终可以对相似性或距离度量进行后处理。用于执行此类转换的一个流行函数是arctan。
例如,您可以使用适当的变换来尝试欧几里德距离,而不是扩展余弦相似度:
d = Euclidean distance between your vectors
similarity = 1 - 2 * arctan(d) / (pi/2)
但正如我所说的,“正确的”公式取决于你的上下文。
https://stackoverflow.com/questions/8756258
复制相似问题