开发者社区> 问答> 正文

Scala Spark中两个稀疏向量的余弦相似性

我有一个包含两列的数据框,其中每一行都有一个稀疏向量。我试图找到一种合适的方法来计算每行中两个向量的余弦相似度(或只是点积)。

但是,我还没有找到任何库或教程来为稀疏矢量做这件事。

我发现的唯一方法如下:

创建ak X n矩阵,其中n个项目被描述为k维度向量。为了将每个项目表示为ak维度向量,您可以使用ALS来表示潜在因子空间中的每个实体。您可以选择此空间(k)的尺寸。该k X n矩阵可以表示为RDD [Vector]。

将此k X n矩阵转换为RowMatrix。

使用columnSimilarities()函数获取n个项目之间相似性的X n矩阵。

我觉得计算每对的所有余弦相似度太麻烦了,而我只需要在我(非常大)的数据帧中使用它。

展开
收起
社区小助手 2018-12-21 10:59:53 4826 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    如果要计算点积的矢量数量很小,请缓存RDD [Vector]表。创建一个新表[cosine_vectors],它是原始表上的过滤器,仅选择您想要余弦相似度的向量。广播加入这两个并计算。

    2019-07-17 23:23:17
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
阿里云数据中台零售数据模型白皮书 立即下载
消电行业数据中台解决方案白皮书 立即下载
JDK8新特性与生产-for“华东地区scala爱好者聚会” 立即下载