上一篇讲解了推荐算法的分类,这里电影推荐系统具体分析一下

第一步:建立用户电影矩阵模型

如表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),用户与电影的关系如下图所示:

W_AB=(|{a,b,d}∩{a,c}|)/(√|{a,b,d}||{a,c}|)=1/(√6)
W_AC=(|{a,b,d}∩{b,e}|)/(√|{a,b,d}||{b,e}|)=1/(√6)
W_AD=(|{a,b,d}∩{c,d,e}|)/(√|{a,b,d}||{c,d,e}|)=1/3

而这种方法的时间复杂度是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):

p(A,c)= W_AB+W_AD=1/(√6)+1/3=0.7416
p(A,e)= W_Ac+W_AD=1/(√6)+1/3=0.7416

所以用户A对电影c和e的喜欢程度可能一样,在真实的推荐系统中计算时考虑用户的评分,最后根据得分排序取前K个即为推荐电影

基于用户的协同过滤推荐算法Git代码

基于项目的协同过滤推荐算法Git代码

基于用户的协同过滤算法的电影推荐系统相关推荐

  1. java计算机毕业设计基于ssm的协同过滤算法的电影推荐系统(源代码+数据库+Lw文档)

    项目介绍 "互联网+"的战略实施后,很多行业的信息化水平都有了很大的提升.但是目前很多行业的管理仍是通过人工管理的方式进行,需要在各个岗位投入大量的人力进行很多重复性工作,使得对人 ...

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

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

  3. python协同过滤电影推荐_python实现基于用户的协同过滤算法(CF)——以电影评价数据(ml-100k)为例...

    程序简介 项目以ml-100k电影评分数据集为输入,实现了基于用户的协同过滤算法,最后预测的MAE为0.84,因为经过优化,10万条评分数据运行时间不超过2分钟 协同过滤算法(CF)基于对用户历史行为 ...

  4. 推荐系统--基于用户的协同过滤算法

    1.         概述 和搜索引擎一样,推荐系统是为了帮助人们更快速的获得对自己有用的信息. 和搜索引擎不同,推荐系统是人们被动的获取,由系统根据用户行为或其他的信息推荐给用户的,儿搜索引擎是用户 ...

  5. 基于用户的协同过滤算法

    最近写搜索引擎文章写多了,来一篇之前写的老文,给那些对推荐算法感兴趣想入门的人吧,最近也在做推荐广告系统,又翻出来看了看. 什么是推荐算法 推荐算法最早在1992年就提出来了,但是火起来实际上是最近这 ...

  6. 基于协同过滤算法的电影推荐系统

    目录 前言 R语言 电影推荐系统 案例及代码 数据准备 数据预处理 建立模型 前言 电影推荐系统是数学建模培训中一次例题,网上对相同类型的模型已有答案,但相关代码跑起来仍然存在些许bug,本文基于同类 ...

  7. 【推荐系统】基于用户的协同过滤算法

    基于用户的协同过滤算法 基础算法 在一个在线个性化推荐系统中,当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的.而用户A没有听说过的物品推荐给A.这种方法称为基于 ...

  8. UserCF,基于用户的协同过滤算法

    转载自   UserCF,基于用户的协同过滤算法 UserCF:User  Collaboration   Filter,基于用户的协同过滤 算法核心思想:在一个在线推荐系统中,当用户A需要个性化推荐 ...

  9. 基于用户的协同过滤算法详解

    0. 前言 基于领域的推荐算法是推荐系统中最基本的算法,此类算法不仅在学术界得到了深入研究,而且在工业界也得到了广泛地应用.基于领域的推荐算法主要分为两大类:一类是基于用户的协同过滤算法(User B ...

最新文章

  1. python从安装开始加粉_安装python
  2. 第二十四周项目4-猴子选大王(约瑟夫问题)
  3. 无人机飞控开发平台培训理论课程——飞行原理
  4. spring 同时配置hibernate and jdbc 事务
  5. cocos2dx build_native.sh clean 命令报错的解决
  6. 博客园官方 NuGet镜像上线试运行
  7. php如何输出关联数组的值,php - 如何从PHP关联数组中获取确切的输出 - SO中文参考 - www.soinside.com...
  8. POJ3250(单调栈)
  9. 使用NPOI导入导出标准Excel(源码)
  10. redis源码剖析(5):基础数据结构inset
  11. Struts1 和 Struts2
  12. 相似图片搜索——感知哈希算法
  13. R导入excel数据
  14. Apache的网页优化!!给你的网页套上一层层保护罩(网页压缩、网页缓存、隐藏版本信息、设置防盗链)
  15. android简易播放器2:activity和service同步显示
  16. 关于团队协作开发的一些思考
  17. RxJava 学习笔记(八) --- Combining 结合操作
  18. 麓言科技设计师你要有想法
  19. ev4转换MP4格式教程
  20. C语言 输出菱形 最短代码!

热门文章

  1. unity中用shader实现大海的特效
  2. n行Python代码系列:四行程序实现两个视频同屏播放
  3. TI AM570x浮点DSP C66x + ARM Cortex-A15开发板的Watchdog接口
  4. 如何高速下载百度云资源
  5. 近期投简历、找日常实习的一些碎碎念(大二---测试岗)
  6. javascript JSON串解析成对象,如数组
  7. matlab 角度余弦,matlab产生扫频余弦信号
  8. Android kotlin实战之协程suspend详解与使用
  9. 江苏专转本计算机难度和计算机二级难度,江苏专转本难吗
  10. sentinel 1.8. 2持久化Nacos动态规则热点规则和授权规则不生效的问题