pyspark ml 推荐 - Als 推荐

Posted

技术标签:

【中文标题】pyspark ml 推荐 - Als 推荐【英文标题】:pyspark ml recommendation - All recomendation 【发布时间】:2016-02-01 14:15:43 【问题描述】:

喂,

我是 Spark 的新手,我正在尝试使用 ML 推荐。

我的代码

df = sqlContext.createDataFrame(
[(0, 0, 4.0), (0, 1, 2.0), (1, 1, 3.0), (1, 2, 4.0), (2, 1, 1.0), (2, 2, 5.0)],
["user", "item", "rating"])

als = ALS(rank=10, maxIter=5)

model = als.fit(df)

model.userFactors.orderBy("id").collect()

如何为所有用户获得所有电影的 2 条推荐?

感谢您的宝贵时间。

【问题讨论】:

【参考方案1】:

ml.recommendation.ALSModel 无法直接实现。你可以使用transform 方法

users = df.select("user").distinct()
items = df.select("item").distinct()

model.transform(users.join(items))

然后过滤结果,但效率极低。据我所知,最好在这里简单地使用mllib.recommendation.ALS

from pyspark.mllib.recommendation import ALS, Rating

model = ALS.train(df.rdd.map(lambda r: Rating(*r)), 10, 5)
model.recommendProductsForUsers(2)

【讨论】:

抱歉耽搁了,但我还有一个问题。当我做 RecommendationProductsForUsers() 时,我得到了客户过去购买的推荐。我怎样才能避免这种情况?非常感谢 @Kardu AFAIK 你不能。 @Kardu 使用 recommendProductsForUsers 时,您必须将结果预测与原始火车数据外连接,然后删除所有相交的数据。

以上是关于pyspark ml 推荐 - Als 推荐的主要内容,如果未能解决你的问题,请参考以下文章

通过 pyspark.ml CrossValidator 调整隐式 pyspark.ml ALS 矩阵分解模型的参数

PySpark - ALS 输出中的 RDD 到 DataFrame

深入理解Spark ML:基于ALS矩阵分解的协同过滤算法与源码分析

使用 ML spark 和数据帧进行隐式推荐

如何在 Spark 中确定 ALS.transImplicit 中的偏好/置信度?

通过 pyspark.ml.tuning.TrainValidationSplit 调整后如何获得最佳参数?