本文参考文献:https://www.researchgate.net/publication/257403928_A_movie_recommendation_algorithm_based_on_genre_correlations

代码:https://github.com/827983519/recommend_algorithm/blob/master/Genre.py

1.电影推荐

电影推荐是推荐算法应用的重要场景。其中比较受欢迎的是基于内容的推荐算法以及协同滤波算法。其中基于内容的推荐算法通过分析电影的标题,演员等信息对用户进行推荐。而协同滤波算法的原理是物理类聚,人以群分,将兴趣爱好相同的人聚集起来,向他们推荐互相喜欢的电影。

但是这两种算法在信息不全时会无法使用。第一种算法需要获取电影的具体信息,以及用户的一些个人信息。而第二种方法会面临冷启动问题,即如果该用户是新加入的,或者是物品时新加进来的,那么就不会有任何历史行为。此时无法通过协同滤波进行推荐。

因此本人介绍一种仅仅基于电影类型以及用户的喜好类型,就能向用户进行推荐的算法。

2.Genre correlation计算

该算法的实践首先要计算Genre correlation。(这里中文GOOLE翻译给出的是种类相关系数,不知是否准确。因此用英文代替)。每部电影都会有不同的Genre,如玩具总动员的Genre是Animation|Children|Comedy。每部电影的Genre数目在2-3个左右。Genre correlation就是Genre互相的相关性。

具体计算方法是:首先我们建立Genre correlation table A,全部初始化为0。接着我们取出一部电影。再次以玩具总动员为例,该电影的Genre是Animation|Children|Comedy。我们

  1. 选取Animation为Criterion genre,因为该电影的Genre中Animaion后面还有Children和Comedy,所以A[Animation][Children]的数值加一,A[Animation][Comedy]加一。
  2. 选取Children为Criterion genre,因为该电影的Genre中Children后面还有Comedy,因此A[Children][Comedy]。
  3. 重复以上步骤,将所有的电影取出并且计算。
  4. 将获得的值与该Genre作为Criterion genre的次数相除,获得百分比。

最后我们会获得类似于下面的一张表:

3.Recommend point计算

计算Genre correlation之后,我们就可以计算每部电影对于每个用户的recommend point了。方法很简单,利用以下公式计算。其中mg代表选取的电影的Genres,而up代表用户的Preferred genre。每一次计算时,如果所选取的电影的genre是用户Preferred genre之一,则使用第一个公式。否则使用第二个。

下面这张图是一个计算的例子。

4.进行推荐

通过以上计算后,我们最终会得到这样一张表。其中Index是用户的ID,Columns是电影的ID。

接下来要做的就取决于个人。可以简单的对Recommend point进行排序,接着将最高的几部推荐出来。或者可以进行进一步过滤,比如只推荐热门的,或者平均评分在3分以上的。总而言之要根据自己期望获得的结果进行进一步操作。

实践中我使用的是Movielens提供的数据集。进行相关计算后,我向一位在训练集中的用户进行推荐。这位用户是一名孩子。我们可以看到推荐结果都是一些动画片之类的,说明效果还是不错的。

