基于用户的协同过滤算法的电影推荐系统
上一篇讲解了推荐算法的分类,这里电影推荐系统具体分析一下
第一步:建立用户电影矩阵模型
如表1所示,协同过滤算法的输入数据通常表示为一个m*n的用户评价矩阵Matrix,m是用户数,n是电影数,Matrix[ij]表示第i个用户对第j个电影的评价:
第二步:发现兴趣相似的用户
这一阶段,主要完成对目标用户最近邻居的查找,通过计算目标用户与其他用户之间的相似度,得到与目标用户最近的邻居集。度量用户间相似性:设N(u)为用户u喜欢的电影集合,N(v)为用户v喜欢的电影集合,将上一步中每行记录视为一个向量,那么u和v的相似度可通过以下进行计算:
(a)采用Jaccard公式:W_uv=(|N(u)∩N(v)|)/(|N(u)∪N(v)|)
(b)余弦相似度计算:W_uv=(|N(u)∩N(v)|)/(√|N(u)||N(v)|)
这里选择余弦公式进行相似度度量计算,假设目前共有4个用户(A、B、C、D),5部电影(a、b、c、d、e),用户与电影的关系如下图所示:
而这种方法的时间复杂度是O(|U|*|U|),所以非常耗时。而在上表中可以看到“用户-电影”表是一个稀疏矩阵,即很多时候N(u)^N(v)=0,如果换一下思路,可以首先计算N(u)^N(v)!=0的用户,然后再计算sqrt(N(u)*N(v))。为此可以首先建立“电影-用户”的倒排表,对每部电影都保存电影到用户的列表:
设稀疏矩阵C[u][v]=N(u)^N(v),在倒排索引中假设用户u和用户v同时属于倒排索引中K部电影对应的用户列表,就有C[u][v]=K。例如上图所示只有电影a中同时出来了用户有A和用户B,则在矩阵中赋值为1:
到此,用户间的相似度计算就得到了,可以很直观的找到与目标用户兴趣相似的用户。
第三步:产生推荐项目
需要从矩阵中找到与目标用户最相似的K个用户,用集合S(u,K)表示,将S中用户喜欢的电影全部提取出来,并除去u已经喜欢的电影。对每个候选电影i,用户对它的感兴趣的程度用以下公式计算:
(其中Rvi表示用户v对电影i的喜欢程度,此处举例全部为1,在电影评分时应该代入用户的评分)。
继续上面的例子,假设我们给A推荐电影,选取K=3,对用户A,电影c、e没有看过,因此可以将这两部电影推荐给用户A,根据UserCF算法用户A对物品c、e的兴趣分别计算p(A,c)和p(A,e):
所以用户A对电影c和e的喜欢程度可能一样,在真实的推荐系统中计算时考虑用户的评分,最后根据得分排序取前K个即为推荐电影
基于用户的协同过滤推荐算法Git代码
基于项目的协同过滤推荐算法Git代码
基于用户的协同过滤算法的电影推荐系统相关推荐
- java计算机毕业设计基于ssm的协同过滤算法的电影推荐系统(源代码+数据库+Lw文档)
项目介绍 "互联网+"的战略实施后,很多行业的信息化水平都有了很大的提升.但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人 ...
- C++实现基于用户的协同过滤大数据电影推荐系统
<大数据计算及应用> [推荐系统]实验报告 目录 <大数据计算及应用> 1 [推荐系统]实验报告 1 [实验相关统计信息] 1 (1)统计用户数量:19835. 1 [实验原理 ...
- python协同过滤电影推荐_python实现基于用户的协同过滤算法(CF)——以电影评价数据(ml-100k)为例...
程序简介 项目以ml-100k电影评分数据集为输入,实现了基于用户的协同过滤算法,最后预测的MAE为0.84,因为经过优化,10万条评分数据运行时间不超过2分钟 协同过滤算法(CF)基于对用户历史行为 ...
- 推荐系统--基于用户的协同过滤算法
1. 概述 和搜索引擎一样,推荐系统是为了帮助人们更快速的获得对自己有用的信息. 和搜索引擎不同,推荐系统是人们被动的获取,由系统根据用户行为或其他的信息推荐给用户的,儿搜索引擎是用户 ...
- 基于用户的协同过滤算法
最近写搜索引擎文章写多了,来一篇之前写的老文,给那些对推荐算法感兴趣想入门的人吧,最近也在做推荐广告系统,又翻出来看了看. 什么是推荐算法 推荐算法最早在1992年就提出来了,但是火起来实际上是最近这 ...
- 基于协同过滤算法的电影推荐系统
目录 前言 R语言 电影推荐系统 案例及代码 数据准备 数据预处理 建立模型 前言 电影推荐系统是数学建模培训中一次例题,网上对相同类型的模型已有答案,但相关代码跑起来仍然存在些许bug,本文基于同类 ...
- 【推荐系统】基于用户的协同过滤算法
基于用户的协同过滤算法 基础算法 在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的.而用户A没有听说过的物品推荐给A.这种方法称为基于 ...
- UserCF,基于用户的协同过滤算法
转载自 UserCF,基于用户的协同过滤算法 UserCF:User Collaboration Filter,基于用户的协同过滤 算法核心思想:在一个在线推荐系统中,当用户A需要个性化推荐 ...
- 基于用户的协同过滤算法详解
0. 前言 基于领域的推荐算法是推荐系统中最基本的算法,此类算法不仅在学术界得到了深入研究,而且在工业界也得到了广泛地应用.基于领域的推荐算法主要分为两大类:一类是基于用户的协同过滤算法(User B ...
最新文章
- python从安装开始加粉_安装python
- 第二十四周项目4-猴子选大王(约瑟夫问题)
- 无人机飞控开发平台培训理论课程——飞行原理
- spring 同时配置hibernate and jdbc 事务
- cocos2dx build_native.sh clean 命令报错的解决
- 博客园官方 NuGet镜像上线试运行
- php如何输出关联数组的值,php - 如何从PHP关联数组中获取确切的输出 - SO中文参考 - www.soinside.com...
- POJ3250(单调栈)
- 使用NPOI导入导出标准Excel(源码)
- redis源码剖析(5):基础数据结构inset
- Struts1 和 Struts2
- 相似图片搜索——感知哈希算法
- R导入excel数据
- Apache的网页优化!!给你的网页套上一层层保护罩(网页压缩、网页缓存、隐藏版本信息、设置防盗链)
- android简易播放器2:activity和service同步显示
- 关于团队协作开发的一些思考
- RxJava 学习笔记(八) --- Combining 结合操作
- 麓言科技设计师你要有想法
- ev4转换MP4格式教程
- C语言 输出菱形 最短代码!
热门文章
- unity中用shader实现大海的特效
- n行Python代码系列:四行程序实现两个视频同屏播放
- TI AM570x浮点DSP C66x + ARM Cortex-A15开发板的Watchdog接口
- 如何高速下载百度云资源
- 近期投简历、找日常实习的一些碎碎念(大二---测试岗)
- javascript JSON串解析成对象,如数组
- matlab 角度余弦,matlab产生扫频余弦信号
- Android kotlin实战之协程suspend详解与使用
- 江苏专转本计算机难度和计算机二级难度,江苏专转本难吗
- sentinel 1.8. 2持久化Nacos动态规则热点规则和授权规则不生效的问题