赞
踩
随着互联网的快速发展,网络数据量不断增加,已经进入了大数据时代。大量的信息和商品同时呈现在用户面前,使我们面临一个严重的问题-信息过载,而个性化推荐是解决该问题一个有效的方法,协同过滤方法是目前在实际推荐系统中应用最多的个性化推荐方法,它基于群体的偏好来为用户提供推荐。传统单机的协同过滤算法无论从效率上,还是从计算复杂度上都已无法满足海量信息的处理需要,云计算技术的发展为推荐算法提供了新的研究方向。因此,可以考虑利用结合大数据技术来应对算法扩展性等问题。本文对基于Hadoop大数据处理技术的聚类协同过滤推荐算法进行研究与实现,并对电影数据集进行应用分析。主要对Hadoop两大主要框架、经典聚类算法及推荐算法的相关概念进行了研究;提出基于Hadoop大数据处理技术的分布式聚类协同过滤推荐算法,来解决协同过滤算法应对数据稀疏性和算法的扩展性问题;对数据的稀疏性采用矩阵分解方法预处理初始数据,将预处理后的数据通过聚类算法来建立聚类模型
1 引言
推荐系统的设计与实现也面临这样的问题,现有的许多用户数据都是从网站日志里来获取,而对于流量非常之大的电子商务网站来说,数据量是非常之大的。而通常用户信息以及商品数据如果使用单机进行处理,那是不可完成的任务。所以推荐系统中算法以及数据的存储都需要分布式框架来进行处理。目前出现的大数据处理框架当中,Hadoop毫无疑问是最流行的框架之一,HDFS分布式存储框架以及MapRedu。
2 Hadoop平台研究
Hadoop是一个分布式系统基础架构,是一个可以更容易开发和运行处理大规模数据的软件平台。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性(fault-tolerent)的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。
HDFS 是采用主从架构模式的。在 HDFS 中有两种节点:一个名字节点(namenode)和多个数据节点(datanode)。
名字节点负责管理文件系统的命名空间,维护着文件系统结构树和其中的所有文件和索引目录。另外,名字节点还记录着每个文件的每个数据块所在的数据节点的位置,这些信息会随着每次系统启动时重新建立。客户端用户通过访问名字节点,获得所需数据在相应的数据节点的位置来访问整个文件系统。所以用户在编程时不需要知道名字节点和数据节点及其所在位置。
3 推荐算法的混合
由于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。
4 基于Hadoop平台的混合推荐系统的设计
整个系统是基于Hadoop实现的,Hadoop是一个分布式的大数据计算系统,主要由Mster阶段和DataNode节点构成,Master节点负责管理整个整个分布式系统包括MapRedcue任务的计算以及Hadoop分布式文件系统的元数据管理(通常都是交由Master管理,也可以另外设定),而DataNode负责存储数据以及Map任务以及Reduce任务的计算。Hadoop的工作机制和在第三章已经有相似的阐述。其他的工作模块是依赖于Hadoop来实现的,如图5-6所示。每个模块在启动数据处理和数据访问(获取HDFS或者HBase的数据)的时候都首先向Master请求,并在Master处理请求之后和DataNode进行交互。
推荐引擎内部的算法通常都是面对大数据量并且算法可以进行切分并行计算,将算法以Map和Reduce方式进行切割,并且设计好key和value。对于算法的相似设计会在推荐系统的实现部分根据具体算法进行描述。对Hadoop的使用通常都使用Hadoop封装好的client程序包来进行调用。由client向Master进行请求,然后根据数据切分Map任务,把各个Map任务分配到不同的节点上运行,运行完之后reduce任务把相应的数据结果拉去过来继续计算。完成之后生成最终的结果。
5 结语
对于基于Hadoop的推荐系统的设计,使用了软件设计模式的一些思想来对设计进行指导。比如使用了策略模式,工厂模式等等。这些主要在算法的实现部分有阐述。另外整个系统是进行分层设计的。
在实现部分,论文着重阐述了数据预处理模块的实现,以及推荐引擎的实现,并是运用了策略模式来实现推荐引擎的可扩展。本论文还详细描述了各个推荐引擎的实现。
论文还可以朝以下几个方面进行探索和研究:
(1) 系统的冷启动,在这方面可以使用用户的注册数据以及商品的数据使用基于内容的推荐系统进行推荐。但需要研究具体的实现。
(2)为用户做推荐的时候没有将实时性考虑进去,后续的研究工作当中会着重研究如何根据提取日志数据来对实时性进行考虑。
使用springboot,vue,mysql, mybaties, typescript, html ,css, js 等进行开发
开发工具主要有:idea、jdk1.8、maven、mysql5.7、Navicat等。
@RequestMapping("/strategy") @RestController @Scope("prototype") public class StrategyController { @Autowired private StrategyService strategyService; @Value("${web.upload-path}") private String path; @RequestMapping("/findPage") public ObjDat<Strategy> findPage(Strategy strategy, @RequestParam(value="page", defaultValue="1") int page, @RequestParam(value="limit", defaultValue="10") int limit){ return strategyService.findPage(strategy,page-1,limit); } @RequestMapping("/edit") public JsonResult edit(HttpServletRequest request, Strategy strategy) throws IOException { User user=(User)request.getSession().getAttribute("user"); if(user==null){ return JsonResult.error("请登录"); } String str=strategyService.edit(request,strategy); if(str.equals("成功")){ return JsonResult.success("操作成功"); }else{ return JsonResult.error("操作失败"); } }
项目功能演示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。