实验报告

一、实验目的

1.学习利用hadoop处理大数据。

2. 通过实验加强mapreduce编程能力。

3. 在掌握协同过滤算法基础上通过mapreduce实现。

二、实验内容

1.使用给定的数据集,随机从数据集中抽取119条数据作为测试数据。

2.利用Pearson correlation作为相似度计算方法计算movie-movie相似度。

3.使用RMSE算出预测误差。

三、实验环境

centos操作系统、eclipse

四、实验原理

4.1 推荐系统分类

目前推荐系统主要分为两大类:

1、基于内容的系统。此类系统主要考查的是推荐项的性质。比如,如果优酷的某用户喜欢看武侠电影,系统就会将数据库中属于“武侠电影”类的电影推荐给该用户。(基于内容的系统需要一定的领域知识。)

2、协同过滤系统。这类系统通过计算用户或/和项之间的相似度来推荐项。与某用户相似的用户所喜欢的项会推荐给该用户。

4.2协同过滤

协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。

协同过滤可细分为以下三种:

User-based CF: 基于User的协同过滤,通过不同用户对Item的评分来评测用户之间的相似性,根据用户之间的相似性做出推荐;

Item-based CF: 基于Item的协同过滤,通过用户对不同Item的评分来评测Item之间的相似性,根据Item之间的相似性做出推荐;

Model-based CF: 以模型为基础的协同过滤(Model-based CollaborativeFiltering)是先用历史资料得到一个模型,再用此模型进行预测推荐。

与传统文本过滤相比,协同过滤有下列优点:

(1)能够过滤难以进行机器自动基于内容分析的信息。如艺术品、音乐;

(2)能够基于一些复杂的,难以表达的概念(信息质量、品位)进行过滤;

(3)推荐的新颖性。

正因为如此,协同过滤在商业应用上也取得了不错的成绩。Amazon,CDNow,MovieFinder,都采用了协同过滤的技术来提高服务质量。

缺点是:

(1)用户对商品的评价非常稀疏,这样基于用户的评价所得到的用户间的相似性可能不准确(即稀疏性问题);

(2)随着用户和商品的增多,系统的性能会越来越低;

(3)如果从来没有用户对某一商品加以评价,则这个商品就不可能被推荐(即最初评价问题)。

因此,现在的电子商务推荐系统都采用了几种技术相结合的推荐技术。

4.3基于Item的协同过滤

下面举电影评分的例子,说明基于Item的协同过滤方法,由于Pearson correlation的计算结果和对数据去中心化后算得的余弦值距离相同,所以本实验采用对数据去中心化,计算其余弦值距离作为相似度计算方法,具体方法如下:

(1)算出数据集中电影j的平均评分

(2)对用户对电影的评分去中心化

(3)从数据集中随机选择若干条数据作为测试集

(4)计算测试集电影i与数据集所有电影j的相似度

(5)求出最相似的N个电影数据

(6)根据最大相似度电影数据计算测试集中用户i对电影j的评估分

(7)计算测试集中用户i对电影j的评分与上一步算出的评估分的差异diff

(8)计算测试集的均方根误差RMSE(其中T为测试集,N为测试集总数)

 

五、实验过程

5.1.计算每部电影j的平均评分

Mapper的输入格式为:

(用户i,电影j及用户i对电影j评分)

Mapper的输出格式为:
(电影j,用户i对电影j评分)

Reducer的输入格式(Mapper 的计算输出)为:

(电影j,用户i对电影j评分)

Reducer的输出为:
(电影j,所有用户i对电影j的平均评分)

5.2 对用户对电影的评分去中心化

Mapper 的输入为:
(用户i,电影j及用户i对电影j评分)

(电影j,所有用户i对电影j的平均评分)

Mapper 的输出为:

(电影j,所有用户i对电影j的平均评分)

(电影j,用户i及用户i对电影j评分)

Reducer 的输入格式(Mapper 的计算输出)为:

