recommendation-engine - 如何处理推荐系统的新数据?

标签 recommendation-engine prediction collaborative-filtering online-algorithm

这是一个理论问题。假设我已经实现了两种类型的协同过滤:基于用户的 CF 和基于项目的 CF(以 Slope One 的形式)。

我有一个很好的数据集供这些算法运行。但是我想做两件事:

  1. 我想向数据集添加一个新的评级。
  2. 我想编辑现有评级。

我的算法应该如何处理这些变化(不做很多不必要的工作)?谁能帮我解决这个问题?

最佳答案

对于这两种情况,策略非常相似:

基于用户的 CF:

  • 更新受影响用户的所有相似性(即相似性矩阵中的一行和一列)
  • 如果您的邻居是预先计算的,请为受影响的用户计算邻居(对于完整更新,您可能需要重新计算所有邻居,但我会坚持使用近似解决方案)

坡度一:

  • 更新受影响项目的频率(仅在“添加”情况下)和差异矩阵条目(同样,一行和一列)

备注:如果你的'相似度'是不对称的,你需要更新一行一列。如果它是对称的,则更新一行会自动导致更新相应的列。 对于斜率一,矩阵是对称的(频率)和偏斜对称的(差异),所以如果你处理你还需要更新一行或一列,并免费获得另一行(如果你的矩阵存储是这样工作的)。

如果您想查看如何实现的示例,请查看 MyMediaLite(免责声明:我是主要作者):https://github.com/zenogantner/MyMediaLite/blob/master/src/MyMediaLite/RatingPrediction/ItemKNN.cs 有趣的代码在方法 RetrainItem() 中,它是从 AddRatings() 和 UpdateRatings() 调用的。

关于recommendation-engine - 如何处理推荐系统的新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12466842/

相关文章:

python - 如何使用 LSTM Keras 预测 future 股票

c++ - 使用多个连续观测变量的隐马尔可夫模型

scala - 加快Spark MLLib中大型数据集的协作过滤

algorithm - 超越逐项推荐

neo4j - 查询可以阻止 Neo4j 工作吗

python - 我怎样才能预测我的变量

recommendation-engine - 对于完全相关的集合, PIL 逊相关性失败

machine-learning - Apache Spark ALS协作过滤结果。他们没有道理

apache-spark - 使用 ALS.recommendation 得到错误的推荐

search - 搜索引擎的相关性排名和推荐系统之间的区别