论文部分内容阅读
互联网的飞速发展给人们带来了信息红利,但随着网络数据量的迅速膨胀,用户想要第一时间获得符合自己口味的信息或者服务变得十分困难。推荐算法在这种背景下应运而生,它可根据用户行为日志对此用户后续可能需要的物品或服务进行预测,然后由推荐系统推荐给该用户。随着用户行为日志的增多,一般推荐算法由于硬件的限制,不能快速地进行推荐。分布式框架的出现为推荐算法的进一步发展提供了契机,其中Spark计算框架引入了分布式数据集RDD和常用算子,使得分布式计算无论是算法的实现还是模型的训练都具有优势。但是目前国内外对基于Spark的推荐算法的研究并不多,所以本文在这种场景下对推荐算法以及基于Spark的并行推荐算法进行了研究及算法实现。本文所做工作如下:1.对基于模型的ALS推荐算法进行了改进,提出了一种结合主题模型的推荐算法。通过改进的LDA算法对项目特征文件进行建模,提取文档-主题概率分布。然后提出KL-散度度量方式进行项目相似度的计算,通过最大阈值及邻居个数的统计方式获取项目高相似度矩阵。再将高相似度矩阵和原评分矩阵进行结合得到预测评分,然后将预测评分填入原评分得到训练集。最后利用ALS算法训练模型并预测评分。改进算法将项目文件处理后填充到原数据集中,解决了项目冷启动问题并缓解了数据稀疏问题。通过实验的验证,改进算法的预测误差低于ALS算法以及其他相关的协同过滤算法。2.将改进算法进行并行化,提出了一种结合主题模型的并行推荐算法,该算法基于Spark分布式数据集RDD以及Spark算子实现。首先分析了Spark LDA算法和Spark ALS算法的源码,并证明其并行的可行性。然后在Spark计算框架上利用Spark算子将SparkLDA算法和SparkALS算法进行了集成。作者首先根据电影特征文件爬取电影影评信息,并行分词后输入SparkLDA算法,得到文档-主题分布RDD;再通过笛卡尔积算子和join算子结合原评分元组RDD,得到预测评分RDD;然后利用union算子将预测评分RDD和原评分RDD组合成训练集RDD;最后输入Spark ALS算法并行计算得到模型。通过预测误差的实验,证明了改进的并行算法的预测准确率高于SparkALS算法,并且在KL-散度度量相似度的条件下最为明显。通过在多个节点的并行算法以及单节点串行算法实验的验证,表明了改进的并行算法在大数据量时具有良好的并行效果,在一定程度上解决了低时效问题。