如何使用基于KNN的Item Recommender从命令行运行mahout?

时间:2014-05-08 21:30:58

标签: hadoop knn mahout-recommender

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

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

我有几个问题:

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

  2. Assumming(1)是正确的,mahout是否支持从命令行运行基于KNN的推荐程序?有人能指导我这么做吗?

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

  4. 谢谢!

1 个答案:

答案 0 :(得分:2)

KNN正在被弃用,因为它被替换为基于项目和基于用户的同伴推荐器和ALS-WR推荐器,它们更好,更现代。

  1. 是的,但并非所有代码都有CLI界面。在大多数情况下,Mahout中的CLI作业是Hadoop /分布式作业,它们在HDFS中生成文件以进行输出。这些可以从jar文件中运行,并使用您自己的代码包装它们,因为您必须使用没有CLI的本地/非分布式/非Hadoop版本。内存中的推荐器要求您传入用户ID以获取recs,因此您必须编写代码才能执行此操作。 Hadoop版本确实有CLI,因为它们会预先计算所有用户的所有rec并将它们放入文件中。您可能会将它们插入到数据库中或以其他方式提供它们。
  2. 不,据我所知,命令行仅支持基于用户,基于项目和ALS-WR推荐器。这将运行推荐器的Hadoop /分布式版本。这可以在一台机器上运行,当然甚至可以使用本地文件系统,因为Hadoop可以这样设置。
  3. 对于内存中的推荐者,只需编写驱动程序代码并在eclipse中运行它们,因为Hadoop不参与它可以正常工作。如果您想使用Hadoop版本,请在您的开发机器上设置Hadoop以使用本地文件系统在本地运行,并且在eclipse中一切正常。调试完成后,将其移至Hadoop集群。您也可以在群集上远程调试,但这是另一个问题。
  4. Mahout推荐人的最新成果是使用Hadoop在后台训练,然后输出由Solr索引。然后,您使用用户表示首选项的项查询Solr,无需预先计算所有用户的所有rec,因为他们几乎实时地从Solr查询返回。这是在Mahout 1.0-SNAPSHOT的mahout / examples /或https://github.com/pferrel/solr-recommender

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

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