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

Posted

技术标签:

【中文标题】如何处理由 MLlib 生成的 Spark ALS 模型中的新用户/项目?【英文标题】:How can I handle new users/items in model generated by Spark ALS from MLlib? 【发布时间】:2016-08-11 22:18:16 【问题描述】:

目前,当有新用户出现时,我无法更新我的推荐系统,这显然与未添加用户和项目矩阵有关。 我在哪里可以找到这个以及如何做到这一点?谢谢

model.userFactors 模型.itemFactors

【问题讨论】:

能否请您解释一下您的问题或提供一些代码示例 对不起,我首先用“安全”一词编辑了标题,并替换了“保存”。但正如我所见,问题不在于保存模型,而在于 (1) 为新用户/项目 (a.k.a cold-start problem) 生成推荐和 (2) 更新已计算的模型。请看下面我的回答。我希望我给了一个更好的标题,但现在我无法编辑正在审查的内容:-( 查看此处了解可能的解决方案:***.com/questions/41537470/… 【参考方案1】:

当计算项目特征和用户特征时,模型仅准备为已知项目和用户推荐。如果您有新用户/项目,您必须应对 冷启动 问题。

但有两件事 - 为新用户/项目提供推荐,另一件事是近乎在线地更新模型(特征矩阵)。

为了为新/匿名用户准备推荐,在构建模型时输入数据中没有,您必须准备它的特征向量。该方法是从已经看到的项目的特征(或您认为“喜欢”的任何类型的交互)中准备它,例如从用户喜欢的那些项目中计算每个特征的平均值。或者看building anonymous user feature vector的方法的Oryx代码

使用折叠技术更新您的模型接近在线(我写接近,因为面对现实,真正的在线更新是不可能的),例如: Online-Updating Regularized Kernel Matrix Factorization Models for Large-Scale Recommender Systems. 欧你可以看一下代码:

MyMediaLite Oryx - 使用 Lambda 架构范例构建的框架。并且它应该包含新用户/项目的更新。

【讨论】:

以上是关于如何处理由 MLlib 生成的 Spark ALS 模型中的新用户/项目?的主要内容,如果未能解决你的问题,请参考以下文章

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

大数据Spark MLlib推荐算法

交替最小二乘+ALS+推荐+Spark

基于Spark的Als算法+自迭代+Spark2.0新写法

Spark,如何添加更多存储内存?

ALS推荐算法—训练并保存—加载并测试