首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据多个参数推荐内容(比如电影

如何根据多个参数推荐内容(比如电影
EN

Stack Overflow用户
提问于 2017-06-24 03:12:35
回答 2查看 862关注 0票数 1

我是Spark ML的新手。我想向使用Apache Spark ML的用户推荐电影。我学到了here,我们可以根据用户的评分推荐电影。

我的问题是,我们可以在推荐中包括其他特征,比如他的年龄,国家,电影类型,喜欢等。例如,我们有用户'U1','U2','U3‘和'U4’,他们都在看电影'M‘。生活在美国的22岁的U1也看了电影M1,M2和M3,生活在澳大利亚的50岁的U2看了电影M1,M4和M5。现在,我想推荐24岁的U3在美国生活的电影“M1”、“M2”和“M3”。也向生活在澳大利亚的21岁的U4推荐电影M1,M4和M5。

基本上,我想为年龄和国家提供一些权重。我们如何使用Spark ml实现这一点(比如使用ALS)?

EN

回答 2

Stack Overflow用户

发布于 2017-07-24 16:14:26

引入上下文信息的这个问题可以用几种不同的方式来解决:

  • 如果你必须坚持Spark和2D (用户x项目)推荐:那么就去做一个上下文相关的post/pre过滤。因为你已经有了带ALS解算器的MF,你可以通过两种方式使用它作为模型基础推荐,以实现你想要实现的目标:(1/预过滤)在为每个组创建2D MF-ALS推荐之前,根据你的上下文(例如,年龄范围,国家)对你的数据进行分组,或者(2/后过滤)在单个2D用户项目推荐上创建,然后在从模型中获得推荐后,根据上下文信息进行后过滤。在第二个选项中,你不仅可以尝试布尔过滤,还可以根据上下文匹配来提高评分值,例如基于avg(观察者年龄)的boost。
  • 将上下文信息直接用于基于模型的推荐器。这不能直接应用于core/MLlib火花矩阵分解方法。这是为2D、用户项操作准备的。但要克服这一点,您可以使用不同的基于模型的方法。我建议使用因子化机器,因为它是一个成功的上下文感知推荐模型,而且非常直观,特别是在数据准备方面。你可以在这里看到我幻灯片中的介绍:Intro to FM slides。有一个用于Apache Spark的包- Spark libFM Package,但不能透露任何关于它的信息-它是真的在工作还是仍然在维护(?)。
  • do kNN推荐你在比较user2user的同时介绍你自己的相似性度量。它是一个启发式的基础,在那里你可以提高相似度得分,其中关于两个用户的上下文信息都匹配-例如使用类似于: abs(u1.age - u2.age)/(max(age) - min(age),u1和u2之间的国家、城市或地区距离。

我还建议阅读推荐系统Handbook6中关于向推荐系统介绍上下文信息的章节。当然还有整本书!

6: Kantor,Paul B.推荐系统手册。艾兹。弗朗西斯科·里奇,利奥尔·罗卡奇和布拉查·夏皮拉。柏林,德国::施普林格,2015。

票数 5
EN

Stack Overflow用户

发布于 2017-06-24 03:39:49

我用Apache Spark MLlib做了一个关于电影推荐系统的项目。我得到了codementor的帮助。您可以找到教程here

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

https://stackoverflow.com/questions/44728476

复制
相关文章

相似问题

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