推荐系统的基本架构:

实时推荐和离线推荐

源码: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. 使用 .NET 对事件进行编程
  2. Python语言的有限状态机实现样例
  3. linux搭建--DISPLAY环境变量问题(一)
  4. 微盟616助力品牌潮出圈背后,智慧零售迈入广阔收获期
  5. react router4 需要配置2遍BrowserRouter
  6. PMP之项目整合管理
  7. 近67万辆奔驰汽车被召回,涉及C级、SLC级等车型
  8. javaweb通过iis实现域账号免登陆_聊天小程序的Java实现
  9. 自助式BI分析有哪些优势
  10. php寻仙记,【网站搭建】寻仙记+天空之城两款文字游戏PHP源码
  11. 基于JavaWeb的高校试题库管理系统设计与实现 毕业论文+项目源码及数据库文件、
  12. 关于一般公司加密软件的处理程序实现解密方法
  13. matlab希尔伯特变换,希尔伯特变换和傅里叶变换MATLAB仿真
  14. c软件查表获得电量代码_energy.c 源代码在线查看 - 基于单片机的多费率电能表源程序 资源下载 虫虫电子下载站...
  15. mysql8安装错误,Windows安装MySQL8.0.16 的步骤及出现错误问题解决方法
  16. 嵌入式学习用什么编程语言
  17. mpaas的h5容器之离线包的一些总结
  18. 二进制部署kubernetes 1.25.5(二)
  19. Python画用电客户日负荷曲线图
  20. win10 windows文件查找通配符

热门文章

  1. 一夜狼人杀:千万不要沉默不语,参与游戏聊自己的角色
  2. 服务器无法用u盘安装系统安装win7系统安装不了怎么办,为什么新电脑不支持安装Win7操作系统?...
  3. InfiniBand技术和协议架构分析
  4. 组合模式(Bridge Pattern) – 设计模式之结构型模式
  5. 加强我国人工智能国防应用的研究与思考
  6. apple iMac一体机 装双系统 实战! (Apple +Win 7 64bit)Good
  7. [GWCTF 2019]枯燥的抽奖 1——php_mt_seed
  8. (转)用AGG实现高质量图形输出(一)
  9. matlab 找不到 mcr,如何在没有MCR / MATLAB的情况下在C#中使用MATLAB编译的DLL?
  10. 专业python培训报价多少