一种基于SlopeOne和聚类的协同过滤算法

2023-02-15

一、引言

随着电子商务的发展, 推荐系统一直成为解决信息过载问题的强有效手段。其中协同过滤算法应用于推荐系统最为广泛[1], 但在实际应用中协同过滤推荐算法还存在一些局限性[2]:随着系统规模的扩大和用户数量的增加, 评分矩阵的维度不断增加, 但实际评分数据稀少, 导致推荐系统的实时性和准确度都有所降低[3], 邻居用户的查找不够准确, 影响推荐质量和效率, 文献[4-7]分别对评分的稀疏性问题进行了研究。本文引入项目属性相似性改善Slope One预测模型, 并利用蚁群算法对用户聚类, 缩小邻居用户搜索空间, 二者结合应用到协同过滤推荐中。

二、相关工作

(一) 相似性度量方法

设有n个项目, 将用户的评分看做n维空间的向量, 找到用户i、j评过分的所有项目的集合Ii, j, 用户i、j之间的相似性sim (i, j) 通过皮尔逊相关系数来计算:

(二) 生成推荐

设目标用户为u, 目标项目为i, 用uP, i表示用户u对项目的预测评分, 通过公式 (2) 从邻居用户集生成目标用户对未评分项目的预测评分。

式中分别表示用户u和用户a对项目评分的平均值, sim (u, a) 表示用户u和用户a的相似度值, k是邻居用户个数, Ra, i表示用户a对i的评分。

三、基于Slope One预测和聚类的协同过滤算法

(一) 基于项目属性相似的Slope One预测模型

Slope One算法的基本思想是:用户u对两个项目的评分分别为x、y且评分存在线性关系y=x+b。

基于项目属性相似的Slope One预测步骤如下:

(1) 利用皮尔逊相关性计算项目i和项目j的属性及两个项目间的评分相似性, 分别记为si ms (i, j) , si mr (i, j) 。 (2) 采用所得结果的线性组合作为最终的综合相似性sim (i, j) 。

α代表项目属性相似性所占的比重, α∈ (0, 1) 。 (3) 对sim (i, j) 按从大到小排序。取相似度最大的前kn个项目, 得到目标项目的邻居项目集。 (4) 在邻居项目集的基础上, 对目标用户运用加权Slope One预测, 将预测评分填入空缺的评分矩阵。

(二) 基于用户特征的聚类

传统的协同过滤算法根据系统中所有用户对项目的评分来查找目标用户的邻居用户, 将所有用户对项目的评分视为同等的重要, 这样就忽略了数据的差异性, 降低推荐的精度。

(三) 基于Slope One预测模型和聚类的协同过滤算法

基于蚁群自组织的聚类算法步骤如下:

步骤1:将用户看做数据对象, 即蚁群聚类中的蚂蚁, 记做ai (i=, 1, 23...m) , 总共有m个。初始情况下, 假设蚂蚁蚁穴中一共有k个树根, 形成k个分支, 每个分支上粘附了一个蚂蚁, 形成初始的聚类中心, 记作Cj (j=, 1, 23...k) 。步骤2:后面进入的蚂蚁会比较自己与聚类中心的相似性, 然后粘附到相似性最大的聚类中。本文采用的实验数据的用户特征主要包括年龄、性别和职业。那么用户i和用户j特征的相似性si mf (i, j) 可以表示为:

其中si mα (i, j) , sims (i, j) , simo (i, j) 分别表示用户i和j的年龄相似性、性别相似性、职业相似性, α, β是调节系数, α, β∈ (1, 0) , 表示不同特征对综合相似性的影响程度。步骤3:更新聚类中心, 采用与聚类中心最相似的用户作为新的聚类中心, 转上一步迭代。其中, 聚类中心的更新过程如下: (1) 计算每个聚类用户年龄的平均值, 统计每个聚类用户性别的众数和职业的众数。 (2) 将年龄平均值、众数对应的性别和职业作为该聚类的临时聚类中心。 (3) 计算聚类中所有用户与临时聚类中心在三个属性特征上的距离, 查找与临时聚类中心距离最小的用户作为新的聚类中心。步骤4:当所有用户都进入某一个聚类以后, 聚类结束, 得到用户聚类簇。