(电影j,所有用户i对电影j的平均评分)

(电影j,用户i及用户i对电影j评分)
      Reducer 的输出为:
(电影j,用户i及用户i对电影j的规范化评分)

5.3 从数据集中随机选择输出119条数据作为测试集

Mapper 的输入为:
(用户i,电影j及用户i对电影j评分)

Mapper 的输出为:

(电影j,用户i及用户i对电影j评分)(随机选择输出119条数据)

Reducer 的输入为:
(电影j,用户i及用户i对电影j评分)

Reducer 的输出为:

(电影j,用户i及用户i对电影j评分)(输出119条数据)

5.4 计算测试集电影i与数据集所有电影j的相似度

Mapper 的输入为:
(电影j,用户i及用户i对电影j的规范化评分)

Mapper 的输出为:

(<电影j,电影i>,电影j,用户i,用户i对电影j的规范化评分)

(<电影j,电影i>,电影i,用户i,用户i对电影j的规范化评分)

Reducer 的输入格式(Mapper 的计算输出)为:

(<电影j,电影i>,电影j,用户i,用户i对电影j的规范化评分)

(<电影j,电影i>,电影i,用户i,用户i对电影j的规范化评分)

Reducer 的输出为:
(<电影j,电影i>,电影j与电影i的相似度)

5.5 从上一步中求出最相似的20个电影数据

Mapper 的输入为:
(<电影j,电影i>,电影j与电影i的相似度)

Mapper 的输出为:

(0,<电影j,电影i> 电影j与电影i的相似度)

Reducer 的输入格式(Mapper 的计算输出)为:

(0,<电影j,电影i> 电影j与电影i的相似度)

Reducer 的输出为:
(电影j与电影i的相似度,<电影j,电影i>)(选择输出最大相似度的20个数据)

5.6 根据最大相似度电影数据计算测试集中用户i对电影j的评估分

Mapper 的输入为:
(用户i,电影j及用户i对电影j评分)(最大相似度的20个数据通过configration传进去)

Mapper 的输出为:

(电影j,用户i,用户i对电影j的评估分)

(这里的[电影j,用户i]为key,下同)

Reducer 的输入格式(Mapper 的计算输出)为:

(电影j,用户i,用户i对电影j的评估分)

Reducer 的输出为:
(电影j,用户i,用户i对电影j的评估分)

5.7 计算测试集中用户i对电影j的评分与上一步算出的评估分的差异diff

Mapper 的输入为:
(电影j,用户i,用户i对电影j评分)

(电影j,用户i,用户i对电影j的评估分)

Mapper 的输出为:

(<电影j,用户i>,用户i对电影j评分)

(<电影j,用户i>,用户i对电影j的评估分)

Reducer 的输入格式(Mapper 的计算输出)为:

(<电影j,用户i>,用户i对电影j评分)

(<电影j,用户i>,用户i对电影j的评估分)

Reducer 的输出为:
(<电影j,用户i>,)

5.8 计算测试集的均方根误差RMSE

Mapper 的输入为:
(<电影j,用户i>,)

Mapper 的输出为:

(diff,)

Reducer的输入格式(Mapper 的计算输出)为:

(diff,)

Reducer 的输出为:
(RMSE,)(其中T为测试集,N为测试集总数)

代码实现请查看用协同过滤算法对电影评分,并使用RMSE算出预测误差的MapReduce实现

