基于协同过滤算法和内容推荐算法实现电影推荐系统

本电影推荐系统算法是基于人人相似的协同过滤算法和基于内容的推荐算法相结合的混合推荐算法

混合推荐算法大致流程:

首先对数据集使用人人相似的协同过滤算法, 计算每个人与其他人的cos相似度, 选择相似度最高的人,推荐他看过的电影. 若最高相似度小于0.2则认为没有人与之相似, 改为采用基于内容的推荐算法解决. 若相似度最高的用户没有评分过4分的电影可推荐, 也采用基于内容的推荐算法进行推荐.

人人相似的协同过滤算法:

  1. 根据movieId合并movies.csv和ratings.csv,得到merged.csv

  2. 读取merge.csv获取data字典, 格式为{userid:{movieid:rating, movieid:rating}}

  3. 修正data字典, 具体为计算每部电影平均分, 将该电影的所有评分减去平均分, 使得该电影的未评价用户的默认评分为0, 以便于计算

  4. 对于每个用户, 计算他与其他所有用户的cos相似度, 记录最高相似度的用户和两个用户的相似度, 最后获得最高相似度的用户列表

  5. 将与该用户相似度最高的用户的电影进行排序, 并与该用户的电影进行比较, 选择该用户未看过且评分大于4的电影推荐给该用户

  6. 如果出现最高相似度小于0.2, 或者最高相似度的用户没有电影可以推荐时, 采用基于内容的推荐算法

基于内容的推荐算法

  1. 获取三种数据结构, 用户标签喜爱度列表, 不同标签的电影的评分排序以及每一部电影的种类

  2. 用户标签喜爱度列表:

    标签喜爱度计算公式=所在电影的原始权重所在电影的用户评分时间加权

    其中, 所在电影原始权重=1/该电影的标签数

    ​ 时间加权=时间戳的归一化

  3. 不同标签的电影的评分排序: 评分是指每一部电影的平均分

    数据结构: {tag:[ (movieId, rating), (movieId, rating) ]}

  4. 每一部电影的种类:

    数据结构: { movieId: { tag:ratio, tag:ratio }}

  5. 获取每个用户标签喜爱度排名前两名的标签和它们的权重, 根据权重计算该标签推荐的电影数, 在不同标签的电影评分排序这个数据结构中找到该标签下排名前几名的电影进行推荐

代码下载: 电影推荐系统

基于协同过滤算法和内容推荐算法实现电影推荐系统相关推荐

  1. 如何使用Spring+SpringMVC+Mybatis开发实现个性化小说推荐系统 协同过滤推荐算法实现 基于用户、项目的协同过滤推荐 基于聚类、关联规则、内容推荐算法 WebNovelCFRS

    如何使用Spring+SpringMVC+Mybatis开发实现个性化小说推荐系统 协同过滤推荐算法实现 基于用户.项目的协同过滤推荐 基于聚类.关联规则.内容推荐算法 WebNovelCFRS 一. ...

  2. 最新基于协同过滤的毕业设计题目

    基于协同过滤的毕业设计题目1-10题 1.基于协同过滤理论的民机智能故障诊断方法 2.基于协同过滤的图书个性化推荐研究 3.基于协同过滤的全球AI挑战赛社区的设计与实现 4.基于协同过滤的专利TRIZ ...

  3. 推荐系统(一)基于协同过滤算法开发离线推荐

    什么是离线推荐 所谓的离线推荐其实就是根据用户产生的行为日志,后台设定一个离线统计算法和离线推荐算法的任务来对这些行为日志进行周期性的统计,统计过后的结果数据为前台或者实时分析提供数据的支撑.离线推荐 ...

  4. 协同过滤推荐算法和基于内容推荐算法的区别?

    文章最前: 我是Octopus,这个名字来源于我的中文名--章鱼:我热爱编程.热爱算法.热爱开源.所有源码在我的个人github :这博客是记录我学习的点点滴滴,如果您对 Python.Java.AI ...

  5. 毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介

    由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛! 于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统. 1 研究目标 从应用场景来看,基 ...

  6. 基于协同过滤算法为电视产品制订个性化推荐

    1 绪论 1.1 背景 在互联网技术日益发展和进步的时代,各种数据呈现井喷式增长状态,仅2017 年"双十一"天猫旗下购买物品所产生的交易额最终定格在 1682 亿元,其中,无线成 ...

  7. 旅游推荐平台|酒店推荐平台|基于协同过滤算法实现旅游酒店推荐系统

    作者主页:编程千纸鹤 作者简介:Java.前端.Python开发多年,做过高程,项目经理,架构师 主要内容:Java项目开发.毕业设计开发.面试技术整理.最新技术分享 收藏点赞不迷路  关注作者有好处 ...

  8. 基于协同过滤算法和深度学习的音乐推荐

    基于协同过滤算法和深度学习的音乐推荐 协同过滤 音乐推荐 深度学习 音乐检索 文章目录 基于协同过滤算法和深度学习的音乐推荐 Github 地址 微信小程序版实现 介绍 参考项目 技术栈 Docker ...

  9. 【机器学习项目实战】Python基于协同过滤算法进行电子商务网站用户行为分析及服务智能推荐

    说明:这是一个机器学习实战项目(附带数据+代码+文档+代码讲解),如需数据+代码+文档+代码讲解可以直接到文章最后获取. 1.项目背景 电子商务网站数量迅速上升,将电子商务网站浏览者变为实际消费者,满 ...

  10. 基于协同过滤算法的书籍推荐 毕业设计-附源码101555

    摘  要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到准 ...

最新文章

  1. 人工智能机器学习区别计算机应用,AI、人工智能和机器学习有什么区别
  2. Apache Flink 进阶入门(二):Time 深度解析
  3. 95-10-055-启动-MetadataCache
  4. 随想录(被低估的gccg++)
  5. Q84:层级实例网格[Hierarchical Instance Grids]
  6. Maven 项目添加jetty 插件
  7. 【杆号识别】基于matlab铁路接触网系统杆号识别【含Matlab源码 1056期】
  8. 如何成为python高手(转)
  9. 产品补丁包测试的基本流程
  10. 计算机网络——计算机网络知识脑图
  11. 微信到 Obsidian 2.0
  12. 前端实现HTML转PDF
  13. word中 设置标题级别 的 快捷键
  14. export default (imported as router) was not found_一篇文章搞定as四大用法
  15. Vim 为什么把 HJKL 当作光标键?
  16. 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数,求组成的新数最小的删数方案(O((n-k)logk)优化)
  17. 为什么企业微信只能群发一次?如何增加群发次数?
  18. WPF补充(二) 资源(Resource)
  19. cozmo vector的起源最详细的说明
  20. 什么是深度学习中的先验知识

热门文章

  1. win10打开计算机黑屏怎么办,win10系统开机就一直黑屏无法进入桌面的解决方法...
  2. sum of digits
  3. c语言指针详解pdf下载,C语言指针详解.pdf
  4. 腕能助手android9,腕间应用助手(com.gmf.watchapkassistant) - 1.7 - 应用 - 酷安
  5. 机器人工程师学习计划
  6. MATLAB函数取整
  7. svpwm c语言程序,SVPWM的实现过程附C代码.doc
  8. 软件开发中的资源管理
  9. 原生 js 生成二维码
  10. Android Studio中XML注释错误问题