基于用户喜好以及电影类型的电影推荐算法相关推荐

  1. 基于SVD++隐语义模型的信任网络推荐算法

    点击上方蓝字关注我们 基于SVD++隐语义模型的信任网络推荐算法 陈佩武1, 束方兴2 1 平安科技(深圳)有限公司,广东 深圳 518031 2 北京大学互联网研究院(深圳),广东 深圳 51805 ...

  2. 【机器学习】基于奇异值分解(SVD)的协同过滤推荐算法及python实现

    [机器学习]基于奇异值分解(SVD)的协同过滤推荐算法及python实现 一.协同过滤推荐算法 1.1.协同过滤算法的分类 1.2.相似度的度量 1.3.商品评分的预测 二.奇异值分解(SVD)在协同 ...

  3. python协同过滤电影推荐_推荐系统:基于用户和模型的协同过滤电影推荐

    2018-04-26 1.协同过滤 协同过滤(Collaborative Filtering)字面上的解释就是在别人的帮助下来过滤筛选,协同过滤一般是在海量的用户中发现一小部分和你品味比较相近的,在协 ...

  4. 基于用户画像的PythonDjango框架的电影推荐系统设计与实现

    目录 BiSheServer 1 1.项目介绍 1 2.系统架构图 1 3.系统模块图 1 4.目录结构及主要文件说明 1 5.配置文件说明 3 [DEFAULT] 3 [DATEBASE] 3 [R ...

  5. C++实现基于用户的协同过滤大数据电影推荐系统

    <大数据计算及应用> [推荐系统]实验报告 目录 <大数据计算及应用> 1 [推荐系统]实验报告 1 [实验相关统计信息] 1 (1)统计用户数量:19835. 1 [实验原理 ...

  6. python爬虫豆瓣电影按电影类型,豆瓣电影---按分类爬取

    全部代码以及分析见GitHub:https://github.com/dta0502/douban-movie 我突然想看下有什么电影可以看.由于我偏爱剧情类电影,因此我用Python爬虫来爬取剧情类 ...

  7. 对电影题材分析的案例-电影类型与电影利润之间的关系(2021/07/24)

    如题,分析内容是电影题材和电影利润之间的关系. 其中电影题材的数据格式比较特殊,那么就用这个案例体现怎么处理此类数据格式. 从数据中看,每个电影对应好几种题材(genres). 那么,我们的大概思路是 ...

  8. java毕业设计成品基于SpringBoot体育用品购物商城-协同过滤推荐算法[包运行成功]

    一.项目介绍 java毕业设计计算机毕设项目之SpringBoot体育用品商城-协同过滤推荐算法,下订单模块用的是百度地图api_哔哩哔哩_bilibilijava毕业设计计算机毕设项目之Spring ...

  9. python基于用户画像和协同过滤实现电影推荐系统

    1.概要 传统电影推荐系统大多使用协同过滤算法实现电影推荐,主要实现机理是通过用户评分及用户观影历史数据抽象为多维向量利用欧式距离或其他向量计算公式实现推荐,本文中将采用常用的机器学习算法Kmeans ...

  10. “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)

    目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...

最新文章

  1. vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决
  2. Jenkins 无法捕获构建脚本错误问题
  3. 【struts2+hibernate+spring项目实战】Jfreechart工具使用(ssh项目实战)
  4. 【Tomcat】Tomcat性能分析
  5. POJ1284:Primitive Roots——题解
  6. NGINX轻松管理10万长连接
  7. SonarQube 规则的挂起与激活
  8. 永远不要去依赖别人_感悟人生的经典句子:不要轻易去依赖一个人
  9. Paravirtualization (半虚拟化PV) - Xen
  10. 【免费下载】2021年11月热门报告盘点(附热门报告列表及下载链接)
  11. 5-5图层的链接-新版本不常用
  12. 转Win 7 快捷键
  13. 秒杀系统 后端设计方案
  14. 金融随机分析——二叉树资产定价模型 第一卷
  15. 为什么买入不了创业版_两点原因,为什么现在不建议你买创业板
  16. arduino/Mixly心知天气
  17. Cesium对entity的操作以及资源记录(增删改查)
  18. Ubuntu安装VMware Tools后不起作用
  19. p10测试闪存软件怎么用,华为p10的闪存类型怎么查看?查看华为p10闪存教程
  20. oc代码混淆_iOS 代码混淆

热门文章

  1. 零基础学习3d建模需要多久?
  2. 如何方便快速的在指定文件夹打开cmd
  3. 前端开发 20 年变迁史
  4. 那些年,我们一起卸载过的软件…
  5. 凡是过往,皆为序章。|2021年终总结
  6. 医学CT图像三维重建代码
  7. 基于Matlab使用开普勒运动模型跟踪空间碎片(附源码)
  8. python 开源cms内容管理系统_wagtail-基于Django构建的开源内容管理系统
  9. 电脑文件的后缀名不见了,如何显示隐藏扩展名?
  10. 多图预警——从 RAID 到分布式系统中的副本分布