首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用星火mlLib构建协同过滤推荐引擎

利用星火mlLib构建协同过滤推荐引擎
EN

Stack Overflow用户
提问于 2016-03-01 12:43:08
回答 2查看 591关注 0票数 1

我正在尝试构建一个基于协作过滤的推荐引擎,使用apache。我已经能够对我的数据运行recommendation_example.py,并取得了很好的效果。(MSE ~ 0.9)。我提出的一些具体问题是:

  1. 如何为未在网站上进行任何活动的用户提供建议。是否有一些API调用流行的项目,这将给我最受欢迎的项目基础上的用户行动。其中一种方法是自己识别流行项,并捕获java.util.NoSuchElementException异常,并返回那些流行项。
  2. 在输入文件中添加了一些数据之后,如何重新加载模型。我试图使用另一个函数重新加载模型,该函数试图保存模型,但它将错误作为org.apache.hadoop.mapred.FileAlreadyExistsException。一种方法是侦听并行线程上的传入数据,使用model.save(sc, "target/tmp/<some target>")保存数据,然后在收到重要数据后重新加载模型。我在这里迷失了,如何实现这一点。

如果我能在这里找到一些方向,那将是很有帮助的。

EN

回答 2

Stack Overflow用户

发布于 2016-03-01 14:46:28

对于第一部分,您可以找到item_id,item_id出现的次数。你可以使用星星之火的地图和reduceByKey函数。在此之后,找到前10/20项具有最大计数。你也可以根据最近的项目给出重量。

对于第二部分,每次都可以使用新名称保存模型。我通常使用当前的日期和时间在运行时创建一个文件夹名,并使用相同的名称从保存的文件夹重新加载模型。您将始终需要再次训练模型,使用过去的数据和收到的新数据,然后使用模型进行预测。

票数 1
EN

Stack Overflow用户

发布于 2016-03-01 22:20:58

除了使用像Spark这样的平台之外,还有一些非常好的技术(用于ex )。链接预测的非负矩阵因式分解,预测2组之间的关联.其他非常有效(和良好)的推荐技术有:- 1. Thompson抽样,2. Arm (多臂带)。很大程度上取决于原始数据集。原始数据集是如何分布的。我建议将上述方法应用于5%的原始数据集,建立一个假设,使用A/B测试,预测链接并向前推进。

同样,所有这些技术都与平台无关。我还建议从无到有,而不是使用spark这样的平台,因为这些平台只对大型数据集有用。为了实现可伸缩性,您将来总是可以迁移到这些平台。

希望能帮上忙!

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

https://stackoverflow.com/questions/35723274

复制
相关文章

相似问题

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