(安徽理工大学 计算机科学与工程学院,安徽 淮南 232001)
摘要 针对传统推荐算法未考虑项目类型和时间变化对用户兴趣的影响。为解决这个问题,提出一种基于用户偏好变化和时间权重的协同过滤算法ATCF(interests and time collaborative filtering)。实验表明,ATCF算法不仅能较好地反映用户偏好的变化,还能提高推荐精确度。
关键词 推荐系统协同过滤用户偏好变化时间权重
中图分类号 TP391 文献标识码 A DOI:
1 引 言
传统的协同过滤算法在进行个性化推荐过程中通过用户—项目评分矩阵计算项目相似度或用户相似度,未考虑项目类型和时间距离对用户偏好的影响。因此,本文提出基于用户偏好变化和时间权重的协同过滤算法ATCF。流程图主要分为3部分,具体挖掘流程如图1所示。
图1 ATCF算法流程图
2 基于ATCF算法设计
2.1 用户—评分矩阵的建立
假设推荐系统中存在m个用U={u1, u2, u3,…, um}和n个项目I={ i1, i2, i3,…, in }。用户—评分矩阵Rmn={Rui},其中,Rui表示用户u对项目i的评分。具体形式见表1所示。
表1 用户—评分矩阵Rmn
2.2 用户偏好相似度计算
2.2.1用户偏好变化分析
可以通过历史行为来挖掘用户在某个属性上的是否存在偏好。例如某用户共标记了280部电影,其中有190部为“喜剧”电影,25部为“科幻”电影,评分数据中喜剧评分为3.6,科幻评分为8.0。该用户对喜剧更感兴趣,因为观看喜剧数量较多。但是从打分情况考虑,用户更满意科幻电影。用户观看的科幻电影虽然数量少,但均为口碑较好的电影。因此,个性化推荐系统不仅要推荐用户明显偏好的项目外,还要根据历史信息挖掘其潜在兴趣,上述情况喜剧和科幻项目类型均应该列入推荐列表,即评分和标记数量均是反映用户偏好的重要因素。
2.2.2 用户偏好分布矩阵构建
假设系统中项目本身的固有类型有C个,Mi表示项目ji的类型向量,用Mi={m1,m2,m3,…,mn}表示项目类型向量集合,m
n取值为0或1,其中0表示项目不存在此类型,1表示存在此类型。由于一个项目可以存在多个类型,则所有项目的类型矩阵表示为矩阵M=[M1 M2 M3 … Mk]T
用户ui在M上的偏好分布向量表示为:
Ei=[Ei,1 E i,2 E i,3 … E i,c]
则所有用户的兴趣分布矩阵构建为:
E=[E1 E2 E3 … Ek]T
将用户—评分矩阵R中不为零的值全部设置为1,即可得到用户—标记项目矩阵S。用户标记项目在C个类型上标记数量分布矩阵表示为Q,则:
(1)
那么,用户标记的项目在C个类型上的平均评价表示为矩阵Z,则:
(2)
由于矩阵中不存在除法运算,公式(2)中分子分母均为nⅹc矩阵,公式中的除法表示分子分母中对应位置相除。
为了能使用户间的比较更加方便,本文对矩阵Q、矩阵Z中的每行向量进行归一化处理,其公式如下:
(3)
进行归一化处理后的矩阵分别记为Q´和Z´,其中,矩阵Q´表示用户兴趣在C个类型上的标记数量分布,矩阵Z´表示用户兴趣在C个类型上的用户评价分布,进而得到用户兴趣分布矩阵计算公式为:
(4)
其中α为可变参数,取值范围为0-1,参数取值会通过多次实验模拟选取使推荐结果最优的值。
2.2.3 用户间的偏好相似度计算
本文采用修正的余弦相似度计算用户间的兴趣相似度sim1(u,v),具体计算公式如下:
(5)
其中,sim1(u,v)表示用户u和v之间的兴趣相似度;Rui、Rvi分别表示用户u和v对项目i的评分值;、 分别表示用户u和v对所有评过分项目的平均评分;Iu 、Iv分别表示用户u和v已评分的项目集合,Iuv表示用户共同评分的项目集合。
2.3 基于时间权重的用户评分相似度
2.3.1 用户评分时间权重计算
在推荐系统中,时间信息是非常重要的一种信息。例如程序员用户在工作初期比较倾向于选择阅读入门类的书籍,但随着工作时间的积累,逐渐从入门类转变为专业类书籍。通常,我们会认为用户最近访问的项目就为其感兴趣的项目。因此,本文引入时间权重公式计算其对用户评分的影响。
(6)
其中,t取值范围为[0-1],w(tu,i)取值范围为(0-1)。由公式知,w(tu,i)函数是一个单调递增函数,其值随时间t增加而增加,但不会超过1;tu,i表示在时刻t时用户u对项目i的评分值。可以通过权重大小精确地分析用户兴趣的变化,进而达到为用户提供更加准确的个性化推荐的目的。
2.3.2用户评分相似度计算
本文采用pearson相关系数计算相似度的方法来计算用户评分相似度sim2(u,v),具体计算公式如下:
(7)
其中,sim2(u,v)表示用户u和v之间基于时间权重的用户评分相似度;w(tu,i)表示用户u对项目i评分的时间权重。
3 基于组合相似度的推荐
3.1 用户总相似度计算
组合基于用户兴趣相似度和基于时间权重的用户评分相似度,计算得到最终的用户相似度,采用线性加权的方式进行组合,具体公式如下:
(8)
其中,γ、1-γ分别表示sim1(u,v)和sim2(u,v)相似度权重,且γ取值为[0-1],在本文中由于两种相似度方法占据比例相同,本文γ取值为0.5。
3.2 改进的评分预测公式
计算用户总相似度,选取前k个最近邻居,得到最近邻居集合后,对目标用户进行项目推荐。在推荐系统中,用户影响力是影响推荐结果的重要因素之一,人们更倾向于采纳经验丰富的人提出观点。因此,改进的评分预测公式如下:
(9)
其中,S表示用户u的最近邻集合;表示对评过分项目的平均评分;χv表示用户v标记项目类型的数量。
3.3ATCF算法描述
根据上述的详细讨论,可以设计一个简单的算法来帮助分析本文如何进行个性化推荐。
算法:ATCF算法设计 | ||
输入:用户—评分数据 输出:推荐列表 1:输入用户—评分矩阵 2:do 3: { 4: for(矩阵不为空) 5: {根据公式(1)~(4)计算用户兴趣分布矩阵} 6: end if 7: for(根据兴趣分布向量) 8: {根据公式(5)计算用户间的兴趣相似度} 9:endif 10: for(矩阵不为空) 11: {根据公式(6)~(7)计算基于时间权重的评分相似度} 12:endif 13: for(矩阵不为空) 14: {用公式(8)计算总相似度,用公式(9)进行评分预测,产生推荐列表} 15: } 16:end | ||
算法设计说明:
(1)第一个判断,即step2-step6,判断用户—评分矩阵是否为空,若不为空则进行下一步操作反之则终止。
(2)第二个判断,即step7-step9,根据构建的用户兴趣矩阵,得到用户兴趣分布向量,计算用户间的兴趣相似度。
(3)第三个判断,即step10-step12,根据构建的用户-评分矩阵计算基于时间权重的评分相似度。
(4)第四个判断,即step13-step16,采用线性加权的方法计算总的相似度,并使用改进的评分公式进行评分预测。
4 实验结果与分析
4.1实验数据
本次实验采用网上开源的MovieLens站点提供的100K数据集,通过943对用户根据1682个电影项目打分产生的10万条评分数据,计算得数据稀疏度约为94%,且每队用户评分电影数量不少于20部。评分等级分为1分至5分,分值越高表示用户对该部电影兴趣度越高。将实验数据分为五份,随机选取其中的一份作为测试集,剩下的作为训练集。
4.2评价指标
选择平均绝对误差(MAE)作为本次实验的评价指标。表示系统预测评分与真实评分之间的误差,以此衡量算法推荐的准确度。
(10)
其中,rui、r´ui分别表示用户对项目的实际评分值和推荐算法计算出的预测评分值;n表示测试集中的项目个数。
4.3实验结果
为使推荐算法能在最优参数下对用户进行推荐,最重要的一点就是确定参数值。在α分别取0.1至0.9的情况下,测试ATCF算法在不同α值下的MAE值。
从图2可以看出,随着α值得不断增大,MAE值呈现波动,当α为0.5时,MAE值取得最小值,即此时算法的推荐质量最高,具体数据如下所示。
图2 ATCF算法在不同α值下的MAE值
为验证本文提出算法的推荐效果,将本文方法(ATCF)和基于用户的协同过滤算法(UBCF)以及基于物品的协同过滤算法(IBCF)在不同K最近邻数量的情况下进行对比分析,实验数据如下所示。
图3 不同算法的MAE值对比
从图3看出,随着K值得不断增大,三种方法的MAE值逐渐减小,即算法预测结果更加准确,从图中可以直观的看出K增加到一定数值时,MAE值逐渐趋于稳定,即准确度提升程度减缓甚至有下降趋势。当K为70时,MAE值趋于稳定且明显低于UBCF方法和IBCF方法。实验表明,本文方法可以显著提高推荐准确率,并为用户提供更加令人满意的个性化推荐列表。
5 结语
本次实验结果表明,本文提出的基于用户兴趣变化和时间权重的协同过滤算法能够有效改进用户相似度,显著提高推荐准确度,在数据稀疏的情况下,能较好的提高推荐质量。下一步可以尝试在ATCF算法的基础上融入用户多属性分析,从而达到更高的推荐精确度。
参 考 文 献
[1]Sedhain S, Braziunas D, Braziunas D, et al. Social collaborative filtering for cold-start recommendations[C]// Acm Conference on Recommender Systems. 2014:345-348.
[2]李伟霖, 王成良, 文俊浩. 基于评论与评分的协同过滤算法[J]. 计算机应用研究, 2017, 34(2):361-364.
[3]范洪博, 杨笑锋, 张晶. 融合用户背景和用户人格的话题推荐方法[J]. 计算机应用与软件, 2018, 35(07):308-316.
[4]徐蕾, 杨成, 姜春晓, et al. 协同过滤推荐系统中的用户博弈[J]. 计算机学报, 2016, 39(6):1176-1189.
[5]杨武, 唐瑞, 卢玲. 基于内容的推荐与协同过滤融合的新闻推荐方法[J]. 计算机应用, 2016, 36(2):414-418.
[6]Park Y, Park S, Jung W, et al. Reversed CF: A fast collaborative filtering algorithm using a k -nearest neighbor graph[J]. Expert Systems with Applications, 2015, 42(8):4022-4028.