推荐系统的基本架构:

实时推荐和离线推荐

源码:github

注:以下所有数据之间都是以 \t 隔开的,博客里显示效果不好

数据集:

1 101 5
1 102 3
1 103 3
2 101 2
2 102 3
2 103 5
2 104 2
3 101 2
3 104 4
3 105 5
3 107 5
4 101 5
4 103 3
4 104 4
4 106 4
5 101 4
5 102 3
5 103 2
5 104 4
5 105 3
5 106 4
6 102 4
6 103 2
6 105 3
6 107 4

思路:

1.第一个mapreduce:构建用户评分矩阵

输出结果:


1 103:3 101:5 102:3
2 101:2 102:3 103:5 104:2
3 107:5 101:2 104:4 105:5
4 103:3 106:4 104:4 101:5
5 101:4 102:3 103:2 104:4 105:3 106:4
6 102:4 103:2 105:3 107:4

2.第二个mapreduce:构建同现矩阵

输出结果:

101:101 5
101:102 3
101:103 4
101:104 4
101:105 2
101:106 2
101:107 1
102:101 3
102:102 4
102:103 4
102:104 2
102:105 2
102:106 1
102:107 1
103:101 4
103:102 4
103:103 5
103:104 3
103:105 2
103:106 2
103:107 1
104:101 4
104:102 2
104:103 3
104:104 4
104:105 2
104:106 2
104:107 1
105:101 2
105:102 2
105:103 2
105:104 2
105:105 3
105:106 1
105:107 2
106:101 2
106:102 1
106:103 2
106:104 2
106:105 1
106:106 2
107:101 1
107:102 1
107:103 1
107:104 1
107:105 2
107:107 2

3.第三个mapreduce:推荐结果=同现矩阵*评分矩阵

用户u对物品j的喜爱程度=u对物品i的评分*j、i的相似度,累加求和。

如用户1对物品103的喜爱程度:
 

R=4*5+4*3+5*3+3*0+2*0+2*0+1*0=47

输出结果:

6 10130
1 101 46 已购买
5 101 67 已购买
3 101 41 已购买
2 101 47 已购买
4 101 61 已购买
6 102 34 已购买
1 102 39 已购买
5 102 50 已购买
3 102 29
2 102 42 已购买
4 102 39
6 103 36 已购买
1 103 47 已购买
5 103 64 已购买
3 103 35
2 103 51 已购买
4 103 55 已购买
6 104 24
1 104 35
5 104 58 已购买
3 104 39 已购买
2 104 37 已购买
4 104 53 已购买
6 105 29 已购买
1 105 22
5 105 39 已购买
3 105 37 已购买
2 105 24
4 105 28
6 106 11
1 106 19
5 106 34 已购买
3 106 17
2 106 21
4 106 32 已购买
6 107 20 已购买
1 107 11
5 107 19
3 107 26 已购买
2 107 12
4 107 12

4.将推荐结果排序

通过自定义输入类型,按照用户id升序,分数降序排列

输出结果:

1 103 47 已购买
1 101 46 已购买
1 102 39 已购买
1 104 35
1 105 22
1 106 19
1 107 11
2 103 51 已购买
2 101 47 已购买
2 102 42 已购买
2 104 37 已购买
2 105 24
2 106 21
2 107 12
3 101 41 已购买
3 104 39 已购买
3 105 37 已购买
3 103 35
3 102 29
3 107 26 已购买
3 106 17
4 101 61 已购买
4 103 55 已购买
4 104 53 已购买
4 102 39
4 106 32 已购买
4 105 28
4 107 12
5 101 67 已购买
5 103 64 已购买
5 104 58 已购买
5 102 50 已购买
5 105 39 已购买
5 106 34 已购买
5 107 19
6 103 36 已购买
6 102 34 已购买
6 101 30
6 105 29 已购买
6 104 24
6 107 20 已购买
6 106 11

测试数据集  MovieLens ml-100k

推荐结果:

1 50 140234 已购买
1 181 128318 已购买
1 174 125385 已购买
1 100 122214 已购买
1 56 115947 已购买
1 98 115241 已购买
1 172 113888 已购买
1 204 112054 已购买
1 1 111923 已购买
1 121 111208 已购买
1 79 105862 已购买
1 210 105778 已购买
1 69 104589 已购买
1 7 102883 已购买
1 168 102712 已购买
1 127 102084 已购买
1 173 101127 已购买
1 195 100192 已购买
1 423 98904
1 96 97488 已购买
1 117 97396 已购买
1 222 96448 已购买
1 258 96068 已购买
1 216 95675 已购买
1 183 94841 已购买
1 22 94821 已购买
1 176 94718 已购买
1 405 94107
1 202 93679 已购买
1 89 93550 已购买
1 234 92128 已购买
1 237 91652 已购买
1 64 90863 已购买
1 28 90754 已购买
1 82 90236 已购买
1 191 89935 已购买
1 151 89691 已购买
1 294 88793
1 318 88684
1 238 87646 已购买
1 186 87575 已购买
1 196 87403已购买
1 12 87106 已购买
1 288 86960
1 97 86856 已购买
1 135 86485 已购买
1 228 85377 已购买
1 144 84186 已购买
1 153 84004 已购买
1 70 83390 已购买
1 132 82411 已购买
1 357 82045
1 568 81287
1 286 81110
1 11 80633 已购买
1 25 80246 已购买
1 161 79930 已购买
1 655 79140 
1 265 78983 已购买
1 4 77723 已购买
1 182 77580 已购买
1 143 77255 已购买
1 118 77070 已购买
1 95 76855 已购买
1 385 76753
。。。。。。(省略,太多了)
测试这个数据共用时342363 毫秒,程序大约跑了6分钟。。

