1

我正在迭代地构建一个基于频繁变化的概率潜在因素模型的自定义推荐系统。我已经编写了一些实现该模型的 Java 代码。它将用户-项目评分矩阵分解为两个矩阵 UxK(用户特征向量)和 IxK(项目特征向量)来估计缺失的评分。

我正在寻找最简单的方法将我的代码插入(可能通过重写)框架以构建推荐系统、基线,并能够以标准方式将它们相互比较 - 例如交叉验证以计算精度、召回率, RMSE... 由于我的系统仍然缺少这个,框架应该提供基于估计的用户项目评分矩阵计算和提出建议的方法。

看起来 Mahout 应该完成这项工作。但是,它的文档说“它目前不支持基于模型的推荐器。”。任何人都可以告诉我使用 Mahout 是否可以实现我想要实现的目标,以及是否值得花时间学习如何使用它。如果 Mahout 不适合,您能提出其他替代方案吗?

非常感谢!

4

2 回答 2

3

我会说你最好问问Mahout 邮件列表中的好人

也就是说,Mahout 提供了基于 SVD 的推荐器,这些推荐器使用不同的分解器进行矩阵计算。例如,有支持 2 种模式的 ALSWRFactorizer:

  1. 显式反馈评级矩阵的分解。见论文
  2. 分解隐式反馈变体。见论文

通过实现自己的推荐器(扩展 AbstractRecommender)或实现自己的因子分解器(扩展 AbstractFactorizer)应该很容易扩展功能。尽管如此,在不了解您的方法或实施的情况下,我真的不能说更多。

于 2013-02-08T15:20:23.433 回答
0

有两类推荐器: 基于数据(为特定用户生成推荐,例如 SVD) 基于模型(生成模型以通过用户数据构建推荐,例如 RBM)

Mahout 不支持基于模型的推荐器(没有适当的接口来执行此操作)您可以实现一些算法,但开箱即用您将无法使用基于模型的方法的某些功能。

顺便说一句,我更喜欢 MyMediaLite(如果您的数据集小到可以避免使用 Hadoop)。MML 支持集成并且有更多的算法。

于 2014-07-09T14:40:34.627 回答