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

本文参考文献: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提供的数据集。进行相关计算后,我向一位在训练集中的用户进行推荐。这位用户是一名孩子。我们可以看到推荐结果都是一些动画片之类的,说明效果还是不错的。

                           

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25225.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:用Python打造更智能的电影推荐系统,让你轻松找到心仪的影片

用Python打造更智能的电影推荐系统,让你轻松找到心仪的影片 电影是人们在生活中不可或缺的娱乐方式之一。而对于喜欢看电影的朋友来说,找到一部能够满足自己口味的影片,是一件非常重要的事情。为了让大家更加方便地找到合适自己的电影&#…

电影推荐系统

摘 要 随着社会的发展,人们生活水平的提高,欣赏电影逐渐成为人们闲暇时的主要娱乐方式之一。电影院也越来越多,除了一些大型连锁式电影院外,还有很多社区影院,小剧场等也日益增多。这类电影院中,传统的电影…

chatgpt赋能python:Python写一个自动登录脚本

Python写一个自动登录脚本 在现代互联网时代,大部分网站在使用时需要登录,为了提高人工操作的效率,很多人开始使用自动化工具来完成自动登录。Python语言作为一款流行的脚本编程语言,在自动化方面也有很好的表现,本文…

解决Docker进不去mysql的问题

使用场景: 在Linux系统中操作: Docker里安装MySQL库,进入并进行相关操作。 问题情况 先启动mysql容器: docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:latest这里直接拒绝…

使用Flask Web创建一个调用ChatGPT API的网页--简单示例(Windows环境下)

前提:你应该要有一个能正常使用chatGPT的openAI账号;即你已经成功注册了chatGPT,并能正常使用。 文章目录 一、主要组成部分二、示例代码2.1 工程结构:2.2 说明2.3 依赖环境2.4 app.py代码2.5 index.html代码 三、搭建环境步骤 一…

JAVA对接百度API提交普通收录/SEO

JAVA对接百度API提交普通收录/SEO 说明: 为了增加内容的曝光量,除了主动让百度爬虫爬取之外,还有普通收录的API提交,程序主动向百度搜索推送资源,缩短爬虫发现网站链接的时间。 官网地址:http://data.zz.…

Java 快递物流查询 api对接

Java 快递物流查询 api对接 2018年08月24日 09:44:41 我跟吴彦祖四六开 阅读数:73 标签: java 物流查询 更多 个人分类: Java 这里只是记录一下。第三方都会提供很详细的demo和技术文档,或者安排专业人员进行联调。 第三方物流…

eBay API文档

1.创建eBay接入API教程网址 https://developer.ebay.com/api-docs/static/creating-edp-account.html 前言:API参考:资源 该分析API检索呼叫限制和数据被用于RESTful API中及其关联的资源设置配额。对getRateLimits和getUserRateLimits进行的调用的响应…

Java对接外部API这个问题

java对接外部api 需求提出解决思路编码测试 总结 差不多有一个多月没有更新blog,也是出于工作原因以及最近搬家在看合适的窝点导致断更。今天有一个小学妹来问我可以将我其他项目的api接入到我现在的项目中吗?我回答“可以”!我今天就写一篇关…

Midjourney API 接口对接历程

Midjourney是一个基于Discord环境的画图工具,它提供API接口用于扩展功能。对于程序开发者来说,Midjourney只能在Discord环境下使用,这限制了它的使用范围。本文将介绍使用Midjourney的API接口进行开发发过程中遇到的一些问题。 内测地址&…

JAVA对接亚马逊SPAPI

亚马逊官方文档Amazon-Services-APIAmazon API Services for Selling Partners and Shippers.https://developer-docs.amazon.com/ 1注册AWS账号,填写个人信息,填写银行信息,手机验证(AWS网址) 2在AWS里面创建IAM用户…

深信服防火墙API对接

深信服防火墙千呼万唤的API终于在8.0.35版本实现了。具体的API文档可以登录防火墙的后台WEB界面上的右上角点开即可查看: 根本api文档,首先先新建一个api账号,“用户可以登录WebUI通过"系统->管理员账号"栏将默认的账户勾上WEBA…

使用Swagger作API接口对接

1、当前项目中存在的问题 在前后端分离的项目中,如手机端与接口端对接、WEB项目调用API,进行接口对接的方式一般是先创建WORD文档,然后把各个接口的链接、参数、访问方式、说明等信息粘贴进去。在制作文档的过程中,如果稍有不注意…

API对接实战

目录 一 背景 二 了解B公司接口的基础约定 三 基础域名 四 请求及相应格式说明 五 确定要对接哪些API 六 根据API文档,编写一些基础工具类。 七 根据API文档,编写必要的DTO 八 针对每个API方法,进行对接 九 对接代码结构 十 一些对…

企业微信api对接

用的是wxJava,但是wxJava文档真滴不清楚,都是jar全局搜索url/看方法试的。 坑0: 通讯录不仅要开通api,还得开通是“可编辑”不然是“只读”(然后还可以设置人员自己编辑后推动事件服务器)挺不错的 坑一&a…

WebAPI接口对接

WebAPI接口对接: 提示:此片文章是总结接口对接经验其中包括模型的建立以及统一的调用 学习内容: 数据对象模型的建立如何规范定义模型统一的请求方法系统中model的命名 数据对象的建立 接口的数据传输对象包括Request对象和Response对象 …

百度翻译API对接

百度翻译开发平台:http://api.fanyi.baidu.com/api/trans/product/index 打开如上链接: 下载SDK 导入SDK 新建一个工程(zyq-translate),并新建包(com.zyq.translate) 解压SDK,得…

对接海康ISC平台API

开发文档:海康开放平台。(视频预览、抓图等能力)

Unity Layer(图层)简介

图层基础 1. 当一个项目或者场景中包含很多对象时,通常难以组织。有的时候,希望一些游戏对象只能被某些摄像机看到或者只会被某些灯光照亮;有时,你可能希望只让某些类型的对象之间发生碰撞;在Unity中用图层处理上述需求…