前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >百度电影推荐系统比赛——初步推荐算法实践

百度电影推荐系统比赛——初步推荐算法实践

作者头像
机器学习AI算法工程
发布于 2018-03-12 09:38:06
发布于 2018-03-12 09:38:06
3.9K0
举报

前一阵子参加了百度的电影推荐系统创新比赛。http://openresearch.baidu.com/activitycontent.jhtml?channelId=284 。 之前没有实现过推荐算法,想趁这次机会锻炼一下。虽然成绩并不好,RMSE只有0.6214,没有挤进前30。

任务描述:从用户的历史评分数据:userid,movieid,rating, 即用户对某个电影的评分,预测用户将会对一个未评分的电影打多少分。主办方还提供了用户的朋友关系,电影的类别等信息,但是这些我都没用上(原因最后分析),所以就只关心用户的历史行为数据。

这是一个评分预测问题。主要有两种途径:1 协同过滤 和 2 基于内容的过滤。 其中协同过滤用的最多,我也只实现了它。下面都是协同过滤的算法。

1 User-based collaborative filtering 基于用户的协同过滤

用户u和用户v有各自的评分记录 rating_list, 基于这个历史评分记录,我们可以计算u和v的相似度。相似度的计算公式有很多种,比如余弦相似度、皮尔森相似度等。(具体的公式可以网上搜)。我使用的是自己改进的公式(因为自己觉得比较靠谱):

其中N(u)指u评过分的电影集合。dis就是指两个评分的绝对值差。因为电影评分都是1~5之间的,比如u评分5,v评分4,那么dis就是1, 2-1=1, 对w_uv有1的正分贡献。除以Log(1+N(i))的原因:如果电影很流行,比如泰坦尼克号,大家都看,那么对u和v的相似度影响应该小;相反,如果看过电影i的人很少,比如电梯里的恶魔,那么i对u和v用户的影响就应该更大。

现在有了用户之间的相似度关系。要预测用户u对电影i的评分。取出所有对i评过分的用户。从中取出相似度最高的K个用户,以他们的打分做加权平均,得到的分数就是对用户u的预测。所以有些人也把这种算法称为“基于邻居”的预测。(knn)

技巧: 做加权平均的时候,权值一般设为相似度w。但是有学者认为权值要经过训练估计,得到的结果比较好。“Modeling relationships at multiple scales to improve accuracy of large recommender systems”

结果: RMSE = 0.6638

2 Item-based collaborative filtering 基于物品的协同过滤

和user-based思路基本一样,只不过,刚才是计算用户之间的相似度,现在换成计算电影间的相似度。有点类似对偶问题。

效果:RMSE=0.6483

点评:据经验总结,Item-based 的效果比user-based好,而且占内存小。因为电影的数量要比用户的数量少很多。

把 user-based 和item-based的结果加权: RMSE= 0.6343

3 SVD和pmf

下面就谈谈最流行的矩阵分解途径吧。 参考的是两篇论文"matrix factorization techniques for recommender systems" 和 "Probabilistic matrix factorization"

把用户-电影 评分看成一个矩阵,r ui 表示u对电影i的评分。这个矩阵是很稀疏的,很多元素都缺失。一般来说填充率不到1%。然后假定每个用户u都有一个D维的向量,表示他对不同风格的电影的偏好,每个电影i也有一个D维的向量表示不同风格的用户对它的偏好。 于是电影的评分矩阵可以这样来估计:

p 和q就是D维的向量。用梯度下降法训练p和q,迭代几十次就收敛了。但是这样的SVD很容易就过拟合,所以需要加一些约束。具体的约束请看那两篇论文,这里只将一种:要优化的目标函数变为:

对它求导,可以发现每次迭代的时候,p和q的更新公式变成:

加入了一些约束之后,就可以避免过拟合。或许有些人不知道什么是过拟合的后果,这里顺便也把图贴上来:

虚线的线,前期RMSE下降的很快,后来又上升了,成V型,就是过拟合的表现了。

