我们如何才能在PySpark中获得十大推荐产品。据我所知,有些方法会像推荐产品为单个用户推荐产品,并预测所有预测{用户,商品}对的评分。但是,有没有一种有效的方式可以为所有用户输出每个用户的前10个项目?如何向所有用户推荐Spark ALS的十大产品?
回答
我写了这个功能,因此,它被分配则通过用户获得每个产品的评级和评价它们排序,并输出的8顶部推荐产品列表中的分区乘以用户特征和产品特性。
#Collect product feature matrix
productFeatures = bestModel.productFeatures().collect()
productArray=[]
productFeaturesArray=[]
for x in productFeatures:
productArray.append(x[0])
productFeaturesArray.append(x[1])
matrix=np.matrix(productFeaturesArray)
productArrayBroadCast=sc.broadcast(productArray)
productFeaturesArraybroadcast=sc.broadcast(matrix.T)
def func(iterator):
userFeaturesArray = []
userArray = []
for x in iterator:
userArray.append(x[0])
userFeaturesArray.append(x[1])
userFeatureMatrix = np.matrix(userFeaturesArray)
userRecommendationArray = userFeatureMatrix*(productFeaturesArraybroadcast.value)
mappedUserRecommendationArray = []
#Extract ratings from the matrix
i=0
for i in range(0,len(userArray)):
ratingdict={}
j=0
for j in range(0,len(productArrayBroadcast.value)):
ratingdict[str(productArrayBroadcast.value[j])]=userRecommendationArray.item((i,j))
j=j+1
#Take the top 8 recommendations for the user
sort_apps=sorted(ratingdict.keys(), key=lambda x: x[1])[:8]
sort_apps='|'.join(sort_apps)
mappedUserRecommendationArray.append((userArray[i],sort_apps))
i=i+1
return [x for x in mappedUserRecommendationArray]
recommendations=model.userFeatures().repartition(2000).mapPartitions(func)
PySpark> = 1.6.0提供MatrixFactorizationModel.recommendProductsForUsers:
>> model.recommendProductsForUsers(3).take(2)
[(1,
(Rating(user=1, product=2975, rating=0.003626774788608227),
Rating(user=1, product=1322, rating=0.002494393082165332),
Rating(user=1, product=8746, rating=0.002176665942528324))),
(2,
(Rating(user=2, product=4060, rating=0.011020947406565042),
Rating(user=2, product=2332, rating=0.009479319983658458),
Rating(user=2, product=1979, rating=0.004587168057824856)))]
对于隐式评级(用户不明确评估产品),您可能不想过滤掉测试数据。 – hwaxxer
但是用户已经对该项目执行了一个操作(查看,购买,无论),我们希望将其推荐给他/她? – tokland
我们不能认为必须从结果中删除任何“评分”项目。与用户交互的用户可能是一个强烈的指标,他们喜欢该项目,并且应该向他们推荐,无论他们以前是否看过。与推荐有关的业务逻辑,比如过滤掉某些项目,最好在推荐引擎之外完成。其他API让我们做到这一点,如[predictAll(http://spark.apache.org/docs/latest/api/python/pyspark.mllib.html#pyspark.mllib.recommendation.MatrixFactorizationModel.predictAll)。 – hwaxxer
- 1. Spark ALS推荐分数
- 2. 我会如何推荐带有Mahout产品或用户推荐模型的客户的产品数量
- 3. Django的 - 如何推荐同类产品
- 4. 智能产品推荐
- 5. 如何使用Spark ALS进行多行为隐式反馈推荐
- 6. 如何解决产品推荐问题如下:用户__bought__ XXX也__viewed__ YYY
- 7. Android Things产品推荐的oem分区大小是多少?
- 8. 推荐Engin为某种“产品”之一
- 9. 为Sharepoint打印推荐产品
- 10. 如何使用angularjs在产品详细信息上显示推荐的商品?
- 11. 向客户询问一系列问题并作出产品推荐
- 12. 我该如何选择所有用户推荐ID?
- 13. 在e-commerece网站上为客户推荐同类产品
- 14. Spark mllib ALS建议
- 15. 寻找十大畅销产品
- 16. 如何使用Graphlab推荐()向新用户提供建议?
- 17. 使用spark生成大数据集的推荐模型
- 18. 如何让所有的产品名称
- 19. 如何启用所有商店中的所有产品
- 20. 如何选择最畅销的十大产品?
- 21. 使用Javascript重定向所有推荐链接
- 22. 获取Aliexpress上的产品的推荐链接(分享)链接?
- 23. 亨利马乌Recomendaton引擎推荐的产品和其数量客户
- 24. 将als推荐模型导出到文件
- 25. 使用者保存的产品列表中的所有产品
- 26. 所有可能的产品
- 27. NVM&Node.js - 为所有用户推荐安装
- 28. 在单个查询中获取所有推荐用户?
- 29. 获取用户拥有的所有产品
- 30. 大型推荐器
使用Scala,你可以用'recommendProductsForUser'但此时这个功能不是由PySpark API暴露。 – zero323