我对 mahout 有点困惑:我的印象是有两种使用方法:
mahout recommenditembased --input input/recommend_data.csv --output output/recommendation --similarityClassname SIMILARITY_PEARSON_CORRELATION
如图here . -> 是正确的还是一样的?
我的问题是:我有一个 csv 输入文件,格式如下:user_id、item_id、rating。我有 100 000 行,我需要每天为所有用户计算推荐。我读过没有hadoop应该没问题,但事实并非如此:我创建的.jar适用于小批量但不适用于整个输入文件。
命令行方法在 5 分钟内工作,这还可以,但它不如 jar 项目灵活(最重要的是与 MySQL 数据库的接口(interface))。
是否可以使用 .jar 并从 hadoop 中受益?
由于我没有分发任何计算(hadoop 在一台服务器上运行),在 .jar-without-mahout 方法和命令行-with-hadoop 方法之间存在这种差异是否正常?
非常感谢您的帮助!
最佳答案
100000 行并不是很多数据。我相信你不需要使用推荐算法的分布式版本,即使它运行在伪分布式模式下(只有一台机器)。
您可以轻松地使用 API 来构建您自己的非分布式推荐器。这是 Mahout in Action 书中的一个示例(我推荐阅读) [link] .在这种情况下,他们使用的是基于相似用户的推荐器,从我在您的问题中看到的,您使用的是基于相似项目的推荐器。
要使用项目相似性制作一个,您需要使用 ItemSimilarity
而不是 UserSimilarity
.同样,而不是 GenericUserBasedRecommender
你会使用 GenericItemBasedRecommender
.然后,当然,您将遍历所有用户并要求为每个用户提供建议。
希望这可以帮助。
关于hadoop - 使用 mahout : difference between running a . jar 并输入控制台指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15251838/