【问题标题】:How to do an item based recommendation in spark mllib?如何在 spark mllib 中进行基于项目的推荐?
【发布时间】:2015-02-16 09:24:59
【问题描述】:

在 Mahout 中,使用 API 方法支持基于项目的推荐:

ItemBasedRecommender.mostSimilarItems(int productid, int maxResults, Rescorer rescorer)

但在 Spark Mllib 中,似乎 ALS 中的 API 可以获取推荐产品,但用户 ID 必须通过以下方式提供:

MatrixFactorizationModel.recommendProducts(int user, int num)

有没有一种方法可以根据类似产品获得推荐产品,而无需提供用户 ID 信息,类似于 mahout 执行基于项目的推荐。

【问题讨论】:

    标签: apache-spark mahout recommendation-engine apache-spark-mllib


    【解决方案1】:

    请参阅我使用 Apache Spark here. 实现的商品推荐模型您可以使用在用户商品评级数据上运行 MLib ALS 算法时生成的 productFeatures 矩阵来实现这一点。 ALS 算法本质上分解了两个矩阵 - 一个是 userFeatures,另一个是 productFeatures 矩阵。您可以在 productFeatures 秩矩阵上运行余弦相似度来查找项目相似度。

    【讨论】:

      【解决方案2】:

      Spark 1.2x 版本不像 Mahout 中那样提供“基于项目相似性的推荐器”。

      然而,MLlib 目前支持基于模型的协同过滤,其中用户和产品由一小组潜在因素描述项矩阵。}

      MLlib 使用交替最小二乘 (ALS) 算法 [可以认为类似于 SVD 算法] 来学习这些潜在因素。

      如果您需要构建一个纯粹基于项目相似性的推荐器,我会推荐这个:

      1. 用特征向量表示所有项目
      2. 通过计算每个项目对的相似度度量(例如余弦)来构建项目相似度矩阵
      3. 使用此商品相似度矩阵为用户查找相似商品

      由于相似度矩阵不能很好地扩展,(想象一下,如果您有 100 个项目而不是 10000 个项目,您的相似度矩阵将如何增长)如果您打算在大量项目上实现它,那么阅读 DIMSUM 可能会有所帮助:

      https://databricks.com/blog/2014/10/20/efficient-similarity-algorithm-now-in-spark-twitter.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-31
        • 2016-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-01
        相关资源
        最近更新 更多