0

我对 mahout 有点困惑:我的印象是有两种使用方法:

  • 使用 Taste 推荐器执行 .jar
  • 使用命令行,例如这里mahout recommenditembased --input input/recommend_data.csv --output output/recommendation --similarityClassname SIMILARITY_PEARSON_CORRELATION所示。

-> 是正确的还是一样的?

我的问题是:我有一个 csv 输入文件,格式如下:user_id、item_id、rating。我有 100 000 行,我需要每天为所有用户计算推荐。我读过没有hadoop应该没问题,但事实并非如此:我创建的.jar适用于小批量但不适用于整个输入文件。

命令行方法在 5 分钟内工作,这还可以,但它不如 jar 项目灵活(最重要的是与 MySQL 数据库的接口)。

是否可以使用 .jar 并从 hadoop 中受益?由于我没有分发任何计算(hadoop 在一台服务器上运行),在 .jar-without-mahout 方法和命令行-with-hadoop 方法之间存在这种差异是否正常?

非常感谢您的帮助!

4

1 回答 1

0

100000 行并不是很多数据。我相信你不需要使用推荐算法的分布式版本,即使它以伪分布式模式运行(只有一台机器)。

您可以轻松地使用 API 来构建您自己的非分布式推荐器。这是 Mahout in Action 一书中的一个示例(我推荐阅读)[链接]。在这种情况下,他们使用的是基于相似用户的推荐器,从我在您的问题中看到的,您使用的是基于相似项目的推荐器。

要使用项目相似性制作一个,您需要使用 aItemSimilarity而不是UserSimilarity. 同样,GenericUserBasedRecommender您将使用 a 而不是 a GenericItemBasedRecommender。然后,当然,您将遍历所有用户并要求为每个用户提供建议。

希望这可以帮助。

于 2013-03-28T10:21:47.707 回答