对于基于Mahout Item的CF,Hadoop集群中的数据太多,机器不够



在工作中,我试图基于Mahout的基于项目的CF包构建一个基于项目的推荐系统。以下是我们正在处理的问题:

用户数量:6000000项目数量:200000首选项:10000000000

如果我们的Hadoop集群中有数百台机器,我们可能能够在几个小时内完成RecommenderJob。然而,问题是,由于我们是一个小型初创公司,我们的Hadoop集群在这个阶段只有大约10台机器。理想情况下,我们希望每隔几天运行一次推荐作业。

为了了解问题的规模,我们在一小部分数据上应用了Mahout的基于项目的CF:

用户数量:100000项目数量:80000优惠:3000000

在Hadoop集群上,RecommenderJob花费的时间大约为10分钟。

我的问题是,考虑到我们的硬件限制(短期内不太可能改变),我们能做些什么来加快使用Mahout的基于项目的CF的速度?

您似乎遇到了推荐系统的标准缩放问题。在您的情况下,您应该将分析分为多个部分。

  1. 项目-项目相似度计算部分
  2. 用户项目推荐部分使用项目项目相似度值

重点是,有很多评分的项目之间的相似性不会有太大变化。而这恰恰是代价高昂的部分。这意味着你只能计算一次它们的相似性,并在很长一段时间后(几周、几个月?)再计算一次。你可以评估它们在一周、两周后的变化程度。然后,你只需要计算每天评分较少的项目的项目相似性——当然,如果它们有新的评分!在推荐引擎领域,评级过低本身就是一个问题。我现在不谈这个。

因此,当你有了最新的项目相似性列表时,你可以根据它们进行用户项目推荐。如果你的物品数量变化不大,那么这是一个恒定的时间操作。这可以在用户访问应用程序时实时完成。因此,无需为永远不会回来的用户计算推荐。用户项目的预测评级基本上是由该用户通过项目相似性得分加权的所有项目的总和。你需要检查驯马师是否提供

最新更新