首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我应该选择哪个开源推荐系统来处理大数据集?

我应该选择哪个开源推荐系统来处理大数据集?
EN

Stack Overflow用户
提问于 2014-06-24 09:57:44
回答 1查看 1.1K关注 0票数 1

我想建立一个推荐系统,目标是处理真正的大数据集,比如1 TB数据。

而且每个用户都有大量的物品,但是用户的数量很小,比如数千或1万。

我从google搜索,我发现有一些基于hadoop的开源推荐引擎,比如Mahout,我想它可能有能力处理这么大的数据,但是我不确定。

我还发现一些引擎编写了C++ python,甚至php,我不认为脚本语言能够处理这么大的数据,因为内存不能包含整个数据集。

还是我错了?有人能给我一些建议吗?

EN

回答 1

Stack Overflow用户

发布于 2014-12-03 22:34:45

你的问题标题是:

我应该选择哪个开源推荐系统来处理大数据集?

在第一行你说

我想建立一个推荐系统,目标是处理真正的大数据集,>像1 TB数据。

你要求一个建议作为一个答案。

先回答你的第二个问题。根据我构建推荐系统的经验,我建议您不要从根本上“构建”推荐系统,如果您可以避免的话。推荐系统很复杂,可以使用广泛的技术为用户提供推荐。因此,我的建议是,除非您真的很投入,并且拥有一组在推荐系统、统计数据和软件工程方面具有广泛经验和知识的人员,否则您将寻求实现现有的推荐系统,而不是构建自己的推荐系统。

对于您应该选择的开放源码推荐系统,这实际上是非常难以准确回答的。让我试着通过分解来回答这个问题。

  1. 考虑一下开放源码许可证、其限制和您的需求。
  2. 考虑一下您想要使用哪种算法来提出建议
  3. 考虑一下您将运行推荐系统的环境。

我建议您更多地研究算法方面,因为它将是决定您可以使用哪个工具的因素,或者您是否需要滚动自己的工具。从这里开始阅读http://www.ibm.com/developerworks/library/os-recommender1/,了解推荐系统使用的不同方法。总之,不同的办法是:

  • 内容为基础
  • 基于邻域/协同过滤的
  • 基于约束的
  • 基于图的

在您的情况下,为了保持相对简单,听起来您应该考虑一种用户-用户协作过滤算法。原因是:

  1. 社区协作过滤是非常直观的理解,它可以相对容易实现。
  2. 使用此方法,您还可以以一种基本的方式向您的用户说明您的建议。
  3. 不需要建立培训模型,可以“离线”处理邻居,以便向最终用户提供快速建议。
  4. 存储邻居实际上非常有效,这意味着更好的可伸缩性。听起来你需要很多。

我的建议中基于用户的部分是因为听起来你的用户比你做的项目少。在以用户为基础的最近的邻居中,用户U的新项目I的预测等级是通过查看其他用户,这些用户也对I进行了评级,并且与用户U最相似,因为您的系统中的用户比项目少,因此与基于项的协作过滤相比,计算基于用户的协作过滤要快得多。

在基于用户的协作过滤中,您需要考虑您想要使用的等级规格化(均值对z-得分)、您想要使用的相似度权重计算方法(例如,Cosine vs Pearson相关性和其他相似度量)、邻域选择标准(邻居的预过滤、预测中涉及的邻居数)以及您想要实现的任何降维方法(SVD、SVD++) (对于像您这样的大型数据集,您将需要认真考虑DM)。

因此,与其寻找能够处理数据集的开放源代码,不如首先考虑算法的选择,然后寻找具有此算法实现的工具,然后评估它是否可以处理数据集中涉及的卷。

说到这一切,如果你选择沿着基于用户的协作过滤路线,那么我相信Apache Mahout将能够解决您的问题,如果不是,它肯定会帮助您理解构建自己的问题所涉及的复杂性(只需查看它们的源代码)。

请注意,建议是真正考虑算法的选择。“好”推荐系统不仅仅是能够处理大型数据集。您需要考虑准确性、覆盖率、信心、新颖性、意外、多样性、健壮性、隐私、风险用户信任,以及最终的可伸缩性。您还应该考虑如何执行实验和评估您的建议,记住,如果您正在提出的建议是垃圾,这是让您的用户关闭,那么就没有意义,有一个推荐系统!

这是一个很大的领域,有很多需要思考的地方,可能没有一个单一的工具能帮助你所有的事情,所以准备做大量的阅读和研究,以及实现许多不同的开源工具来帮助你。

说到这里,开始看看Apache。回到我说过的三个方面的崩溃,你应该考虑一下。

  1. 它有一个对商业友好的开源许可证,
  2. 它非常好地实现了您可能需要使用的算法,并且
  3. 它可以在分布式环境中工作(读可伸缩)。

希望这有帮助,祝你好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24383646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档