论文部分内容阅读
互联网信息的爆炸式增长、信息的种类变得纷繁复杂以及新兴电子商务服务的出现使得信息过载的情况变得越来越严重。因而在信息过滤工具中,推荐系统的地位也变得越来越重要。在实际使用的系统中,使用最多的个性化推荐方法就是协同过滤算法。但随着推荐系统规模的不断扩大,传统的推荐算法大多都会遇到严重的计算瓶颈,且大量的数据并未显著提高推荐算法的精度。因此,为了应对不断增长的数据规模,对协同过滤推荐算法的并行化改造是十分必要的。本文对基于MapReduce并行计算框架的协同过滤推荐算法的设计及实现进行了研究。首先使用MapReduce框架对算法进行并行化,之后针对不同算法进行优化。对于基于物品的协同过滤算法,使用共现矩阵替换相似度矩阵,降低计算相似度矩阵所消耗的时间;在计算推荐结果的时候,使用Top-N的方法选择最近邻进行计算,降低算法的计算量。对于基于用户的协同过滤算法,将数据使用聚类的方法进行分组。对每个分组的数据,将同一分组的用户作为最近邻,计算组内推荐值;使用所有的中心用户作为近邻,计算出组间推荐值。将这三个推荐结果作为训练数据,实际评分作为输出结果,使用线性回归的方法进行建模。针对这个模型,定义损失函数后,使用梯度下降的方法求出最优的混合比例。具体来说,通过将数据进行十折交叉,划分出多个数据分组,通过不同的Top-N值及数据分组,可以训练出不同的混合参数,再使用这个参数对所有的数据分组计算出MAE值和RMSE值的均值。通过比较计算出的均值,选择最优的混合系数和Top-N值。在实验中通过对前述两个算法所产生的三份推荐结果进行混合来产生最终的推荐结果,并对推荐结果的精度进行了验证。同时针对程序的运行时间,评估了改进后的算法的性能。实验结果表明,修改后的协同过滤算法,不仅提高了协同过滤算法对大规模数据的处理能力,同时通过对不同结果的混合,提高了算法的精度。与基于物品的协同过滤算法相比,算法的准确率有明显提升,且程序运行时间有明显的下降;与基于用户的协同过滤算法相比,算法的准确率提升明显,而通过分组的方式也降低了算法在计算相似度矩阵和计算结果所消耗的时间,效率有明显提升。