对比上一篇的数据,对比用户1,推荐10条


mapreduce计算结果:

1 423 98904
1 405 94107
1 294 88793
1 318 88684
1 288 86960
1 357 82045
1 568 81287
1 286 81110
1 655 79140
1 385 76753
上一篇计算结果:

取前k个:



取所有:

相似度大约在60%~70%,上篇的程序精确到了小数位,而这里全是整数,所以可能有差别。


不过mapreduce计算更为准确!



欢迎指正!

mapreduce实现ItemCF——基于物品的协同过滤相关推荐

  1. [推荐算法]ItemCF,基于物品的协同过滤算法

     [推荐算法]ItemCF,基于物品的协同过滤算法 标签: ItemCF基于用户的协同过滤算法 2015-03-09 15:11 4144人阅读 评论(1) 收藏 举报 本文章已收录于: 分类: ...

  2. ItemCF,基于物品的协同过滤算法

    转载自   ItemCF,基于物品的协同过滤算法 ItemCF:Item Collaboration Filter,基于物品的协同过滤 算法核心思想:给用户推荐那些和他们之前喜欢的物品相似的物品. 比 ...

  3. 基于物品的协同过滤ItemCF的mapreduce实现

    文章的UML图比较好看..... 原文链接:www.cnblogs.com/anny-1980/articles/3519555.html 基于物品的协同过滤ItemCF 数据集字段: 1.  Use ...

  4. Mahout分步式程序开发 基于物品的协同过滤ItemCF

    Hadoop家族系列文章,主要介绍Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, ...

  5. 推荐算法 itemcf java_推荐系统之基于物品的协同过滤算法(ItemCF)

    推荐系统之基于物品的协同过滤算法(ItemCF) 发布时间:2018-03-04 16:55, 浏览次数:1778 , 标签: ItemCF 推荐系统之基于物品的协同过滤算法(ItemCF) 前端时间 ...

  6. 推荐系统实践(二)----基于物品的协同过滤算法(ItemCF)

      上一篇博客我简单讲了一下基于用户的协同过滤算法,这里我们一起来学习一下另一种:基于物品的协同过滤算法.基于物品的协同过滤算法是目前业界应用最多的算法,亚马逊.Netflix.Hulu.YouTub ...

  7. 基于物品的协同过滤算法ItemCF

    基于物品的协同过滤算法ItemCF 基于item的协同过滤,通过用户对不同item的评分来评测item之间的相似性,基于item之间的相似性做出推荐.简单来讲就是:给用户推荐和他之前喜欢的物品相似的物 ...

  8. Hadoop案例之基于物品的协同过滤算法ItemCF

    Hadoop案例之基于物品的协同过滤算法ItemCF 转载自:http://blog.csdn.net/qq1010885678/article/details/50751607?locationNu ...

  9. 使用Spark DataFrame实现基于物品的协同过滤算法(ItemCF)

    简书不支持Markdown Math语法,请移步https://glassywing.github.io/2018/04/10/spark-itemcf/ 简介 当前spark支持的协同过滤算法只有A ...

最新文章

  1. 生物识别包含人脸识别门禁之外还包含哪种识别种类
  2. Symfony3实现刷新登录时间
  3. bind9 配置说明
  4. 通俗解释协方差与相关系数
  5. php nginx日志分析,如何通过NGINX的log日志来分析网站的访问情况,试试这些命令...
  6. ubuntu 绑定网卡
  7. Java实现文件复制
  8. 技术改变生活,统一通信走向深度融合
  9. android dialog动画_Android超级酷炫实用的UI框架
  10. 我需要具备的知识和能力总结
  11. 解题报告 poj 1087
  12. 【转】20个Java 代码生成器
  13. spf打包解包_SPF’校园管理项目实训-1
  14. 算法设计与分析 第一章 基础知识作业1
  15. python多线程爬取qq好友空间的留言
  16. Arctime——可视化字幕编辑器,解放你的双手
  17. 刷题时遇到的经典解法(实时更新)
  18. unable to find valid certification path to requested target的异常解决办法
  19. MySql数据的完整性
  20. ckplayer播放线上视频问题

热门文章

  1. MOOC《Python网络爬虫和信息提取》(第11次)网络爬虫之框架(第4周)
  2. 天蓝-skyblue迁移到博客园
  3. Linux IGMP SNOOPING 学习笔记 之三 igmp snooping实现需求分析
  4. PBX、FXO、FXS等通信相关知识
  5. C++数据结构之单链表(henu.hjy)
  6. 声纳---2篇SMC 一篇Trans Cybernitics --河海大学 --- 霍冠英
  7. 电子标签的制作及封装 射频标签通信协议简介 射频标签内存信息的写入方式
  8. 使用javax.imageio.ImageIO读取JPEG图片时出现异常java.awt.color.CMMException: General CMM error517
  9. 【深度学习】详解Faster-R-CNN
  10. 驾考科目一:道路交通安全法律、法规和规章