我有一个包含两列的数据框,其中每一行都有一个稀疏向量。我试图找到一种合适的方法来计算每行中两个向量的余弦相似度(或只是点积)。
但是,我还没有找到任何库或教程来为稀疏矢量做这件事。
我发现的唯一方法如下:
创建ak X n矩阵,其中n个项目被描述为k维度向量。为了将每个项目表示为ak维度向量,您可以使用ALS来表示潜在因子空间中的每个实体。您可以选择此空间(k)的尺寸。该k X n矩阵可以表示为RDD [Vector]。
将此k X n矩阵转换为RowMatrix。
使用columnSimilarities()函数获取n个项目之间相似性的X n矩阵。
我觉得计算每对的所有余弦相似度太麻烦了,而我只需要在我(非常大)的数据帧中使用它。
如果要计算点积的矢量数量很小,请缓存RDD [Vector]表。创建一个新表[cosine_vectors],它是原始表上的过滤器,仅选择您想要余弦相似度的向量。广播加入这两个并计算。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。