当前位置:   article > 正文

基于hadoop实现的关联规则挖掘的图书数据分析推荐系统_基于hadoop的图书推荐系统

基于hadoop的图书推荐系统

资源下载地址:https://download.csdn.net/download/sheziqiong/86763735
资源下载地址:https://download.csdn.net/download/sheziqiong/86763735

实验目的:

随着 Hadoop 与 Spark 产生的影响越来越深,各种基于 Hadoop 与 Spark 平台的数据分析系统也随之出现。本次实验要求各位同学利用之前实验以及所学知识实现一个基于 Hadoop、Spark 或其他大数据平台的数据分析系统,理解其中的实现细节以及各种算法的原理。

实验软件和硬件环境:

  1. 操作系统:Linux(实验室版本为 Ubuntu17.04,集群环境为 centos6.5);
  2. Hadoop 版本:2.9.0;
  3. JDK 版本:1.8;
  4. Java IDE:Eclipse 3.8。
  5. Spark 版本:实验室版本为 2.1.0,集群环境为 2.3.0;
  6. Maven

实验要求:

基本要求:实现的数据分析系统要有对数据分析结果以及各种功能的图形化、图表化展示界面。

高级要求:在数据分析系统中应用算法解决一些实际问题,例如采用某个推荐系统算法实现产品推荐,或某个挖掘算法产生数据的深度分析结果,算法都是基于大数据系统的并行化算法。

实验主题:基于关联规则挖掘的图书推荐

在我国的图书出版和发行行业,经过多年的发展,图书市场在种类规模和总体数量等方面发展和增长迅速。但与此同时也带来了图书过多、读者难以选择的问题。常规的明细分类使得读者可以针对每- - 种类型的图书进行选择,但是每个分类下依然有成千上万种书籍。因此,基于读者的用户评论分析来进行图书推荐是一个具有实际应用价值的研究。

基于 Apriori 关联规则挖掘算法进行图书推荐的应用算法设计和实现,将利用大量图书评论数据,使用 MapReduce 并行化处理技术来完成图书的 k-频繁项集挖掘和图书推荐置信度的计算,在此基础上完成图书的推荐应用,并整合图书评分统计系统。

实验原理:

频繁项集挖掘

关联规则用来描述事物之间的联系,用来挖掘事物之间的相关性。挖掘关联规则的核心是通过统计数据项获得频繁项集。

设 I={i,i, .,im} 是项的集合,设任务相关的数据 D 是数据库事务的集合,其中每个事务 T 是项的集合,每一个事务有一个标志符,称作 TID。设 A 和 B 是两个项集,A、B 均为 I 的非空子集。关联规则是形如 A->B 的蕴涵式,并且 A∩B=φ。关联规则挖掘涉及到以下几个关键概念。

1 置信度/可信度( Confidence)。 置信度即是“值得信赖性”。设 A, B 是项集,对于事务集 D, A∈D, B∈D, A∩B=φ,A->B 的置信度定义为:置信度(A->B)=包含 A 和 B 的元组数/包含 A 的元组数。

Confidence(A->B) = P(B|A) = P(AB)/P(A)
  • 1

2 支持度(Support)。 支持度(A->B) =包含 A 和 B 的元组数/元组总数。支持度描述了 A 和 B 这两个项集在所有事务中同时出现的概率。

Support(A->B) = P(AB)
  • 1

3 强关联规则。设 min_sup 是最小支持度阈值; min_conf 是最小置信度阈值。如果事务集合 D 中的关联规则 A->B 同时满足 Support(A->B)>=min_sup, Confidence(A->B)>=min_conf

Apriori 频繁项集挖掘算法简介

Apriori 算法是频繁项集挖掘中的经典算法。Apriori 算法通过多轮迭代的方法来逐步挖掘频繁项集。在第一轮迭代中,计算事务数据库中每一个项的支持度并找出所有频繁项。在之后的每一轮迭代中,将前一轮生成的频繁 k-项集作为本轮迭代的种子项集,以此来生成候选(k+1)-项集。这些候选项集在整个事务数据库中可能是频繁的,也可能是非频繁的。在本轮迭代中,需要计算每个候选(k+1)-项集在事务数据库中的实际支持度,以找出全部的(k+1)-频繁项集并将其作为下一轮的种子项集。这样的迭代过程将一直进行 下去,直到不能产生新的频繁项集为止。

