APP下载

基于交集占比与时间衰减的协同过滤推荐算法研究

2017-05-31吴峥陈俊李灵芳

软件导刊 2017年5期
关键词:协同过滤

吴峥 陈俊 李灵芳

摘要摘要:针对传统协同过滤算法中存在的数据稀疏和用户兴趣变化问题,提出一种改进的协同过滤推荐算法(IPTDCF)。在用户相似度计算中融入评分交集项目占比因子,针对用户兴趣变化问题在评分预测计算中融入时间衰减函数,提高推荐算法的准确性。仿真实验表明,改进后的算法在推荐准确度上优于传统算法。

关键词关键词:协同过滤;IPTDCF;交集占比;时间衰减

DOIDOI:10.11907/rjdk.171066

中图分类号:TP312

文献标识码:A文章编号文章编号:16727800(2017)005002403

0引言

推荐系统近年来得到了广泛应用,但也面临很多问题,如用户兴趣变化、数据稀疏性问题等。传统推荐算法在计算用户相似度中时的参考集合由于只选用两用户共同评分的项目,而忽略了两用户均未评分和单一用户评分的项目,这样求得的用户相似度只能片面反映用户兴趣,且没有考虑用户兴趣变化问题。早期研究在用户兴趣变化方面有所涉及,比如张磊[1]提出了基于遗忘曲线规律进行时间衰减,得到有效评分矩阵再进行推荐算法;孙智聪[2]提出了一种基于记忆激活理论的协同过滤算法,给出重复学习后的兴趣最大值计算方法;胡伟健等[3]提出了一种改进的欧式距离相似度度量方法和时间信息模拟用户兴趣变化的方法等。虽然上述算法考虑了用户兴趣变化,但在推荐准确性上仍有优化空间。

本文引入评分交集项目占比因子优化用户相似度计算方法,引入时间衰减函数解决用户兴趣变化问题,提出改进算法,提高推荐算法的准确性。

1改进算法描述

UBCF算法首先计算用户间相似度,主要方法有皮尔逊相关系数相似度计算方法、欧氏距离相似度计算方法、余弦相似度计算方法等。其中,皮尔逊相关系数相似度计算方法如下:

1.1改进的项目占比因子

项目评分是用户兴趣的直接反映,用户可以有多种兴趣。实际中,两位用户可能仅在个别兴趣爱好上是相同的,反映在评分上为两位用户的评分项目交集远小于各自评分项目数。如图1所示,图中项目交集I是传统用户相似度计算方法的取值范围,项目交集中可能是当前热门项目,也可能是两用户共同的兴趣爱好。以MovieLens中数据量为100k大小的数据集为例,用户181对435个项目进行了评分,用户600对89个项目进行了评分,而两用户共同评分的项目仅有1个;用户181对435个项目进行了评分,用户766对175个项目进行了评分,而两用户共同评分的项目仅有1个。另外,也有可能评分项目较多的用户覆盖了评分较少用户的几乎所有项目,如图2所示。同样以上述数据集为例,用户13对636个项目进行了评分,用户814对35个项目进行了评分,并且这35个项目恰好也被用户13评价过;用户655对685个项目进行了评分,用户111对24个项目进行了评分,并且这24个项目恰好也被用户655评价过。显然,这两种情况下仅考虑用户评分项目交集而忽略大部分非交集评分项目,在衡量用户兴趣时是片面的,不能准确得出用户兴趣。因此,在用户相似度计算时考虑引入交集项目在用户所有评分项目中的占比,对皮尔逊相关系数计算公式进行改进,改进如公式(3)所示。

其中,a表示一个很小的常量,其作用是避免出现分母为0的情况。prop(u,v)为项目占比因子,表示用户u和用户v共同评分项目数在各自评分项目数之和中所占的比例,如公式(4)所示,取值范围[0,1],两用户项目交集数越多,其值越大,对相似度的削减力度越小,相应的sim值越大,表示两者越相似。当两用户评分项目完全相同时prop(u,v)值为1,表示两用户所有已评分项目均参与到用户相似度计算中,当两用户评分项目没有交集时prop(u,v)值为0。

prop(u,v)=2×num(I(u)∩I(v))num(I(u))+num(I(v))(4)

其中,I(u)表示用戶u评分的项目,I(u)∩I(v)表示用户u和用户v共同评分的项目交集,num(I(u))表示用户u评分项目个数,num(I(u)∩I(v))表示共同评分项目交集的个数。

1.2改进的时间衰减函数

项目评分是用户对项目在当前时间喜好程度的直观体现,而人脑对事物的记忆符合艾宾浩斯遗忘规律,即新生事物在大脑中的遗忘速度遵循先快后慢,最终趋于稳定的变化规律。用户对项目的喜好程度也会随着这样的记忆规律而发生变化,在传统预测评分中并没有体现出这一变化,由此在预测评分方法中增加时间衰减函数,当预测评分和近邻用户对该项目评分时间差越小,近邻用户实际评分对预测评分的影响越大,衰减越弱,改进如公式(5)所示。

pred(u,i)=ru+∑v∈Psim(u,v)×(rvi-rv)×f(tui,tvi)∑v∈Psim(u,v)(5)

其中,集合P表示用户u的近邻用户集合中对项目i进行评分的用户集合,tui表示用户u对项目i的评分时间,在这里为时间戳形式。f为遗忘记忆保留率函数,其公式如下(6)所示,为单调递减函数,分子为常量,评分时间间隔越大时,(t1-t2)越大,分母越大,记忆保持率越小,惩罚力度越大,评分的有效性越低,在预测评分中的贡献度就要越低,模拟了用户兴趣变化的过程。计算如下:

f(t1,t2)=ec|t0+t1-t2|b(6)

