论文部分内容阅读
用户在面对海量信息时无法从中获得对自己真正有用的那部分信息,对信息的使用效率反而降低,这就是信息超载问题。推荐系统是一种解决信息超载问题非常有效的办法,它根据用户的信息、兴趣等,将用户感兴趣的信息或商品推荐给用户。然而,现有的推荐系统大多是通过定期计算来更新推荐结果,造成推荐结果不够精确,这就是推荐系统的实时性问题。另外,对于新加入的用户或商品由于缺少必要的数据,因此无法对其产生推荐,这就是所谓的冷启动问题。针对上述问题,本文旨在解决推荐算法的冷启动问题和推荐系统的实时性问题,并设计与实现一个基于Spark实时流计算的推荐系统,即根据实时数据更新推荐结果。本文的主要研究内容包括:(1)针对推荐算法的冷启动问题,提出基于聚类与特征映射的矩阵分解算法。该算法首先对用户/商品的属性信息进行聚类,得出新用户/新商品的k个最近邻。然后对新用户/新商品进行特征映射,用k近邻的特征信息计算出新用户/新商品的特征向量,有了这些特征向量就可以对新用户/新商品进行推荐,解决了算法的冷启动问题。实验表明本文提出的基于聚类与特征映射的矩阵分解算法的推荐结果更加精确。(2)针对推荐系统的实时性问题,设计一个能够实时计算的流处理架构。该架构把推荐系统分成离线计算和在线计算两部分,能够充分利用传统的离线推荐算法,并结合在线处理方法,提高推荐系统实时计算的能力。所设计的实时推荐系统采用Spark做在线处理,并且能够根据用户在线评分和历史评分数据集来实时计算,实现了推荐结果的实时更新。(3)基于Spark的实时流计算推荐系统的设计与实现。首先对实时流计算的推荐系统进行需求分析,包含功能需求分析、性能需求分析和总体架构分析。然后对系统进行设计,包括三个关键模块:一是对模拟用户评分模块进行设计,包含数据的范围、数据的格式和数据产生的频率及数量等。二是对基于Spark Streaming的实时流计算模块进行设计,包含实时流计算和一些关键性的功能的设计。三是基于MLlib对推荐引擎模块进行设计,包含模型的训练、模型的测试和推荐商品等。最后完成了实时流计算的推荐系统的实现,主要实现模拟用户评分、实时流计算和推荐引擎三个主要功能。