根据频繁项集的定义,为了找出所有的频繁项集,需要对一条事务中的全部项穷尽各种组合(即组成项集),并计算每一种组合的支持度,以判定各组合是否为频繁项集。对于一条包含 m 个项的事务,其所有的组合最多可达 2 的 m 次方种。为了减小项集组合的搜索空间,Apriori 算法利用了以下两条性质:

性质 1:频繁项集的任何非空子集都是频繁的。

性质 2:非频繁项集的任何超集都是非频繁的。

实验数据:Book-Crossing Dataset

该数据集有 SQL 和 CSV 两种格式。

`BX-Books`记录了图书信息
CREATE TABLE `BX-Books` (
    `ISBN` varchar(13) binary NOT NULL default '',
    `Book-Title` varchar(255) default NULL,
    `Book-Author` varchar(255) default NULL,
    `Year-Of-Publication` int(10) unsigned default NULL,
    `Publisher` varchar(255) default NULL,
    `Image-URL-S` varchar(255) binary default NULL,
    `Image-URL-M` varchar(255) binary default NULL,
    `Image-URL-L` varchar(255) binary default NULL,
    PRIMARY KEY  (`ISBN`)
    TYPE=MyISAM;
    `BX-Book-Ratings`记录了图书评分信息
    CREATE TABLE `BX-Book-Ratings` (
        `User-ID` int(11) NOT NULL default '0',
        `ISBN` varchar(13) NOT NULL default '',
        `Book-Rating` int(11) NOT NULL default '0',
        PRIMARY KEY  (`User-ID`,`ISBN`)
        TYPE=MyISAM;
        `BX-Users`记录了用户信息
        CREATE TABLE `BX-Users` (
            `User-ID` int(11) NOT NULL default '0',
            `Location` varchar(250) default NULL,
            `Age` int(11) default NULL,
            PRIMARY KEY  (`User-ID`)
            TYPE=MyISAM;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

实验思路:

  1. 使用 hadoop 作为大数据处理框架,通过 apriori 进行频繁项集数据挖掘。
  2. 使用 Web 项目作为展示平台。
  3. 前端 bootstrap,实现响应式布局,适配多种设备。
  4. 后端 Java Web。用户交互页面有搜索页面和展示页面。使用 JSP+JavaBean+Servlet。该模式遵循了 MVC 设计模式,
  5. 使用 Maven 作为项目管理工具。
  6. 搜索页面,用户填入搜索书籍名

  1. 搜索后的结果展示,巨幕展示了所搜索书籍的完整信息,包括平均评分。巨幕下方展示了所推荐的图书,可以通过点击进入到该图书的详细页面。

数据处理:

1 数据预处理

由于数据中有少量不规则的数据,需要进行预处理,主要使用正则表达式。

数据输入形式:

User-ID;"ISBN";"Book-Rating",,  
276725;"034545104X";"0",,  
276726;"0155061224";"5",,  
276727;"0446520802";"0",,  
276729;"052165615X";"3",,  
276729;"0521795028";"6",, 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

数据预处理后:

1.0140219854  0312954468  0312983263  0446523747  3498020862  
2.068483068X  0743446593  
3.0679735909  0744552192  
4.0590396056  
5.0671673688  0671888587  0771091583  0440211727  0771099975  0553277472  0671759310  0440295653  0671016652  
6.0743225082  
7.067087146X  0735611807  0764515489  0786881852  0789722097  0806931345  0915811898  1579120636  0688176933  0375702652  
8.0375727345  0060937734  
9.044021422X  
10.0395617693  0395618185  0440405084  0673801012  014034294X  1856978842  0064400204  0743400526  
11.9727595553  
12.0440224675  
13.0749399627  1857992083  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

数据展示:

  1. 使用 Web 项目作为展示平台。
  2. 前端 bootstrap,实现响应式布局,适配多种设备。
  3. 后端 Java Web。用户交互页面有搜索页面和展示页面。使用 JSP+JavaBean+Servlet。该模式遵循了 MVC 设计模式,
  4. 使用 Maven 作为项目管理工具。
  5. 搜索页面,用户填入搜索书籍名

  1. 搜索后的结果展示,巨幕展示了所搜索书籍的完整信息,包括平均评分。巨幕下方展示了所推荐的图书,可以通过点击进入到该图书的详细页面。

资源下载地址:https://download.csdn.net/download/sheziqiong/86763735
资源下载地址:https://download.csdn.net/download/sheziqiong/86763735

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/193156
推荐阅读
相关标签
  

闽ICP备14008679号