电影推荐之协同过滤ranjiewen

对于基于内容的推荐不多赘述,只说下基本的概念,根据用户已经评分且喜欢(评分高)的电影,为用户推荐和他过去喜欢的电影相似的电影,这里的相似就要依据电影的"内容"来计算了,例如电影的类型等等。

利用到评分预测上,就是对于目标用户A和电影M,从A已经评价过的电影中找到与M相似的电影,利用这些电影的评分来预测用户A对M的评分。

2.协同过滤

基于用户的协同过滤通俗的来说呢,就是对于待预测的目标用户A及电影M,找到与A相似的且评价过M的用户,利用这些用户对M的评分来预测用户A对M的评分。

基于项目的协同过滤呢,可以看作是基于用户的协同过滤的对偶(暂且这么说吧)。对于待预测的目标用户A及电影M,基于项目的协同过滤就是在A已评价过的电影中找到与M相似的那些电影,利用这些电影的评分来预测用户A对电影M的评分。看到这儿,你似乎很难理解基于内容的推荐和Item-BasedCF的区别,事实上,它们的区别也确实很小,最关键性的区别就是:相似性的计算时,基于内容的推荐没有利用到用户信息,而Item-BasedCF利用了用户信息,Item-BasedCF计算两个电影M1和M2的相似性的时候,是依据用户对M1和M2的打分来计算的,例如用户A1、A2、A3对M1评分为3,3,3,用户A1、A2、A3对M2评分为3,4,3,那么M1和M2之间的相似度就是利用(3,3,3)和(3,4,3)来计算的(可用欧氏距离、余弦相似、皮尔森相似)。

3.User-Based算法实现

算法思想:

假设需要预测用户A对电影M的评分,首先对于电影M,根据训练数据集找出已经对电影M评过分的用户,然后计算A和这些用户之间的相似度,依据相似度和这些用户对M的评分,来预测用户A对电影M的评分。

根据训练数据集找出已经对电影M评过分的用户很容易,预测结果的好坏关键在于如何计算用户A和这些用户之间的相似度,以及采用何种方式来利用相似度和评分预测出用户A对电影M的评分。

1)相似度计算

已知电影1、2、3、4、5的风格如表格1:

Action

Adventure

Comedy

Crime

Drama

Fantasy

Romance

Thriller

War

1

2

3

4

5

表格1电影风格

假设用户A评价过的电影有1、3、4,用户B评价过的电影有1、2、5:

表格2用户A所选电影

表格3用户B所选电影

于是用户A和用户B的类型表示为:

A

B

表格4用户A和B的类型表示

计算A和B的相似度时,只选取A、B均有值的类型,对于没有同时有值的类型不参与计算:

表格5实际有效的A和B类型维度

至于相似度的计算方法,可采取:

计算过程中特殊情况简化处理:

2)评分预测

预测分的计算过程如下:

预测用户u对电影m的评分

3)特殊情况处理

数据结构说明:

//用于存取用户基本信息,对应userid,movieid,score

vector>users(80000);

//用户类型,用于计算相似度,对应userid,type,type的权值

vector>users_type(80000);

vector>>users_test(80000);

map>users_sim;//用于存储两个用户之间的相似度

map>movies;//用于存储电影的type

map>movie_users;//用于存储看过某个电影的用户

主程序流程图:

图2程序主体流程图

图3相似度计算流程图

5)RMSE

相似计算方法

RMSE

欧几里得距离

0.978840

余弦相似

0.979142

皮尔森相似

0.977616

数据该放在哪,具体看代码的main函数里面,自己改改路径,想放哪都行。

