Sincetimefactorisnotconsideredincalculatingscorematrixintraditionalcollaborativefiltering,theaccuracyforrecommendationislimited.Inordertosolvethisproblem,weproposeamethod,whichintegratesthetimefactorintotheuserscorematrix.Inthismethod,firsttheforgettingcurveandthememoryperiodareincorporatedintothealgorithmasthetimefactor.ThenEbbinghausforgettingcurveisfittedwithpotentialfunction.Thiswaycangetmorecorrectcorrelationfunctionbetweentimeandinterestdecay.Finallyalltheresultsareimportedintotheuserscorematrix,andthenthematrixisappliedincollaborativefilteringrecommendationalgorithm.Thefactors,whichaddthememorycycletothescore,makethetargetuserpredictthepredictedprojectscoremoreaccurately.Theexperimentsshowthattheresultsobtainedwiththeproposedmethodaremuchmoreaccuratethanthatoftheoriginalone.
本文通过Python的matplotlib包,对艾宾浩斯遗忘曲线进行拟合,输入曲线数据,即天数和记忆量,观察形状,可以用指数函数进行拟合,结果如图1所示。
最终的艾宾浩斯遗忘曲线的拟合公式为:
设用户集U={U1,U2,…,Un},项目集合M={M1,M2,…,Mn}。
记忆周期因子的表达式如式(7)所示:
最终的评分预测公式为:
式中:Sim(u,ui)表示目标用户u和用户ui的相似度;N为用户u及用户ui共同参与的项目数;gui,s为用户ui赋予项目s的分值。
输入:数据集S
输出:推荐影片的评分矩阵并选出Top20
//遍历数据集S中的用户
3根据式(3),计算Wt,即每个用户对于已经评分的项目的遗忘值
4endfor//遍历结束
//遍历数据集中的用户
//找到用户i和用户j共同评分过的项目
//遍历项目集中共同评分过的项目
8通过式(4)计算用户间相似度
9endfor
10endfor
11选出每个用户相似度最高的10个用户,获得相似用户矩阵USER
//遍历相似用户
//找到相似用户接触过但是目标用户没接触的项目,获取项目集合Mnew
14通过式(6)预测目标用户对Mnew的评分,获取评分最高的N个MnewTopN
15endfor
16returnMnewTopN
实验所用数据集为MovieLensml-1M版本数据集,由984个用户,2000个电影,以及10万条评分组成。
平均绝对误差计算公式为:
式中:ru,i为用户u的实际评分值;Pu,i为用户u的预测评分值。
本文改进的算法与传统的算法相比,实验结果如图3所示。
图3是对所有用户的MAE取出并进行均值计算获得的最终结果,现随机取出20个用户,用折线图来表示其MAE的一个趋势,如图4所示更直观地看出新算法的MAE值
在总体上普遍小于传统CF算法。
本文的改进算法与传统的算法相比,在推荐准确度方面有所提高,实验结果如图5所示。
由图5可以看出,基于改进的协同过滤算法比传统的协同过滤算法在条件相同的情况下,命中率更高。