还有一种 bayesian probabilistic matrix factorization(http://www.utstat.toronto.edu/~rsalakhu/BPMF.html ), 效果很赞,有源码,可以直接使用。

效果: RMSE= 0.6302

4 后处理

主要针对特殊用户。 1 是评分很少的用户,比如评分数只有7个以下的。经统计这些用户的评分,猜测这些人是精心挑选好电影看的,所以给他们的打分直接设成平均分多一分。

2 是评分一直很稳定的用户。有两种情况,一种是电影托,第二是用户比较随意,随意给分的。所以对他们的结果,直接预测为他们历史的平均值。

5 各种算法的加权平均

最后把几种算法的结果加权平均起来,RMSE=0.6214。 前netflix冠军队是整合了他们的108个模型的结果,对此我只能呵呵了。"the BellKor solution to the Netflix Prize"

最后,因为是我第一次参加推荐系统的实践,很多经验都不足,希望能多和大家交流切磋。


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据挖掘DT数据分析 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
推荐算法设计综述
http://www.tensorinfinity.com/paper_178.html
SIGAI学习与实践平台
2019/06/20
1.2K0
推荐算法设计综述
二十行代码!我用Spark实现了电影推荐算法
很久之前,就有人问我如何做一个基于大数据技术的xx推荐系统。当时对于这个问题,着实难倒我了,因为当时只是知道一个协同过滤,其他的也没有过于深度研究。
叫我阿柒啊
2024/10/09
8270
二十行代码!我用Spark实现了电影推荐算法
推荐系统中基于深度学习的混合协同过滤模型
近些年,深度学习在语音识别、图像处理、自然语言处理等领域都取得了很大的突破与成就。相对来说,深度学习在推荐系统领域的研究与应用还处于早期阶段。 携程在深度学习与推荐系统结合的领域也进行了相关的研究与应用,并在国际人工智能顶级会议AAAI 2017上发表了相应的研究成果《A Hybrid Collaborative Filtering Model with Deep Structure for Recommender Systems》,本文将分享深度学习在推荐系统上的应用,同时介绍携程基础BI团队在这一领域上
CSDN技术头条
2018/02/12
1.7K0
推荐系统中基于深度学习的混合协同过滤模型
推荐算法之协同过滤
刘建银
2017/07/20
4.9K0
推荐算法之协同过滤
【算法】推荐算法--协同过滤
协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。
陆勤_数据人网
2018/07/30
6.3K0
【算法】推荐算法--协同过滤
协同过滤算法概述与python 实现协同过滤算法基于内容(usr-item,item-item)
协调过滤推荐概述   协同过滤(Collaborative Filtering)作为推荐算法中最经典的类型,包括在线的协同和离线的过滤两部分。所谓在线协同,就是通过在线数据找到用户可能喜欢的物品,而离线过滤,则是过滤掉一些不值得推荐的数据,比比如推荐值评分低的数据,或者虽然推荐值高但是用户已经购买的数据。   协同过滤的模型一般为m个物品,m个用户的数据,只有部分用户和部分数据之间是有评分数据的,其它部分评分是空白,此时我们要用已有的部分稀疏数据来预测那些空白的物品和数据之间的评分关系,找到最
学到老
2018/04/18
7.7K0
协同过滤算法概述与python 实现协同过滤算法基于内容(usr-item,item-item)
协同过滤推荐算法(一)原理与实现
协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)。简单的说就是:人以类聚,物以群分。下面我们将分别说明这两类推荐算法的原理和实现方法。
全栈程序员站长
2022/09/07
3.4K0
协同过滤推荐算法(一)原理与实现
从原理到落地,七大维度详解矩阵分解推荐算法
导语:作者在《协同过滤推荐算法》这篇文章中介绍了 user-based 和 item-based 协同过滤算法,这类协同过滤算法是基于邻域的算法(也称为基于内存的协同过滤算法),该算法不需要模型训练,基于非常朴素的思想就可以为用户生成推荐结果。还有一类基于隐因子(模型)的协同过滤算法也非常重要,这类算法中最重要的代表就是本节我们要讲的矩阵分解算法。矩阵分解算法是 2006 年 Netflix 推荐大赛获奖的核心算法,在整个推荐系统发展史上具有举足轻重的地位,对促进推荐系统的大规模发展及工业应用功不可没。
AI科技大本营
2019/08/26
2.9K0
从原理到落地,七大维度详解矩阵分解推荐算法
推荐系统之矩阵分解家族
本文主要围绕推荐系统中经典的矩阵分解技术展开讨论,先阐述推荐系统的必要性以及主流分类,随后介绍推荐系统的两大场景以及矩阵分解原理,最后开始介绍矩阵分解大家族,从最经典的FunkSVD开始讲起,随后介绍一些对于它的经典扩展(模型方面和数据层面),或者从另一个概率角度来解释矩阵分解,或者提出一些其他的经典假设,以期给读者一个更加清晰的认识,即矩阵分解作为推荐系统的经典,可以在此基础上延伸出许多经典模型,只要读者能够对其足够了解,相信有朝一日,你也可以创造出属于自己滴经典!
张小磊
2020/04/20
7850
【干货】基于协同过滤的推荐系统实战(附完整代码)
【导读】本文使用Python实现简单的推荐系统,分别实践了基于用户和基于商品的推荐系统,代码使用sklearn工具包实现。除了代码实现外,还分别从理论上介绍了两种推荐系统原理:User-Based Collaborative Filtering 和 Item-Based Collaborative Filtering,并讲解了几种常见的相似性度量方法及它们分别适用场景,还实现了推荐系统的评估。最终分析两种推荐系统的优劣,说明混合推荐技术可能具有更好的性能。 作者 | Chhavi Saluja 编译 | 专
WZEARW
2018/04/13
14.5K0
【干货】基于协同过滤的推荐系统实战(附完整代码)
协同过滤推荐算法
相信大家对推荐系统已经很熟悉了,它通过分析用户的历史行为,挖掘用户的兴趣爱好,预测并推荐给用户其接下来有可能感兴趣的事物,例如商品推荐、音乐推荐、新闻以及最近很火的短视频推荐等等。
小萌哥
2020/07/21
1.5K0
协同过滤推荐算法
写给设计师的人工智能指南:推荐系统
本期更新第6篇文章, 聊聊“推荐系统”。 推荐系统核心的是推荐算法,常用有这几种: 基于内容推荐 协同过滤推荐 基于关联规则推荐 基于效用推荐 基于知识推荐 组合推荐。 最常用的还是组合推荐 Hybrid Recommendation 由于各种推荐方法都有优缺点,所以在实际中,组合推荐经常被采用。 最简单的做法就是分别用基于内容的方法和协同过滤推荐方法去产生一个推荐预测结果,然后用某方法组合其结果。 用的最多的是协同过滤算法,这也是本文要重点介绍的。 协同过滤推荐 Collaborative Filteri
mixlab
2018/04/16
1.1K0
写给设计师的人工智能指南:推荐系统
推荐算法理论(一):协同过滤
本文是推荐算法理论系列的第一篇文章, 还是想从最经典的协同过滤算法开始。虽然有伙伴可能觉得这个离我们比较久远,并且现在工业界也很少直接用到原始的协同过滤, 但协同过滤的思想依然是非常强大,因为它借助于群体智能智慧,仅仅基于用户与物品的历史交互行为,就可以发掘物品某种层次上的相似关系或用户自身的偏好。这个过程中,可以不需要太多特定领域的知识,可以不需要物品画像或用户画像本身的特征,可以采用简单的工程实现,就能非常方便的应用到产品中。所以作为推荐算法"鼻祖",我们还是非常有必要先来了解一下这个算法的。
用户9656380
2022/04/14
2.8K0
推荐算法理论(一):协同过滤
探索Python中的推荐系统:协同过滤
在推荐系统领域,协同过滤是一种经典且有效的方法,它根据用户的历史行为数据或偏好信息,找到与其相似的其他用户或物品,并利用这种相似性来进行个性化推荐。本文将详细介绍协同过滤的原理、实现方式以及如何在Python中应用。
Echo_Wish
2024/03/28
3170
小白学推荐1 | 协同过滤 零基础到入门
协同过滤推荐算法是诞生最早,最为基础的推荐算法。 算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。
机器学习炼丹术
2020/08/10
6730
【深度好文】推荐系统中的深度匹配模型
关于作者 辛俊波,腾讯算法数据中心\应用算法组 导语I推荐系统和搜索应该是机器学习乃至深度学习在工业界落地应用最多也最容易变现的场景。而无论是搜索还是推荐,本质其实都是匹配,搜索的本质是给定 query,匹配 doc;推荐的本质是给定 user,推荐 item。本文主要讲推荐系统里的匹配问题,包括传统匹配模型和深度学习模型。 深度学习之风虽然愈演愈烈,但背后体现的矩阵分解思想、协同过滤思想等其实一直都是贯穿其中,如 svd++ 体现的 userCF 和 itemCF 的思想,FM 模型本质上可以退化成以上
腾讯大讲堂
2020/02/12
2.2K0
【深度好文】推荐系统中的深度匹配模型
协同过滤的原理及Python实现
作者:李小文,先后从事过数据分析、数据挖掘工作,主要开发语言是Python,现任一家小型互联网公司的算法工程师。
Python中文社区
2018/12/07
9180
推荐算法三视角: 矩阵, 图, 时间线
关于推荐系统,如果在忘掉所有的公式和代码,忘记所有的语言描述,脑海里就剩下几张图景,会是什么?一张二维表格,一个拓扑图,一条时间线。这三幅图景,是我看待推荐算法的三种视角。
张小磊
2020/04/20
7520
协同过滤技术在推荐系统中的应用
协同过滤(Collaborative Filtering)是推荐系统中最常用和最有效的技术之一。它基于用户和项目之间的交互数据来进行推荐,而无需了解项目的具体内容。协同过滤技术主要分为两大类:基于用户的协同过滤(User-based Collaborative Filtering)和基于项目的协同过滤(Item-based Collaborative Filtering)。以下是协同过滤技术在推荐系统中的详细应用介绍。
数字扫地僧
2024/08/07
3550
电影推荐系统的实现与优化
随着互联网的发展和数字内容的丰富,电影推荐系统已成为提高用户体验和平台运营效率的关键技术。电影推荐系统利用用户的历史行为数据、电影的属性信息以及用户的反馈,向用户推荐他们可能感兴趣的电影。这种系统广泛应用于流媒体平台、在线电影网站和社交网络等。
数字扫地僧
2024/07/24
3970
相关推荐
推荐算法设计综述
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档