gpt4 book ai didi

apache-spark - 如何更新 ALS 的 Spark MatrixFactorizationModel

转载 作者:行者123 更新时间:2023-11-30 08:22:23 25 4
gpt4 key购买 nike

我为 MovieLens DB 构建了一个简单的推荐系统,灵感来自 https://databricks-training.s3.amazonaws.com/movie-recommendation-with-mllib.html .

我在显式训练方面也遇到问题,如下所示:Apache Spark ALS collaborative filtering results. They don't make sense使用隐式训练(对显式数据和隐式数据)可以给我带来合理的结果,但显式训练却不能。

虽然现在这对我来说没问题,但我很好奇如何更新模型。虽然我当前的解决方案的工作方式类似于

  1. 拥有所有用户评分
  2. 生成模型
  3. 为用户获取推荐

我想要这样的流程:

  1. 拥有评级基础
  2. 生成模型一次(可选保存和加载)
  3. 获取一位用户对 10 部随机电影的评分(不在模型中!)
  4. 使用模型和新用户评分获取推荐

因此我必须更新我的模型,而不是完全重新计算它。有机会这样做吗?

虽然第一种方法适合批处理(例如在每晚批量生成推荐),但第二种方法适合近乎实时生成推荐。

最佳答案

编辑:以下内容对我有用,因为我有隐式反馈评级,并且只对新用户的产品排名感兴趣。更多详情here

<小时/>

您实际上可以使用经过训练的模型(无需更新)来获得新用户的预测:

要获得模型中用户的预测,您可以使用其潜在表示(大小为 f(因子数)的向量 u),该向量乘以产品潜在因子矩阵(由所有产品的潜在表示组成的矩阵) ,一堆大小为 f) 的向量,并为您提供每个产品的分数。对于新用户,问题是您无法访问他们的潜在表示(您只有大小 M(不同产品的数量)的完整表示,但您可以做的是使用相似性函数来计算类似的潜在表示)通过将其乘以乘积矩阵的转置来表示该新用户。

即如果您的用户潜在矩阵是 u 并且您的产品潜在矩阵是 v,对于模型中的用户 i,您可以通过执行以下操作获得分数: u_i * v对于新用户,您没有潜在表示,因此采用完整表示 full_u 并执行: full_u * v^t * v这将近似新用户的潜在因素,并应给出合理的推荐(如果模型已经为现有用户提供合理的推荐)

为了回答训练问题,这使您可以计算新用户的预测,而无需对模型进行大量计算,而您现在只能偶尔进行一次。这样你就可以在晚上进行批处理,并且仍然可以在白天对新用户进行预测。

注意:MLLIB 使您可以访问矩阵 u 和 v

关于apache-spark - 如何更新 ALS 的 Spark MatrixFactorizationModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com