0

我是 mahout 的新手,仍在努力解决问题。

我正在尝试使用在 hadoop 集群(分布式推荐器)中运行的 mahout 0.8 运行基于 KNN 的推荐器。我正在使用 mahout 0.8,因此不推荐使用 KNN,但它仍然可用(至少当我在 java 代码中制作它时)

我有几个问题:

  1. 基本上有两个 mahout 实现是真的吗?分布式(从命令行运行) 非分布式(从 jar 文件运行)

  2. 假设 (1) 是正确的,mahout 是否支持从命令行运行基于 KNN 的推荐器?有人可以给我一个方向吗?

  3. 假设(1)是错误的,如何在 java(我正在使用 eclipse)中构建一个在 hadoop 集群(分布式)中运行的推荐器?

谢谢!

4

1 回答 1

2

KNN 已被弃用,因为它正在被基于项目和基于用户的共现推荐器和 ALS-WR 推荐器所取代,这些推荐器更好、更现代。

  1. 是的,但并非所有代码都有 CLI 界面。Mahout 中的 CLI 作业大部分是 Hadoop/分布式作业,它们在 HDFS 中生成文件以供输出。这些可以使用您自己的代码包装它们的 jar 文件运行,就像您必须使用没有 CLI 的本地/非分布式/非 Hadoop 版本一样。内存推荐器要求您传递用户 ID 以获取 recs,因此您必须编写代码来执行此操作。Hadoop 版本确实有一个 CLI,因为它们预先计算了所有用户的所有记录并将它们放入文件中。您可能会将它们插入您的数据库或以其他方式提供它们。
  2. 不,据我所知,命令行仅支持基于用户、基于项目和 ALS-WR 的推荐器。这会运行推荐器的 Hadoop/分布式版本。这可以在单台机器上工作,当然甚至可以使用本地文件系统,因为 Hadoop 可以这样设置。
  3. 对于内存推荐器,只需编写驱动程序代码并在 eclipse 中运行它们,因为不涉及 Hadoop,它可以正常工作。如果您想使用 Hadoop 版本,请在您的开发机器上设置 Hadoop 以使用本地文件系统在本地运行,并且在 eclipse 中一切正常。调试好东西后,将其移至 Hadoop 集群。您也可以在集群上远程调试,但这完全是另一个问题。

Mahout 推荐器中的最新功能是使用 Hadoop 在后台进行训练,然后由 Solr 对输出进行索引。然后,您使用用户表达了偏好的项目查询 Solr,无需预先计算所有用户的所有记录,因为它们是近乎实时地从 Solr 查询返回的。这是在 Mahout 1.0-SNAPSHOT 的 mahout/examples/ 或这里https://github.com/pferrel/solr-recommender

顺便说一句,这段代码正在与 Mahout 1.0 集成,并转移到 Spark 而不是 Hadoop 上运行,因此即使是训练步骤也会快得多。

更新:我已经澄清了可以从上面的 CLI 运行的内容。

于 2014-05-09T22:19:41.983 回答