其中,e为自然对数,c、b、t0为常量系数,实验发现,t0取1e-6、c取0.4且b取0.04时效果最佳。

2实验过程及结果分析

2.1实验数据集介绍

本实验所采用的数据集来自Movielens网站,包括6 040位用户、3 900部电影、以及用户对电影评分的1 000 209条数据记录。其中,每位用户至少对其中20部电影进行过评分,评分采用五分整数制,评分越高代表用户越喜欢该部电影。

2.2实验结果度量的标准

实验结果的准确性采用平均绝对误差(MAE)来度量。MAE通过比较用户预测评分和用户实际评分间的偏差来度量预测评分的准确度,其值越小说明推荐质量越好。度量标准如式(7)。

MAE=∑ni=1|Δpi|n(7)

其中|Δpi|表示用户对项目i的预测评分和实际评分的差值的绝对值,R(u)为用户u的推荐列表,T(u)位测试集中用户u的真实行为记录集。

2.3实验流程

为更好说明结果,选取UBCF算法、文献[1]ForgetBCF算法和本文提出的IPTDCF算法,对比MAE值的大小及变化趋势。UBCF和IPTDCF的实验流程(见图3)如下:

Input:用户集合U,项目集合I,用户评分记录集合Info,最近邻居数k;

Output: 预测评分矩阵Pred(U,I)以及MAE值。

Step 1: 将Info按照80%-20%的数量比,随机分成两部分,80%部分记录作为训练集Base,20%部分作为测试集Test。

Step 2 : 提取出数据集Base和Test中的用户、项目评分、评分时间信息,组成用户-项目评分矩阵R(U,I)、R(U,I)和相应的用户-项目评分时间矩阵T(U,I)、T(U,I)。

Step 3: 分别根据公式(1)和(3)进行对比实验,对训练集中每个用户uU,在改进公式(3)中求出用户单独评分项目数和两用户共同评分项目数,并根据公式(5)计算出项目占比因子,求出用户间相似度similarity(u,v),并保存在相似度矩阵Sim(U,U)中。

Step 4: 在Sim(U,U)中,对每个用户uU,选取出与u相似度最高的k位用户,组成最近邻集合neighborhood(u,k),并保存在最近邻矩阵Neighbor(U,k)中。

Step 5: 根据训练集中得到的最近邻矩阵Neighbor(U,k),对测试集中用户项目评分进行预测,分别根据公式(2)和(5)进行对比实验,在改进公式(6)中根据评分时间间隔进行时间衰减,根据公式(7)求出记忆保留率,再计算出R′(U,I)中每个用户已评分项目的预测评分,并保存到预测评分矩阵Pred(U,I)中。

Step 6:根据公式(7),分别求出对比实验中两组MAE值,比较推荐算法的准确性,返回Pred(U,I),實验完成。

2.4实验结果分析

实验均采用皮尔逊相关系数来计算相似度,观察不同邻居数时MAE值的变化,结果如表1和图4所示。

结果显示,不同算法和不同近邻数得到的MAE值不同,相同近邻数时,UBCF的MAE值最大,IPTDCF的MAE值最小,表明IPTDCF的推荐准确性更高。UBCF和ForgetBCF呈递减变化,IPTDCF先递减后递增,UBCF接近线性变化,Forget和IPTDCF递减速度先快后慢,最终趋于平稳,这是由于时间衰减函数使得MAE值变化符合遗忘曲线规律;IPTDCF在近邻数为80时达到最小值,后期有微弱递增趋势,这是由于项目占比因子的削弱作用使得原本较高的用户相似度依然高,而原本较低的用户相似度变得更低,增加近邻相当于增加了更过低相似度的近邻,因而邻居数的增多反而削弱了改进效果。综上所述,由IPTDCF计算出的MAE值要小于UBCF算法和ForgetBCF算法,可以发现IPTDCF在推荐的准确性上明显优于传统UBCF算法和ForgetBCF算法。

3结语

本文针对评分数据稀疏或用户评分时间不同的应用场景提出了一种改进型协同过滤推荐算法IPTDCF。IPTDCF算法首先在计算用户相似度时加入共同评分项目交集占各自所有评分项目的比例因子,考虑两用户评分项目的非交集部分;其次在预测项目评分时引入时间衰减函数,结合遗忘曲线规律,对评分预测方法进行修正。两组实验通过MAE值的比较,得出IPTDCF算法在推荐准确性方面明显优于传统推荐算法的结论。在评分数据稀疏或用户评分时间不同的情况下,更适合采用改进算法IPTDCF。

参考文献参考文献:

[1]张磊. 基于遗忘曲线的推荐算法研究[D].合肥:安徽理工大学,2014.

[2]孙智聪.基于时间上下文和属性的个性化推荐研究[D].重庆:重庆大学,2015.

[3]胡伟健,滕飞,李灵芳,王欢.适应用户兴趣变化的改进型协同过滤算法[J].计算机应用.2016,36(8):20872091.

[4]孙光辉.基于时间效应和用户兴趣变化的改进推荐算法研究[D].北京:北京邮电大学,2014.

[5]孙光福,吴乐,刘淇,朱琛,陈恩红.基于时序行为的协同过滤推荐算法[J].软件学报,2013(11): 27212733.

[6]黄创光,印鉴,汪静,刘玉葆,王甲海.不确定近邻的协同过滤推荐算法[J].计算机学报,2010,33(8):13691377.

[7]孟祥武,刘树栋,张玉洁,胡勋.社会化推荐系统研究[J].软件学报,2015(6):13561372.

[8]RICCI F,ROKACH L, SHAPIRA B,et al.Recommender systems handbook[M].Springer,2011.

责任编辑(责任编辑:陈福时)

猜你喜欢

协同过滤
改进的协同过滤推荐算法