文章的UML图比较好看.....

原文链接:www.cnblogs.com/anny-1980/articles/3519555.html

基于物品的协同过滤ItemCF

数据集字段:

1.  User_id: 用户ID

2.  Item_id: 物品ID

3.  preference:用户对该物品的评分

算法的思想:

1.  建立物品的同现矩阵A,即统计两两物品同时出现的次数

数据格式:Item_id1:Item_id2        次数

2.  建立用户对物品的评分矩阵B,即每一个用户对某一物品的评分

数据格式:Item_id          user_id:preference

3.  推荐结果=物品的同现矩阵A * 用户对物品的评分矩阵B

数据格式:user_id           item_id,推荐分值

4. 过滤用户已评分的物品项

5.对推荐结果按推荐分值从高到低排序

原始数据:

1,101,5.0

1,102,3.0

1,103,2.5

2,101,2.0

2,102,2.5

2,103,5.0

2,104,2.0

3,101,2.0

3,104,4.0

3,105,4.5

3,107,5.0

4,101,5.0

4,103,3.0

4,104,4.5

4,106,4.0

5,101,4.0

5,102,3.0

5,103,2.0

5,104,4.0

5,105,3.5

5,106,4.0

6,102,4.0

6,103,2.0

6,105,3.5

6,107,4.0

Hadoop MapReduce程序分为四步:

第一步: 读取原始数据,按用户ID分组,输出文件数据格式为

1         103:2.5,101:5.0,102:3.0

2         101:2.0,102:2.5,103:5.0,104:2.0

3         107:5.0,101:2.0,104:4.0,105:4.5

4         103:3.0,106:4.0,104:4.5,101:5.0

5         101:4.0,102:3.0,103:2.0,104:4.0,105:3.5,106:4.0

6         102:4.0,103:2.0,105:3.5,107:4.0

第二步:统计两两物品同时出现的次数,输出文件数据格式为

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

第三步:生成用户评分矩阵和物品同现矩阵

第一个mapper结果为用户评分矩阵,结果如下:

101       2:2.0

101       5:4.0

101       4:5.0

101       3:2.0

101       1:5.0

102       2:2.5

102       1:3.0

102       6:4.0

102       5:3.0

103       6:2.0

103       5:2.0

103       1:2.5

103       4:3.0

103       2:5.0

104       5:4.0

104       2:2.0

104       3:4.0

104       4:4.5

105       5:3.5

105       3:4.5

105       6:3.5

106       4:4.0

106       5:4.0

107       3:5.0

107       6:4.0

第二个mapper生成物品同现矩阵,结果如下:

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

第四步:做矩阵乘法,推荐结果=物品的同现矩阵A * 用户对物品的评分矩阵B

结果如下:

1         107,10.5

1         106,18.0

1         105,21.0

1         104,33.5

1         103,44.5

1         102,37.0

1         101,44.0

2         107,11.5

2         106,20.5

2         105,23.0

2         104,36.0

2         103,49.0

2         102,40.0

2         101,45.5

3         107,25.0

3         106,16.5

3         105,35.5

3         104,38.0

3         103,34.0

3         102,28.0

3         101,40.0

4         107,12.5

4         106,33.0

4         105,29.0

4         104,55.0

4         103,56.5

4         102,40.0

4         101,63.0

5         107,20.0

5         106,34.5

5       105,40.5

5         104,59.0

5         103,65.0

5         102,51.0

5         101,68.0

6         107,21.0

6         106,11.5

6         105,30.5

6         104,25.0

6         103,37.0

6         102,35.0

6         101,31.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 大数据Hadoop学习之————基于物品的协同过滤算法实现物品推荐

    一.基础概念 协同过滤算法一般分为两种实现: 基于用户的协同过滤算法(userCF):通过寻找相似兴趣的其他用户,为指定用户推荐物品.比如用户A喜欢商品A.B,用户B也喜欢商品A和B,则可以认为用户A ...

最新文章

  1. AI破解古文字登Nature封面:修复缺失文字,精确地理位置和书写时间,DeepMind哈佛谷歌多家联手开发...
  2. FreeRTOS实验_独立看门狗监视多线程
  3. python字典有什么用_在Python中使用范围作为字典键,我有什么选...
  4. [WPF系列]-Deep Zoom
  5. 如何关掉Microsoft Office Click-to-Run服务
  6. typedef和#define的作用域问题
  7. 到底要不要报考“通信工程”?
  8. 4 相机切换_价格屠夫、训练伴侣——海鸟4K运动相机简评
  9. 面试技巧,如何通过索引说数据库优化能力
  10. Jcreator Pro 使用技巧
  11. linux info命令详解,Linux info 命令简介
  12. 计算机导论学习综合训练及其答案
  13. 《老路用得上的商学课》66-70学习笔记
  14. iOS开发之企业开发者账号打包发布 App 到服务器上的流程
  15. 解决:服务器种挖矿程序的一次实战记录~
  16. python openpyxl模块 合并单元格,设置行高,列宽,边框,居中,字体样式
  17. Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配
  18. memcache学习
  19. 基于全光节点频谱集中度和频谱离散转换的业务调度方法
  20. 史上最强Java八股文面试题,堪称2023最强!!!

热门文章

  1. 装饰器 -- 函数装饰器(tornado异常响应装饰器)
  2. Linux基础命令---comm
  3. easyui datebox时间控件如何只显示年月
  4. ubuntu常见问题:could not get lock /var/lib/dpkg/lock -open
  5. Eclipse helios 上编写arduino程序并进行烧录
  6. 用户、组以及相关文件说明
  7. OpenCV训练分类器
  8. 1、Tensorflow 之 saver与checkpoint
  9. 雷林鹏分享:Ruby Web Services 应用 - SOAP4R
  10. linutx 基本配置