如何使用ALS计算获得item相似度 How to get similar item recommendations using ALS - Quora

不幸的是,Spark ML不支持使用Matrix Factorization模型的item 相似性推荐。

Spark不使用Matrix Factorization模型计算item相似度的原因只是该技术不计算item相似性,也不计算用户相似性矩阵。(MF会计算出结果用户因素和项目因素,但不会在这里详细介绍它。)

实际上,您有很多解决方案可以使用Apache Spark计算项目的相似性。我将其中几个命名为:

  • 第一个是在Apache Spark中实现 基于项目的推荐逻辑。
    • 你必须注意,普通的方法 肯定不可扩展,因为计算所有向量之间的成对item距离是非常昂贵的。
    • 对于计算优化,您可以考虑诸如 局部敏感散列之类的技术  的近似邻域在高维空间中搜索。您可能有兴趣阅读有关LSH的更多信息:
      • 大规模数据集的挖掘, 第3章 - 寻找类似的项目。
      • 舍入算法的相似度估计技术 - Moses S. Charikar。
      • 随机算法和NLP:使用局部敏感哈希函数进行高速名词聚类。
    • 从版本 2.1开始,Spark ML 使用 近似相似性连接近似最近邻搜索实现了 LSH
  • 您可能会感兴趣的另一个解决方案是使用Spark MLLib  使用MapReduce实现 Dimension Independent Matrix Square来计算列(项)之间的相似性。
    • 您必须注意,DIMSUM假设您的用户项目评级矩阵很高而且很瘦。 因此,如果您拥有大量项目,这将无效。 [1]  [2]

还有许多其他技术,如LSA潜语义分析,SVD奇异值矩阵分解。这个清单很长,在下面的回答中。

脚注

[1]  现在在Apache Spark中有效的相似性算法,感谢Twitter

[2]  http://spark.apache.org/docs/lat ...

你可能感兴趣的:(如何使用ALS计算获得item相似度 How to get similar item recommendations using ALS - Quora)