THE END
1.基于协同过滤算法的电影推荐系统的设计与实现.docx基于协同过滤算法的电影推荐系统的设计与实现摘 要在本文中,我们设计了一个基于用户行为模型的系统,旨在增加电影的数量,计算用户之间的相似度,并实现可以对电影进行信息爬取,向用户推荐相似电影的功能。该系统在基于用户的协作过滤算法中使用欧几里得公式来计算用户之间的相似度,通过该方式可以得到用户之间的相似度,以...https://max.book118.com/html/2022/0610/6104050043004155.shtm
2.还是推荐电影,这次是基于物品的协同过滤用A看过的电影的评分,和其他电影的相似度相乘(红框),然后再把相乘后的结果加和(绿框),得出最后的推荐度。这里可以看到,应该向A推荐《寻龙诀》,和上一篇文章用基于用户的协同过滤算法结果是一致的。 #总结# 推荐算法的几个基本思想: 根据和你共同喜好的人来给你推荐(基于用户的) ...https://www.jianshu.com/p/92ef794d6e2b
3.SparkMLlib系列(二):基于协同过滤的电影推荐系统利用Spark在内存迭代运算、机器学习领域强悍性能的优势,使用spark处理数据挖掘问题就显得很有实际价值。这篇文章给大家分享一个spark MLlib 的推荐实战例子。我将会分享怎样用spark MLlib做一个电影评分的推荐系统。使用到的算法是user-based协同过滤。如果对Spark MLlib不太了解的,请阅读我的上一篇博客。http://www.360doc.com/content/16/1116/17/37466175_607043529.shtml
1.ssm协同过滤算法的电影推荐系统(10145)ssm协同过滤算法的电影推荐系统(10145) 一、项目演示 项目演示视频 二、资料介绍 完整源代码(前后端源代码+SQL脚本) 配套文档(LW+PPT+开题报告) 远程调试控屏包运行 三、技术介绍 Java语言 SSM框架 SpringBoot框架 Vue框架 JSP页面 Mysql数据库 IDEA/Eclipse开发 四、项目截图...https://blog.csdn.net/m0_72438098/article/details/143893991
2.python协同过滤算法实现电影推荐协同过滤是一种常用的推荐算法,它基于用户的历史行为和其他用户的行为进行推荐。在电影推荐中,协同过滤算法可以根据用户对电影的评分来推荐相似的电影给用户。 下面是一个简单的Python代码实现电影推荐的协同过滤算法: importnumpyasnp# 电影评分数据ratings={'Alice':{'Transformers':3,'Star Wars':4,'The Dark Kni...https://www.ctyun.cn/zhishi/p-332954
3.基于协同过滤算法的电影推荐系统(亮点:智能推荐协同过滤算法...5.1.2 付费电影 付费电影会根据购买的电影类型来进行协同过滤! 5.1.3 协同过滤算法的应用 原始推荐如下: 集成协同过滤算法之后,电影的推荐会随着用户的喜欢程度进行自动排序,排名靠前的为用户点击次数、点赞次数等行为来控制! 5.1.4 电影论坛 5.1.5 电影资讯 ...https://blog.51cto.com/u_14519396/8678575
4.基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对ApacheHadoop的支持,使这些算法可以更高效的运行在云计算环境中。 https://cloud.tencent.com/developer/article/2059754
5.基于混合推荐算法的电影推荐系统设计与实现推荐算法自诞生以来,并不是完美无缺的,传统的推荐算法存在着或多或少的不足,比如传统的推荐算法通常会存在数据稀疏性、冷启动,推荐精度不高等问题,为了降低这些问题对推荐系统带来的不足,研究学者和专家通过不同的研究来改善以及优化不同的算法,弥补原始算法的缺陷。本文针对传统协同过滤算法中数据稀疏性以及推荐准确度...https://wap.cnki.net/touch/web/Dissertation/Article/1023602428.nh.html
6.基于知识图谱的推荐算法研究综述可解释推荐是指解释推荐理由问题的推荐算法,在向用户提供推荐结果的同时,还提供解释以阐明推荐的原因[23]。这样有助于提高推荐算法的多样性、有效性和准确性,有利于用户理解并采纳推荐结果[24-25]。 早期的推荐多数是基于内容的推荐或基于协同过滤的推荐,基于内容的推荐方法通过对用户或者项目的属性信息进行建模,是基...https://www.fx361.com/page/2023/0113/16791653.shtml