实验报告:用协同过滤算法对电影评分,并使用RMSE算出预测误差相关推荐

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

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

  2. 基于协同过滤算法的电影推荐系统设计(二) - ALS算法详解

    0 系列文章目录 0.1 基于协同过滤算法的电影推荐系统设计(一) - 项目简介 0.2 基于协同过滤算法的电影推荐系统设计(二) - 推荐系统介绍 ALS是alternating least squ ...

  3. 毕业设计之基于协同过滤算法的电影推荐系统设计(一) - 项目简介

    由于本人今年毕业,为完成毕设特地想着实现一个简单的推荐系统设计,思来想去,小电影不就是很好的切入点嘛! 于是诞生该项目,将会一步步带着大家实现一个自己的电影推荐系统. 1 研究目标 从应用场景来看,基 ...

  4. “泰迪杯”挑战赛 - 基于用户协同过滤算法的电影推荐系统(附算法代码)

    目录 第 1 章 绪论 1.1.研究背景 1.2.国际发展形势第 2 章 基于用户协同过滤推荐技术 第 2 章 基于用户协同过滤推荐技术 2.1 电子商务推荐系统概述 2.2 协同过滤推荐技术 第 3 ...

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

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

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

    上一篇讲解了推荐算法的分类,这里电影推荐系统具体分析一下 第一步:建立用户电影矩阵模型 如表1所示,协同过滤算法的输入数据通常表示为一个m*n的用户评价矩阵Matrix,m是用户数,n是电影数,Mat ...

  7. 基于python协同过滤算法的电影推荐

    简介 协同过滤算法包括基于用户和基于物品的协同过滤算法. 基于用户协同过滤: "喜欢这个东西的人也喜欢--" 基于产品协同过滤: "像你一样的人也喜欢--" 设 ...

  8. Python基于用户协同过滤算法的电影推荐代码demo

    这是上午上课时即兴发挥并现场编写的一段小代码,稍微美化一下分享. 思路:假设已有若干用户名字及其喜欢的电影清单,现有某用户,已看过并喜欢一些电影,现在想找个新电影看看,又不知道看什么好.根据已有数据, ...

  9. 基于用户协同过滤算法的电影打分与推荐

    编写程序,生成数据模拟(也可以使用真实数据)多人对多部电影的打分(1~5分),然后根据这些数据对某用户A进行推荐. 推荐规则为:在已有数据中选择与用户A的爱好相似的用户B,然后从最相似的用户B已看过但 ...

最新文章

  1. OpenStack如何实现高可用集群介绍
  2. 去年黑客用的未知软件漏洞数量增长一倍 创下纪录
  3. 前端零基础教学开始第一天 01 -day
  4. spark on yarn 使用自定义jdk
  5. C语言版iso8583报文拆包组包代码
  6. Django数据查询方法总结
  7. 商品WEB开发的商品定单与存储过程的应用
  8. 机器学习十大经典算法之决策树
  9. Linux驱动编写(块设备驱动代码)
  10. FontExplorer X Pro for Mac字体管理软件
  11. 美年旅游_自由行_自由行分页PageHelper
  12. BZOJ 3689 异或之
  13. 淘宝 生成 图片二维码分享
  14. CSS精灵优化Retina显示屏下的网站图像
  15. Android后台耗电分析及优化
  16. 空白脂质体冻干粉制备以及荧光素修饰空白脂质体的应用
  17. java乘方运算符号_Java 4. 运算符号
  18. 计算机word资料,怎样快速找到电脑中的Word文档
  19. python随手记自动记账_随手记的5个常用功能,让你记账省心,高效,又安全
  20. 网页布局——盒子模型

热门文章

  1. Android之紧急拨号的处理
  2. 控制电路中的紧急停止按钮,该用常开点NO还是常闭点NC?
  3. python 面试题 博客园_常见的python面试问题1
  4. sas程序常用方法解析
  5. 【Linux】使用Google Authenticator 实现ssh登录双因素认证
  6. 互动媒体——自画像+简单音乐可视化
  7. MATLAB中画曲线网格
  8. 用fluent模拟内循环床气化燃烧(调试过程记录)
  9. js 第1步:随机生成json对象,格式为:“[[{“text“:XXXX},{“text“:XXXX}],[{“text“:XXXX},{“text“:XXXX},{“text“:XXXX}]]“
  10. 推荐系统——利用用户行为数据