我使用IndexedRowMatrix表示产品的用户购买行为,为了构建产品推荐,我使用余弦相似度来计算产品之间的相似度。PySpark 提供了一个调用columnSimilarities()来执行此操作的函数。
我的问题是,我需要在使用之前对每个产品的向量进行归一化columnSimilarities()吗?我阅读了关于归一化和余弦相似度的信息,并了解到余弦相似度已经对向量进行归一化,就好像我们对向量进行归一化一样,那么余弦相似度将只是 2 个向量的点积。参考
此外,这个问题的答案之一余弦相似度与点积作为距离度量表明Sometimes it is desirable to ignore the magnitude, hence cosine similarity is nice, but if magnitude plays a role, dot product would be better as a similarity measure.这意味着余弦相似度和点积不一样。
我对差异感到困惑,什么时候在计算余弦相似度之前使用归一化比较好,什么时候不适合?规范化的不同方法是什么?
有什么帮助吗?
