论文部分内容阅读
随着大数据时代的来临,用户面对互联网上庞杂的信息会显得茫然失措,推荐系统能够智能的找到用户的兴趣和需求,及时的将用户想要的信息以某种方式告知用户,因此有着很大的商业价值和研究空间。协同过滤推荐算法是一种广泛应用的推荐技术,基于矩阵分解的协同过滤算法是近几年提出的一种高效的协同过滤推荐技术,基于ALS(最小二乘法)的协同过滤算法就是一种通过矩阵分解技术进行推荐的算法,在实际推荐系统应用开发中经常用到。基于ALS的协同过滤算法本身有些特点,其每项预测评分的计算都要综合大量评分数据,同时在计算时还需要存储庞大的特征矩阵,如果在单一结点上运行将会遇到计算时间和计算资源的瓶颈。对于一个推荐系统,如果无法及时的适应用户兴趣和需求的变化,用户就不会满意,所以目前对该算法的研究主要集中在如何将其在分布式计算平台上进行有效地实现以加快计算速度。目前研究和应用开发都使用较多的一种分布式计算和存储平台是Hadoop,只需要将计算任务以一系列MapReduce作业的形式提交,Hadoop平台就能自动的将该作业进行分布式计算。通过对现有的基于ALS的协同过滤算法在Hadoop上并行化实现的原理和特点进行深入的研究,我们得到了传统的迭代式算法在Hadoop上的实现运算效率不高的原因,主要有静态数据重复传输、作业重复创建、无法判断迭代终止条件等的问题。通过对这些问题出现的原因进行分析,以及借鉴了HaLoop的迭代式计算的思想,我们提出了迭代式MapReduce实现方式。迭代式MapReduce实现方式主要包括循环感知任务调度算法、缓存静态数据、任务循环控制、迭代终止条件检测等方法。通过在两个公开数据集上的实验表明,迭代式MapReduce实现方式提高了基于ALS的协同过滤算法的并行化计算的效率,并且数据集越大,效率提高的越多。同时本文提出的迭代式MapReduce思想也能应用于其它迭代式数据挖掘算法的并行化实现,也能有计算效率的提高。