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

Hadoop 我应该选择哪个开源推荐系统来处理大数据集,hadoop,recommendation-engine,Hadoop,Recommendation Engine,我想建立一个推荐系统,目标是处理真正的大数据集,比如1 TB的数据 每个用户都有大量的项目,但是用户数量很少,比如数千或10000 我在谷歌上搜索过,我发现有一些基于hadoop的开源推荐引擎,比如Mahout,我猜它可能有能力处理如此大的数据,但我不确定 我也发现一些引擎写在C++ Python中,甚至PHP,我认为脚本语言不能处理这样大的数据,因为内存不能包含整个数据集。 还是我错了?有人能给我一些建议吗?你的问题标题是: 我应该选择哪个开源推荐系统 大数据集 在第一行你说 我想建立一个推荐

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

每个用户都有大量的项目,但是用户数量很少,比如数千或10000

我在谷歌上搜索过,我发现有一些基于hadoop的开源推荐引擎,比如Mahout,我猜它可能有能力处理如此大的数据,但我不确定

我也发现一些引擎写在C++ Python中,甚至PHP,我认为脚本语言不能处理这样大的数据,因为内存不能包含整个数据集。


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

你的问题标题是:

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

在第一行你说

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

你要求一个建议作为答案

首先回答你的第二个问题。根据我建立推荐系统的经验,如果你能避免的话,我建议你不要从头开始“构建”推荐系统。推荐系统非常复杂,可以使用多种技术向用户提供推荐。因此,我的建议是,除非你真的很投入,并且有一个在推荐系统、统计和软件工程方面拥有丰富经验和知识的团队,然后寻求实现现有的推荐系统,而不是构建自己的推荐系统

就您应该选择哪种开源推荐系统而言,这实际上很难精确地回答。让我试着通过分解来回答这个问题

  • 考虑开源许可证、其限制和您的要求
  • 考虑您希望使用哪种算法来提出建议
  • 考虑运行推荐系统的环境
  • 我建议您更多地研究算法方面,因为它将是决定您可以使用哪种工具的因素,或者您是否需要使用自己的工具。从这里开始阅读,了解推荐系统使用的不同方法。总之,不同的方法是:

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

    在你的情况下,要保持相对简单,听起来你应该考虑一个用户-用户协同过滤算法。原因是:

  • 邻里协作过滤是非常直观的理解,它可以相对容易地实现
  • 使用此方法,您还可以以基本方式向用户证明您的建议
  • 无需建立培训模型,邻居的处理可以“离线”完成,以便向最终用户提供快速建议
  • 存储邻居实际上相当节省内存,这意味着更好的可伸缩性。听起来你需要很多东西
  • 我建议的基于用户的部分是因为听起来你的用户比你的项目少。在基于用户的最近邻区中,通过查看也对项目I进行评分且与用户U最为相似的其他用户,计算用户U对新项目I的预测评分。由于系统中的用户少于项目,因此与基于项目的协作过滤相比,计算基于用户的协作过滤速度更快过滤

    在基于用户的协同过滤中,你需要考虑你想要使用的评分标准化(平均定心对Z评分),相似权重计算方法(例如余弦与Pielss.相关与其他相似性度量),你要使用的邻域选择标准。(对邻居的预过滤、预测中涉及的邻居数量)和任何要实现的降维方法(SVD,SVD + +)(用像你这样的大数据集,你会想认真考虑DM)。 <>所以,实际上,不是寻找能够处理数据集的开放源代码,而是首先考虑算法选择,然后寻找一种工具,该工具具有该算法的实现,然后评估它是否可以处理数据集中涉及的卷。 综上所述,如果您选择了基于用户的协同过滤路线,那么我相信ApacheMahout将能够解决您的问题,如果不是,它肯定会帮助您理解构建自己的系统所涉及的复杂性(只需查看他们的源代码)

    请注意,建议是真正考虑算法的选择。“好”推荐系统不仅仅是能够处理大型数据集,还需要考虑准确度、覆盖度、信心、新颖性、偶然性、多样性、健壮性、隐私性、风险用户信任度以及最终的可扩展性。还应该考虑如何进行实验和评估建议,记住。如果你所做的推荐都是垃圾,让你的用户感到厌烦,那么建立推荐系统就没有意义了

    这是一个需要思考的大领域,可能没有一个单一的工具可以帮助您完成所有事情,所以请准备好进行大量的阅读和研究,并实现许多不同的开源工具来帮助您

    说到这里,先看看ApacheMahout。回到我说过的你应该考虑的3个方面

  • 它有一个商业友好的开源许可证
  • 它实现了您可能需要使用的算法,并且