【问题标题】:PySpark how to incorporate user item features while building a recommender?PySpark 如何在构建推荐器时结合用户项目功能?
【发布时间】:2017-08-09 14:44:21
【问题描述】:

PySparks mllib 包提供 train() 和 trainimplicit() 方法,分别用于在显式和隐式数据上训练推荐模型。

我想在隐式数据上训练一个模型。更具体地说,项目购买数据。由于在我的情况下,用户多次购买一件商品的情况非常罕见,因此“评分”或“偏好”始终为 1。所以我的数据集如下所示:

u1, i1, 1 u1, i2, 1 u2, i2, 1 u2, i3, 1 ... un, im, 1

其中 u 代表用户,i 代表项目。

我确实有很多关于用户人口统计、位置等的功能以及项目功能。但我无法在 pyspark.mllib.als.trainpyspark.mllib.als.trainimplicit 方法中合并用户或项目功能。

另外,我考虑过使用 fastFM 或 libfm。两者都是分解机器的包,它实现了 ALS 求解器和框架推荐作为回归/分类问题。使用这些案例,我可以将训练数据中的用户、项目和更多特征包含为X。但是,预测变量 y 将只是一个向量(我没有明确的评级,只有购买)。

我该如何解决这个问题?

【问题讨论】:

    标签: apache-spark pyspark recommendation-engine matrix-factorization


    【解决方案1】:

    Spark 中的 MF 是一个基于用户项目事件(隐式)/评级(显式)的简单协同过滤实现。您可以通过预过滤或后过滤数据为 2D(用户项目)推荐器引入上下文信息。例如,您有一个人口统计信息 M/F 和 kNN 推荐器(可以是 MF,没关系),对于预过滤,您要做的第一件事就是只选择具有相同上下文的记录。比,你在他们身上运行 kNN。对于 MF,以同样的方式,必须为 F 和 M 生成两个模型。然后,在第一步生成推荐时,您选择正确的模型。 “推荐系统手册”中对这两种技术都有很好的描述。

    建模上下文 - FM 是一个不错的方法。想一想,这篇文章可能对你有用:How to use Python's FastFM library (factorization machines) for recommendation tasks?。您将在那里发现如何为隐式用户反馈引入负面示例。并注意排名预测 - 主要是推荐是正确的方法。

    另一种选择 - 引入您自己的启发式方法,例如通过破坏最终得分。也许你有一些知识/业务目标/其他可以为你或用户带来价值的东西。

    【讨论】:

      猜你喜欢
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 2014-11-25
      • 2012-12-18
      • 2010-11-24
      • 2010-12-02
      相关资源
      最近更新 更多