基于时间衰减的协同过滤推荐算法

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可以看出,基于改进的协同过滤算法比传统的协同过滤算法在条件相同的情况下,命中率更高。

THE END
1.推荐算法——基于物品的协同过滤算法标签: 算法 收藏 基于用户的协同过滤算法在用户增长的时候,相似度计算的计算会越来越困难。基于物品的算法给用户推荐他们之前喜欢的物品相似的物品。 算法步骤 计算物品之间的相似度 根据物品的相似度和用户的历史行为给用户生成推荐列表 相似度公式如下: wij=|N(i)∩N(j)||N(i)||N(j)|...https://www.imooc.com/article/27099
2.基于狄利克雷DirichletProcesses聚类的协同过滤推荐算法代码实现...基于狄利克雷DirichletProcesses聚类的协同过滤推荐算法代码实现(输出聚类计算过程,分布图展示) 聚类(Clustering)就是将数据对象分组成为多个类或者簇 (Cluster),它的目标是:在同一个簇中的对象之间具有较高的相似度,而不同簇中的对象差别较大。所以,在很多应用中,一个簇中的数据对象可以被作为一个整体来对待,从而减...https://www.jianshu.com/p/e8c5293d9a82
3.基于协同过滤算法的电影推荐系统的设计与实现.docx基于协同过滤算法的电影推荐系统的设计与实现摘 要在本文中,我们设计了一个基于用户行为模型的系统,旨在增加电影的数量,计算用户之间的相似度,并实现可以对电影进行信息爬取,向用户推荐相似电影的功能。该系统在基于用户的协作过滤算法中使用欧几里得公式来计算用户之间的相似度,通过该方式可以得到用户之间的相似度,以...https://max.book118.com/html/2022/0610/6104050043004155.shtm
1.推荐系统前深度学习时代推荐算法(1):协同过滤(CF)协同过滤推荐算法分类: 基于用户的协同过滤推荐 基于物品的协同过滤推荐 以上两者分类的的依据是它们如何计算相似度和依据相似度做推荐的部分。(听到这你可能还有点懵,先别急~,继续往后面看) 基本思想: 基于用户的协同过滤推荐:通过计算用户相似度,找到与目标用户行为相似的其他用户,推荐相似用户正反馈交...https://blog.csdn.net/qq_58872188/article/details/143798469
2.Java使用协同过滤算法的代码示例java在Java中实现协同过滤算法通常需要一些步骤,包括加载用户-项目评分数据、计算相似度、生成推荐等,以下是一个简化的基于用户的协同过滤算法的代码示例,感兴趣的小伙伴跟着小编一起来看看吧在Java中实现协同过滤算法通常需要一些步骤,包括加载用户-项目评分数据、计算相似度、生成推荐等。以下是一个简化的基于用户的协同过滤...https://www.jb51.net/program/3228978bz.htm
3.算法推荐算法协同过滤腾讯云开发者社区2 协同过滤算法如何预测? 什么是协同过滤 协同过滤推荐(Collaborative Filtering recommendation)是在信息过滤和信息系统中正迅速成为一项很受欢迎的技术。与传统的基于内容过滤直接分析内容进行推荐不同,协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户...https://cloud.tencent.com/developer/article/1170685
4.协同过滤java代码实现协同过滤推荐算法代码图User CF算法的工作过程 基于用户的协同过滤,简称User CF,思想其实比较简单,首先是根据目标用户对物品的偏好找到兴趣相近的用户作为相邻用户,然后将相邻用户的喜爱的作品推荐给目标用户;即当一个用户A需要个性化推荐的时候,我们可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的,而用户A没有听说过的...https://blog.51cto.com/u_16213697/9925001