gpt4 book ai didi

mahout - 在 Mahout 中实现 SVD 推荐器

转载 作者:行者123 更新时间:2023-12-02 11:56:03 27 4
gpt4 key购买 nike

我有一个包含 5000 万个用户偏好的数据集,其中包含 800 万个不同的用户和 18 万个不同的产品。我目前正在使用 bool 数据模型,并有一个基于谷本相似性的基本推荐器。我正在尝试探索不同的算法以获得更好的推荐,并从 SVD 和 ALSWR 因子分解器开始。我使用了 mahout 中提供的基本 SVD 推荐器,如下所示。

DataModel dataModel = new FileDataModel("/FilePath");

ALSWRFactorizer 分解器 = new ALSWRFactorizer(dataModel, 50, 0.065, 15);

recommender = new SVDRecommender(dataModel, Factorizer);

根据我的基本理解,我相信分解是离线进行的,它创建了用户特征和项目特征。而实际的请求是通过用户向量和所有可能的项目向量的点积来计算用户的顶级产品来提供的。

我对这种方法有一些疑问:-

  1. 选择因式分解参数的最佳方式是什么以及如何选择因式分解通常需要多少时间?我尝试使用上述参数,分解本身运行了 30 多分钟。
  2. 有没有一种方法可以更快地处理实时请求,例如采用点积使用所有可能的项目向量会导致请求时间较长?有离线SVD之类的东西吗?
  3. 看看我拥有的数据集的大小,我是否应该尝试其他分解器?

最佳答案

我想一起回答你们所有的问题。

考虑到数据的大小和实时请求,您应该采取另一种方法。

  1. 进行离线项目间相似度计算,对于具有大量评分的项目不需要经常进行计算。他们大多不会改变。您可能需要重新计算评分很少的项目。
  2. 使用项目-项目相似度列表实时计算每个用户的用户-项目评分预测。此操作的成本并不高,因为您的项目比用户少得多。当项目大小变化不大时,这也是一个恒定时间操作。

关于mahout - 在 Mahout 中实现 SVD 推荐器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20632013/

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