Spark ALS从MLlib生成的模型中如何处理新用户/项目?

8

目前当新用户加入时,我无法更新我的推荐系统,这显然与未添加用户和项目矩阵有关。我该在哪里找到它并如何操作呢?谢谢。

model.userFactors model.itemFactors


请问您能否解释一下您的问题或者提供一些代码示例? - Vishnu667
1
抱歉,我先用“safe”而不是“save”编辑了标题。但是我发现问题不在于保存模型,而在于(1)为新用户/项目生成推荐,即冷启动问题,以及(2)更新已计算的模型。请参见下面的答案。我希望我能给出一个更好的标题,但现在我无法编辑正在审核中的内容 :-( - Bartłomiej Twardowski
请在此处查看可能的解决方案:https://dev59.com/w57ha4cB1Zd3GeqPdAMt - Chris Snow
1个回答

17
当计算物品特征和用户特征时,模型仅准备为已知的物品和用户进行推荐。如果您有新的用户/物品,则必须应对“冷启动”问题。
但是有两件事情——让推荐适用于新用户/物品,并且另一件事是在线更新模型(特征矩阵)。
为了为新的/匿名用户准备推荐,该用户在建立模型时不在输入数据中,您必须准备其特征向量。方法是从已经看到的物品的特征中准备它,例如从用户喜欢的那些物品中计算每个特征的平均值。或者查看Oryx代码以了解构建匿名用户特征向量的方法。

如果要使用折叠技术(fold-in technique)进行模型更新,可以参考以下文献: Online-Updating Regularized Kernel Matrix Factorization Models for Large-Scale Recommender Systems. 或者查看以下代码:

  • MyMediaLite
  • Oryx - 采用Lambda架构范式构建的框架。它应该具有对新用户/项目的折叠更新。
请注意,这里所说的“近在线”更新是因为真正的在线更新是不可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接