四、实验与分析

(一) 数据来源

本文采用Movielens数据集评分数据从1到5, 评分越高, 表示用户对电影越喜欢。为减小实验误差, 实验每次从数据集中抽取250个用户和250部电影, 组成1个训练数据集, 对应训练数据集, 抽取相应的1个测试数据集, 共抽取5组这样的数据集。

(二) 评测标准

平均绝对误差 (MAE) 是推荐算法常用的评测标准, 如下所示:

n是参与算法评分的项目的数目, ip是通过算法预测的评分, iq是测试集用户的实际评分。

(三) 实验过程

采用以上5组数据集, 分别对5个训练集和5个测试集进行实验, 每组选取15个目标用户, 邻居用户数目分别从k=10递增到k=50, 每次增加10个。对5组数据进行实验, 最后取平均值作为实验结果。

本文算法、传统推荐算法、只引入基于项目属性相似的Slope One预测模型的推荐算法和只引入基于用户特征聚类的推荐算法的实验结果数据, 比较其MAE, 实验对比图如下:

将本文算法与只引入基于项目属性相似Slope One预测模型的推荐算法或只引入基于用户特征聚类的推荐算法对比可知, 虽然后面二者随着邻居用户数的增大, 推荐效果的提升有限, 推荐质量不稳定。通过本文Slope One或聚类处理以后, 虽然在一定程度上排除了不相关用户的影响, 但也对数据进行了降维, 当最近邻居数目过大以后, 用户实际的相似程度却变得很低, 导致当邻居用户数目过大时, 推荐质量降低。而本文算法弥补了以上两种算法的不足, 降低了数据稀疏程度, 缩小相似邻居搜索空间, 既提高推荐效率, 又提高了推荐的精度, 使推荐更有效。

五、结束语

针对传统协同过滤算法中评分矩阵稀疏性和扩展性问题, 本文提出基于Slope One预测模型和聚类的协同过滤算法, 将项目属性相似性引入Slope One预测模型, 降低评分矩阵稀疏度, 将预测填充后的评分矩阵作为推荐的输入;再结合基于用户特征的聚类, 减小邻居用户的搜索空间, 排除不相关用户的影响。通过在Movielens数据集上进行实验, 结果表明, 本文算法可以有效提高推荐的质量。

摘要:针对传统协同过滤算法用户评分矩阵稀疏和扩展性问题, 引入项目属性相似性改善Slope One预测模型, 并将其与基于用户的聚类相结合应用于协同过滤推荐, 以降低用户评分矩阵的稀疏性, 提高目标用户最近邻居的查询速度, 降低搜索开销。

关键词:SlopeOne,聚类,推荐系统,协同过滤,评分预测

参考文献

[1] 孙金刚, 艾丽蓉.基于项目属性和云填充的协同过滤推荐算法[J].计算机应用, 2012, 32 (3) :658-660.

[2] 曾小波, 魏祖宽, 金在弘.协同过滤系统的矩阵稀疏性问题的研究[J].计算机应用, 2010, 30 (4) :1079-1082.

[3] 郁雪, 李敏强.一种有效缓解数据稀疏性的混合协同过滤算法[J].计算机应用, 2009, 29 (6) :1590-1593.

[4] 郁雪, 李敏强.一种有效缓解数据稀疏性的混合协同过滤算法[J].计算机应用, 2009, 29 (6) :1590-1593.

[5] 孙丽梅, 李晶皎, 孙焕良.基于动态k近邻的Slope One协同过滤推荐算法[J].计算机科学与探索, 2011, 5 (9) :857-864.

[6] 王毅.一种改进的Slope One协同过滤算法.计算机科学[J].2011, 38 (b10) :192-194.

[7] 傅鹤岗, 彭晋.基于模范用户的改进协同过滤算法[J].计算机工程, 2011, 37 (3) :71-74.

上一篇:论高校中文专业《现代文学》课程的教学改革下一篇:播撒爱的种子放飞心的梦想