论文部分内容阅读
目前,推荐系统无论是在电子商务还是在社交网络都占据着举足轻重的位置。传统的个性化推荐系统虽然能为用户提供准确的推荐服务,但面对不断变化的用户需求还存一些缺陷。由于传统系统定期批量计算数据,使得系统的计算结果无法实时反馈给用户,推荐的数据不能实时更新,使得推荐有滞迟,这即是推荐系统中的实时性问题。此外,在网站的初始阶段,由于用户-物品评分数据的缺乏,导致系统无法进行有效的推荐,这即是推荐算法中的冷启动问题。针对上述问题,本文设计与实现了一个基于流式计算的个性化推荐系统,即将解决冷启动问题的改进的推荐算法应用到推荐系统中,并根据实时的数据流更新推荐结果,本文主要包括以下研究内容:(1)针对推荐算法的冷启动问题,提出了一种基于相似度加权KNN的特征映射算法(Feature Mapping based on Similarity Weighted KNN,FM-SWK)。该算法首先运用相关相似度作为KNN算法的相似性度量方式,求得新用户或新物品的k个最近邻,然后结合用户或物品的属性向量来建立新用户或新物品和已有评分的用户或物品之间的映射关系,最后利用k个最近邻用户或物品的特征信息通过相似度加权的方式来估算新用户或新物品的特征值。其次,将FM-SWK算法和基于ALS-WR(Alternating Least Squares with Wighted Lmabda Regularization,加权正则化交替最小二乘法)的矩阵分解算法相结合,提出基于FM-SWK-ALS(FM-SWK and ALS-WR)的混合推荐算法,该算法利用FM-SWK算法求得的新用户和新物品的特征值,通过基于ALS-WR的矩阵分解模型对新用户或新物品进行推荐。同时,针对基于FM-SWK-ALS的混合推荐算法时间复杂度高和无关的用户和物品特征向量也被计算的问题,从用户和物品两个方面,提出适用于实时数据流的改进方案,该方案增量计算新用户或新物品的特征向量,规避不必要用户或物品特征向量的求解,然后将其应用到上述的混合推荐算法中。我们在搭建的Spark集群上使用公开的Movie Lens数据集对上述提出的混合推荐算法和其改进方案进行分析,将基于ALS-WR的矩阵分解算法和使用平均值填充新用户和新物品缺失评分值的AVG-ALS(ALS-WR based on Average)作为对比算法,从用户和物品两方面分析得出,基于FM-SWK-ALS的混合推荐算法的MAE(Mean Absolute Deviation)和RMSE(Root Mean Square Error)的值明显优于两种对比算法,其改进方案随着数据量的不断增加,迭代计算时间变化缓慢,满足系统计算时间需求。实验结果表明,基于FM-SWK-ALS的混合推荐算法可以在一定程度上有效地解决因由于用户-物品评分数据的缺乏无法进行有效推荐的问题,提高了推荐系统的推荐精度,其改进方案可以有效的提升算法的推荐效率。(2)针对传统推荐系统存在计算缓慢无法根据用户实时行为做出推荐的问题,本文设计并实现了一种能够实时计算的流式处理架构,将该架构和(1)提出的混合推荐算法相融合搭建基于流式计算的个性化推荐系统,并根据需求分析对系统模块进行设计和实现,主要分为基于Flume和Kafka的实时数据流模块、基于Spark Streaming的实时流计算模块和基于Spark中MLlib的推荐引擎模块,并使用HDFS和Hbase进行数据存储,前两者为在线处理部分,后两者为离线处理部分。系统通过将离线处理与在线处理相结合,也即由离线处理部分完成复杂度高、运算量大的计算,而由在线处理部分完成轻量级的计算,从而使得推荐系统能够实时响应用户行为。本文通过实验对设计出的实时推荐系统进行准确性和实时性能测试,其中,改进的FM-SWK-ALS混合推荐算法的准确率、召回率比传统的User CF、Item CF平均都要高出1.5%;本文搭建的实时推荐系统当瞬时数量在8000以内或评分速率在2500以内时,系统的平均响应时间都在5s以内。实验结果表明本文基于流式计算的个性化推荐系统具有良好的性能,在解决冷启动问题的同时,能够满足实时推荐的需求。