如何将Spark ALS用于隐式数据

问题描述 投票:1回答:1

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

+---+-----------+---------+
|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)中的文档,但在此问题中我不知道如何对隐式首选项使用协作过滤。

现在,我想将ALS用于隐式首选项应用于此数据集。怎么做?我可以将此数据集用于显式数据吗?

[请帮助我使用它,如果有,请给我一个关于隐式首选项的示例代码python

python apache-spark pyspark recommendation-engine collaborative-filtering
1个回答
0
投票

我的回答有点晚了,但是最主要的是按'click'缩放值。就我而言,工作:

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创建策略后,请记住要建模的值应反映客户的喜好

© www.soinside.com 2019 - 2024. All rights reserved.