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矩阵分解的协同过滤算法与源码分析