7

给定一个MatrixFactorizationModel返回完整的用户产品预测矩阵的最有效方法是什么(实际上,通过某个阈值过滤以保持稀疏性)?

通过当前的 API,曾经可以将用户产品的笛卡尔积传递给 predict 函数,但在我看来,这会做很多额外的处理。

访问私有的 userFeatures、productFeatures 是否是正确的方法,如果是这样,是否有一种好方法可以利用框架的其他方面以有效的方式分配此计算?具体来说,有没有比“手动”乘以所有对 userFeature、productFeature 更好的简单方法?

4

2 回答 2

5

Spark 1.1 有一个recommendProducts可以映射到每个用户 ID 的方法。这总比没有好,但并未真正针对推荐给所有用户进行优化。

我会仔细检查您是否真的打算为每个人提出建议;在规模上,这本质上是一个非常缓慢的操作。考虑仅针对最近活跃的用户进行预测。

否则,是的,您最好的选择是创建自己的方法。特征 RDD 的笛卡尔连接可能太慢了,因为它洗牌了很多特征向量的副本。选择较大的用户/产品功能集,并将其映射。在每个工作人员中,将其他产品/用户功能集保存在每个工作人员的内存中。如果这不可行,您可以使其更复杂,并多次映射内存中较小 RDD 的子集。

于 2014-10-12T15:52:31.083 回答
0

从 Spark 2.2 开始,recommendProductsForUsers(num)将是该方法。

为所有用户推荐前“num”个产品。每个用户返回的推荐数量可能少于“num”。

https://spark.apache.org/docs/2.2.0/api/python/pyspark.mllib.html

于 2017-12-13T00:17:14.727 回答