看起来两个特征的余弦相似度只是它们的点积乘以它们的大小的乘积。余弦相似度何时比点积更适合距离度量?即点积和余弦相似度在不同情况下有不同的优势或劣势吗?
余弦相似度与点积作为距离度量
数据挖掘
分类
2021-10-02 19:57:48
4个回答
以几何方式思考。余弦相似度只关心角度差异,而点积关心角度和大小。如果您将数据归一化以具有相同的量级,则两者无法区分。有时需要忽略幅度,因此余弦相似度很好,但如果幅度起作用,点积作为相似度度量会更好。请注意,它们都不是“距离度量”。
你是对的,余弦相似度与向量的点积有很多共同点。事实上,它是一个点积,按数量级缩放。并且由于缩放,它在 0 和 1 之间进行了归一化。CS 更可取,因为它考虑了数据的可变性和特征的相对频率。另一方面,普通点积有点“便宜”(就复杂性和实现而言)。
我想在上面给出的答案中再增加一个维度。通常我们对大文本使用余弦相似度,因为不建议对数据段落使用距离矩阵。而且,如果您希望您的集群更广泛,您倾向于使用余弦相似度,因为它可以捕获整体相似度。
例如,如果您的文本最长为两个或三个单词,我觉得使用余弦相似度并不能达到距离度量所达到的精度。
这里对常见的基于内积的相似度指标进行了很好的比较。
特别是,余弦相似度被归一化为 ,不像点积可以是任何实数。但是,正如其他人所说,这将需要忽略向量的大小。就个人而言,我认为这是一件好事。我将幅度视为内部(向量内)结构,将向量之间的角度视为外部(向量之间)结构。它们是不同的东西,(在我看来)通常最好分开分析。我无法想象我宁愿计算内积而不是计算余弦相似度然后只比较大小的情况。
其它你可能感兴趣的问题