【问题标题】:How to apply Spark ALS for Implicit data如何将 Spark ALS 应用于隐式数据
【发布时间】:2017-09-29 07:11:01
【问题描述】:

我的数据集是这样的购买历史记录:

+---+-----------+---------+
|usn|    page_id|    click|
+---+-----------+---------+
| 11| 9000001012|       10|
|169| 2010008901|      100|
|169| 9000001007|        4|
|169| 2010788901|        1|
|169| 8750001007|        4|
|169| 9003601012|       10|
|169| 9000001007|        4|
|613| 9000050601|        8|
|613| 9000011875|        3|
|613| 2010010401|        6|
|613| 9000001007|        4|
|613| 2010008801|        1|
|836| 9000050601|       20|
|916| 9000050601|       10|
|916| 9000562601|       30|
|916| 9000001007|        4|
|916| 9000001012|       10|
+---+-----------+---------+

我已阅读 Spark (http://spark.apache.org/docs/latest/ml-collaborative-filtering.html) 中的文档,但我不知道如何在此问题中使用 Collaborative Filtering for Implicit Preference。

现在我想将 ALS 应用于此数据集的隐式偏好。 怎么做?我可以将此数据集应用于显式数据吗?

请帮我使用它,如果有的话,请给我一个关于隐式偏好的示例代码 python

【问题讨论】:

  • 你在哪里卡住了?
  • 我是否假设 click 为评级?我可以将此数据集用于模拟 ALS 吗?那是真实的?我需要这方面的例子: als = ALS(maxIter=5, regParam=0.01,implicitPrefs=True, userCol="userId", itemCol="movieId", ratingCol="rating") with implicitPrefs=True
  • 是的,它们充当评级。只需将 args 替换为数据集的正确名称即可。如果结果不理想,您可以尝试对点击进行标准化。
  • 那么,你能给我关于隐式反馈的示例代码python
  • 为什么需要一个例子?您已经有了代码,只需运行它,看看它是否有效。

标签: python apache-spark pyspark recommendation-engine collaborative-filtering


【解决方案1】:

我的回答有点晚了,但主要是缩放“点击”的值。在我的情况下工作:

from pyspark.sql import Window

ww = Window.partitionBy("usn")
scaled_score = (
    0.00001 + 10*(col("click") - min("click").over(ww)) / (max("click").over(ww) - min("click").over(ww))
).cast(DecimalType(7, 5))

为最常访问的 page_id 创建策略后,请记住要建模的值应反映客户的口味

【讨论】:

  • 为什么你乘以10加上0.00001,输入还在0-1的范围内吗?还需要用户明智地进行缩放吗?
猜你喜欢
  • 2016-02-21
  • 1970-01-01
  • 2017-07-09
  • 2018-03-09
  • 2016-06-06
  • 1970-01-01
  • 2015-08-11
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多