时间:2024-05-04
洪继炜,王佳斌,刘 成
(华侨大学工学院,泉州 362021)
互联网技术不断发展,数据量的剧增,信息爆炸和大数据技术的普及,促进了个性化推荐技术的不断发展。用户在使用互联网时,面对数以万计的信息、大量的数据,可以快速得到自己想要的信息变成了一个非常值得研究的课题。推荐系统[1-2]随之而来,也成为各大互联网公司研究的重点,各大互联网公司通过自家业务的特点,研究出适合自家公司业务的推荐算法,从而提高用户满意度,提升公司收益。推荐系统的核心是推荐算法,一个优秀的推荐算法可以给用户舒适的体验感,提升用户的留存和公司收益。反之,一个劣质的推荐算法会造成用户流失和公司收益逐渐走低。推荐系统也在各种场合发挥着重要的作用[3-4]。协同过滤是应用最广泛的模型,因为其模型的简单,应用起来十分高效。2005 年,Lemire 等[5]提出了Slope One 推荐算法,它是一种基于项目的协同过滤算法。加权Slope One 算法对于传统Slope One算法的改进,在数据集较为密集时,效果并不明显,因此本文提出项目相似度的加权Slope One算法。
早在1992年,Xerox研究中心开发了一种基于协同过滤的邮件筛选系统[6]。协同过滤一直是研究热点和业界使用最多的推荐算法。协同过滤分为基于用户的协同过滤算法(UserCF)和基于物品的协同过滤算法(ItemCF)[7]。不论是UserCF 还是ItemCF 都是通过计算用户之间(或者物品之间)的相似度进行推荐。相似性度量方法主要有杰卡德(Jaccard)相似系数、余弦相似度、Person 相关系数[8]。当遇到较为稀疏的数据时,Slope One 算法比传统的协同过滤算法推荐结果更加准确、执行效率更高、更容易实现和维护。
Slope One 算法预测评分进行推荐,主要分为以下两步:
第一步:计算项目之间的平均评分差值,公式如下:
其中:rui、ruj分别表示用户u对项目i、j的评分;|Sij|表示同时对项目i和j都有评分的用户个数。
第二步:计算项目之间的平均评分差值后,对项目i进行预测评分,公式如下:
其中:S(u)表示用户u评分的项目集合;S(u)-{i} 表示至少有一个与项目i同时被用户u评分的项目集合。
Lemire 等[5]还提出了一种加权Slope One 算法,在上述Slope One 算法计算过程中,存在着一定的局限性,同时被评分的当前项目的数量多和数量少都具有同样的权重,并没有考虑评分数量,从而使推荐准确度有所偏差。
加权Slope One 算法,对共同评分的数量在预测评分公式中进行加权计算。预测评分公式如下:
其中:|Sij|表示同时对项目i和j进行评分的用户个数。
加权Slope One 算法在Slope One 算法基础上,考虑了共同评分的数量,但是当数据集中用户评分矩阵较为密集时,加权Slope One 算法改进效果并不明显。针对此问题,叶飞等[9]利用SVD++算法对评分矩阵进行填充,缓解数据的稀疏性问题,再使用融合相似度的加权Slope One 算法进行二次预测,提高推荐准确性。陆胜伟等[10]在加权Slope One 评分预测公式中考虑了时间因子,拥有了更高的准确率。韩影[11]采用项目属性相似度的加权Slope One 算法进行推荐预测,提高了推荐精度。孙乐[12]提出将用户相似度与加权Slope One 算法相结合的改进算法,使推荐结果更加准确。
本文提出项目相似度的加权Slope One 算法,使用Person 相关系数计算两个项目的相似度,并将Person 相关系数做了归一化处理再与加权Slope One 评分预测公式结合。使用Movielens 100k 数据集进行实验,通过对比Slope One算法、加权Slope One 算法和改进后算法的平均绝对误差MAE的值,分析改进后的算法推荐准确度。
其中:pij∈[-1,1]表示项目i和项目j的Person 相似度;U为所有用户集合;rˉi表示项目i评分的平均值。
其中:Wp∈[0,1]表示项目i和项目j的相关程度。
其中:Wp表示Person相关系数归一化处理后的值。
本文使用的是Movielens 数据集[13],选用的是ml-100k的数据集,包含943个用户对1682部电影的1~5 的评分,数据集的数据稀疏度为93.7%。将ml-100k 的数据集随机划分为不相交的五份训练集和测试集,每份训练集、测试集中分别有80000 条数据和20000 条数据,需要反复实验五次,最终结果是反复实验五次推荐指标(MAE)数值的均值。
为了评估改进算法是否有效、客观。实验采用平均绝对误差MAE[14-15]来验证本文提出项目相似度加权Slope One 算法所得的预测结果与用户真实评分的差距。MAE计算公式如下:
MAE的值与预测评分和真实评分有关,预测评分和真实评分误差越小,MAE值越小,说明推荐越准确,推荐的质量也就越高。
使用Movielens数据集中的ml-100k,随机划分为不相交的五份训练集和测试集,对这五份数据集进行五次实验,五次实验的推荐指标(MAE)结果见表1。
表1 3种算法实验的MAE结果
图1 不同算法五次实验结果对比
实验结果如图1 所示,从图1 可以看出,在Movielens 100k 的数据集实验中,项目相似度的加权Slope One 算法五次实验的MAE平均值与加权Slope One 算法相比下降了0.68,与Slope One算法相比下降了1.08。本文改进算法的MAE值更小,推荐误差明显减小,预测评分更接近真实值,推荐效果更准确,推荐质量更高。
本文介绍了传统Slope One 和加权Slope One算法,为了提高推荐准确度,提出了项目相似度的加权Slope One 算法,通过Person 相关系数计算出项目的相关性,然后对Person 相关系数进行归一化处理与加权Slope One 算法结合。通过Movielens 100k 数据集中五份不相交的测试集和训练集,进行五次实验,分析比较结果表明:项目相似度的加权Slope One 算法MAE值更小,推荐效果更准确。说明本文改进算法具有实践意义和学术研究的价值。虽然改进算法取得一定的成效,但是仍然存在一定的提升空间,今后也将继续在此方面进行研究,以期达到更准确的推荐。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!