CN109947987B - 一种交叉协同过滤推荐方法 - Google Patents

一种交叉协同过滤推荐方法 Download PDF

Info

Publication number
CN109947987B
CN109947987B CN201910219542.0A CN201910219542A CN109947987B CN 109947987 B CN109947987 B CN 109947987B CN 201910219542 A CN201910219542 A CN 201910219542A CN 109947987 B CN109947987 B CN 109947987B
Authority
CN
China
Prior art keywords
user
movie
score
similarity
item
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910219542.0A
Other languages
English (en)
Other versions
CN109947987A (zh
Inventor
蒋军
刘建生
张东翠
江任伟
叶紫妍
李文君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangxi University of Science and Technology
Original Assignee
Jiangxi University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangxi University of Science and Technology filed Critical Jiangxi University of Science and Technology
Priority to CN201910219542.0A priority Critical patent/CN109947987B/zh
Publication of CN109947987A publication Critical patent/CN109947987A/zh
Application granted granted Critical
Publication of CN109947987B publication Critical patent/CN109947987B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种电影推荐方法,具体是一种交叉协同过滤推荐方法。本发明先根据基于项目的协同过滤算法(Item‑based CF)原理,设计电影间相似度计算策略,求解每个电影的序列化相似度字典;再利用基于模型的协同过滤算法(Model‑based CF)‑Slope One算法并结合局部相似性原理,对未评分电影进行评分数据填充,从而大大降低评分矩阵稀疏性;在此基础上提出融合用户间评分相似度和平均加权兴趣相似度的用户综合相似度计算模型,再运用基于用户的协同过滤算法(User‑based CF),完成对目标用户的电影推荐。与同类方法相比,本发明能够显著提高电影推荐的精准度。

Description

一种交叉协同过滤推荐方法
技术领域
本发明涉及一种电影推荐方法,具体是一种交叉协同过滤推荐方法。
背景技术
人们生活在一个信息技术日新月异、移动互联网和云计算迅猛发展,全球数据量呈***式增长的大数据时代。相对于传统便于存储的以文本为主的结构化数据,音频、视频、图片等非结构化数据的比例逐步提升。互联网上信息的急剧增长,一方面使人们获取的信息资源越来越丰富,给人们带来极大的便利;另一方面,面对海量的信息资源,人们不得不花费更多的时间和精力去搜寻对其有帮助的信息,信息过载和资源迷向问题越来越严重。
推荐技术是解决信息过载及资源迷向问题的有效方案,它根据用户特征推荐满足用户需求的对象,实现个性化服务。推荐技术的优点在于,它能主动收集用户的特征资料,通过对用户个性、***台给你的推荐会越准确、更丰富。
基于协同过滤的推荐技术相比其他的推荐算法具有个性化和自动化程度高、推荐领域广泛以及技术上容易实现等优势。自协同过滤算法提出以来,国内外学者提出各种各样的基于协同过滤的推荐方法,例如李昊阳和符云清发表的“基于标签聚类与项目主题的协同过滤推荐算法”(见[J].计算机科学,2018,4,P247-251),算法利用聚类技术对标签进行聚类并生成主题标签簇并提出一种改进的基于项目的协同过滤推荐算法,实验表明算法能够解决标签的语义模糊问题并提升推荐质量;郭宁宁等发表的“一种融合社交网络特征的协同过滤推荐算法”(见[J].计算机科学与探索,2018,12(2),P208-217),算法为了缓解用户评分数稀疏性的问题,引入社交网络模型并结合用户评分偏好得出用户信任和被信任矩阵,进而对用户进行项目推荐,实验表明该算法能够有效提高推荐准确率。
在大数据时代的今天,推荐技术在已经各个领域得到了充分的应用。但从协同过滤推荐算法研究现状可知,传统的协同过滤推荐算法存在以下几个问题:数据稀疏性问题,用户在内有任何激励的措施时自愿给出的评价很少,这使计算用户或项目间的相似性不够准确;冷启动问题,当***有一个新的用户或者项目进入时,算法不能够很好的处理;扩展性问题,算法对大数据的处理效果不佳,推荐的实时性很难保证(见翁小兰、王志坚所发表的“协同过滤推荐算法研究进展”,[J].计算机工程与应用,2018,54(1),P25-31)。
发明内容
本发明的目的是提供一种交叉协同过滤推荐方法,它结合了基于模型的协同过滤算法和基于用户的协同过滤算法的优点,有效地缓解评分数据稀疏的问题,其中基于SlopeOne模型的协同过滤算法采用局部相似原理,使得填充数据更具有说服力。本发明能够更准确地计算用户间的相似度,进而提高推荐的精准度。
本发明的技术方案:一种交叉协同过滤推荐方法,包括以下步骤:
步骤1,收集用户的评分数据,得到用户-电影评分矩阵S;
Figure BDA0002003144410000011
其中,矩阵的每个元素spi原始评分数据,表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,m为用户的个数,n为电影的个数;
步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:
Figure BDA0002003144410000021
其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,newmin为设定区间的下界,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:
Figure BDA0002003144410000022
其中,矩阵的每个元素npi为归一化后的评分数据,表示用户p对电影i的归一化评分;
步骤4,设定电影Itemi与电影集合中其他电影Itemj间具有的共同用户评分计数与电影Itemi的用户评分计数的比值阈值Threshold_item作为是否进一步计算电影间相似度的标准;其中,电影集合中除电影Itemi以外的其他电影的下标j=1,2,3,…,n;
步骤5,在电影集合中选取一个电影Itemi,并计算该电影与电影集合中另一个电影Itemj具有的共同用户评分计数与电影Itemi的用户评分计数的比值Ratio_itemij;Ratio_itemij计算公式如下:
Figure BDA0002003144410000023
其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:
Figure BDA0002003144410000024
其中,Uij表示对电影i,j都评分过的用户集合,用户x属于集合Uij,nx,i表示用户x对电影i的归一化评分,
Figure BDA0002003144410000034
Figure BDA0002003144410000035
分别表示所有用户对电影i,j的归一化平均评分;
步骤7,按照步骤5、步骤6计算步骤5中电影Itemi与电影集合中其他的每个电影间的带权评分相似度,并按照带权评分相似度的大小进行排序,得到电影Itemi与其他电影的序列化相似度字典Sim_dicti
步骤8,按照步骤5、步骤6、步骤7对电影集合中的每个电影进行相同的处理,最终得出每个电影与其他电影的序列化相似度字典;由于Sim_itemij=Sim_itemji,所以对于已经计算过的两电影之间的带权评分相似度可直接拷贝相应的数据,规定电影与自己的带权评分相似度为0;
步骤9,设定电影的评分预测参考电影个数K,其中K的取值范围是0到n;
步骤10,在电影集合中选取一个电影Itemi,并在其序列化相似度字典Sim_dicti中取带权评分相似度大小前K个电影作为该电影的评分预测参考电影集合NNi
步骤11,计算步骤10中电影Itemi与其K个评分预测参考电影的评分偏差Score_deviationik
Figure BDA0002003144410000031
其中,评分预测参考电影集合下标k=1,2,3,…,K,χ为训练数据集,Si,k(χ)为训练数据集中共同评分过电影i,k的用户集,用户y属于集合Si,k(χ),Card(Si,k(χ))表示共同评分过电影i,k的用户集Si,k(χ)中的用户个数,ny,i表示用户y对电影i的归一化评分;
步骤12,利用现有的基于模型的协同过滤算法-Slope One算法,计算步骤10中电影Itemi未评分用户的加权预测评分Predict_score_itemli
Figure BDA0002003144410000032
其中,电影Itemi未评分用户下标l=1,2,3,…,Card(Itemi),Card(Itemi)为电影Itemi未评分用户的数量,Ri为电影i的评分预测参考电影集合NNi中同时与电影i一起被评分过的电影集合;
步骤13,按照步骤12对步骤10中电影Itemi的所有未评分用户的评分进行预测评分;
步骤14,按照步骤10、步骤11、步骤12、步骤13对电影集合中的每个电影进行相同的处理,最终得出每个电影的未评分用户的加权预测评分,从而实现对用户-电影评分矩阵的数据填充;
步骤15,在用户集合选取一个用户Userp,通过该用户评分的电影并结合电影信息表中的属性,匹配得到目标用户所评分的每个电影的属性列表Attributepi如下;
Figure BDA0002003144410000033
其中,
Figure BDA0002003144410000036
表示用户p评分的第i个电影的第f个属性,且对于电影具有的属性的初始值为1,不具有的属性初始值为0,属性下标f=1,2,…,F,F表示电影属性个数;
步骤16,对步骤15中的用户Userp所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:
Figure BDA0002003144410000041
其中,
Figure BDA0002003144410000044
表示用户p对属性f的平均加权评分;
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
Figure BDA0002003144410000042
其中,
Figure BDA0002003144410000045
表示用户p所评分的所有电影中相同属性
Figure BDA0002003144410000046
的计数;
步骤17,按照步骤15、步骤16对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;
步骤18,设定用户Userp与用户集合中其他用户Userq间具有的共同电影评分计数与用户Userp的电影评分计数的比值阈值Threshold_user作为是否进一步计算用户间相似度的标准;其中,用户集合中除用户Userp以外的其他用户的下标q=1,2,3,…,m;
步骤19,在用户集合中选取一个用户Userp,并计算该用户与用户集合中另一个用户Userq具有共同电影评分计数与用户Userp的电影评分计数的比值Ratio_userpq;Ratio_userpq的计算公式如下:
Figure BDA0002003144410000043
其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户-电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:
Figure BDA0002003144410000051
其中,Ipq表示用户p,q共同评分的电影集合,电影z属于集合Ipq,np,z表示用户p对电影z的归一化评分,
Figure BDA0002003144410000054
Figure BDA0002003144410000055
分别表示用户p,q对电影z的归一化平均评分;
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
Figure BDA0002003144410000052
其中
Figure BDA0002003144410000057
分别表示用户p,q的平均加权兴趣向量;
步骤21,结合步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq与属性相似度Sim_user_attributepq计算用户间的综合相似度Simpq
Simpq=λSim_user_scorepq+(1-λ)Sim_user_attributepq
其中λ为评分权重因子;
步骤22,按照步骤19、步骤20、步骤21计算步骤19中用户Userp与用户集合中其他的每个用户间的综合相似度;
步骤23,按照步骤19、步骤20、步骤21、步骤22对用户集中的每位用户进行相同的处理,计算得出每位用户的邻居用户集以及与每位邻居对应的综合相似度;
步骤24,以综合相似度为标准对每位用户的邻居集合进行排序,最终得到每位用户的序列化邻居集合;
步骤25,设定目标用户电影推荐的参照邻居用户数N以及目标用户的推荐电影个数R;其中参照邻居用户数N的取值范围是0到m,目标用户的推荐电影个数R的取值范围是0到n;
步骤26,在目标用户集合中选取一个用户Target_usert并查看该目标用户的序列化邻居集合,取前N个用户构成该目标用户的参照邻居用户集NNt并作为计算目标用户未评分电影的预测评分依据;其中,目标用户集合是用户集合的一个子集,目标用户下标t=1,2,3,…,T;
步骤27,在归一化后的用户-电影评分矩阵基础上,依据现有的基于用户的协同过滤推荐算法,计算步骤26中目标用户Target_usert未评分电影的预测评分Pt,i
Figure BDA0002003144410000053
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分,
Figure BDA0002003144410000056
分别为目标用户Target_usert和邻居用户u所评分电影的归一化平均评分;
步骤28,按照步骤26、步骤27对步骤26中目标用户所有未评分电影进行相同的处理,得出步骤26中目标用户Target_usert未评分电影的预测评分;
步骤29,按照步骤26、步骤27、步骤28对目标用户集中每个目标用户进行相同的处理,得出每个目标用户未评分电影的预测评分;
步骤30,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;
步骤31,在目标用户集中选取一个用户Target_usert,查看该用户的序列化预测评分电影集合并取出预测评分大小前R个电影作为该目标用户的电影推荐列表Recommend_itemt
步骤32,按照步骤31,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表。
本发明结合了基于模型的协同过滤算法和基于用户的协同过滤算法的优点,利用基于Slope One模型的协同过滤算法并结合局部相似原理对用户-电影评分矩阵进行数据填充,使填充的数据更具有说服力的同时有效地缓解了数据稀疏性问题,进而提高了电影推荐的精准度。
具体实施方式
下面通过实施例对本发明进一步说明。
实施例:
步骤1,收集用户的评分数据,得到用户-电影评分矩阵S;
Figure BDA0002003144410000061
其中,矩阵的每个元素spi表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,用户个数m=654,电影个数n=1683;
步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:
Figure BDA0002003144410000062
其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,这里newmax=1,newmin为设定区间的下界,这里newmin=0,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:
Figure BDA0002003144410000063
其中,矩阵的每个元素npi为归一化后的评分数据,表示用户p对电影i的归一化评分;
步骤4,设定电影Itemi与电影集合中其他电影Itemj间具有的共同用户评分计数与电影Itemi的用户评分计数的比值阈值Threshold_item=0.25作为是否进一步计算电影间相似度的标准;其中,电影集合中除电影Itemi以外的其他电影的下标j=1,2,3,…,n;
步骤5,在电影集合中选取一个电影Itemi,并计算该电影与电影集合中另一个电影Itemj具有的共同用户评分计数与电影Itemi的用户评分计数的比值Ratio_itemij;Ratio_itemij计算公式如下:
Figure BDA0002003144410000071
其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:
Figure BDA0002003144410000072
其中,Uij表示对电影i,j都评分过的用户集合,用户x属于集合Uij,nx,i表示用户x对电影i的归一化评分,
Figure BDA0002003144410000073
Figure BDA0002003144410000074
分别表示所有用户对电影i,j的归一化平均评分;
步骤7,按照步骤5、步骤6计算步骤5中电影Itemi与电影集合中其他的每个电影间的带权评分相似度,并按照带权评分相似度的大小进行排序,得到电影Itemi与其他电影的序列化相似度字典Sim_dicti
步骤8,按照步骤5、步骤6、步骤7对电影集合中的每个电影进行相同的处理,最终得出每个电影与其他电影的序列化相似度字典;由于Sim_itemij=Sim_itemji,所以对于已经计算过的两电影之间的带权评分相似度可直接拷贝相应的数据,规定电影与自己的带权评分相似度为0;
步骤9,设定电影的评分预测参考电影个数K=50;
步骤10,在电影集合中选取一个电影Itemi,并在其序列化相似度字典Sim_dicti取前K个邻居作为该电影的评分预测参考;
步骤10,在电影集合中选取一个电影Itemi,并在其序列化相似度字典Sim_dicti中取带权评分相似度大小前K个电影作为该电影的评分预测参考电影集合NNi
步骤11,计算步骤10中电影Itemi与其K个评分预测参考电影的评分偏差Score_deviationik
Figure BDA0002003144410000081
其中,评分预测参考电影集合下标k=1,2,3,…,K,χ为训练数据集,Si,k(χ)为训练数据集中共同评分过电影i,k的用户集,用户y属于集合Si,k(χ),Card(Si,k(χ))表示共同评分过电影i,k的用户集Si,k(χ)中的用户个数,ny,i表示用户y对电影i的归一化评分;
步骤12,利用现有的基于模型的协同过滤算法-Slope One算法,计算步骤10中电影Itemi未评分用户的加权预测评分Predict_score_itemli
Figure BDA0002003144410000082
其中,电影Itemi未评分用户下标l=1,2,3,…,Card(Itemi),Card(Itemi)为电影Itemi未评分用户的数量,Ri为电影i的评分预测参考电影集合NNi中同时与电影i一起被评分过的电影集合;
步骤13,按照步骤12对步骤10中电影Itemi的所有未评分用户的评分进行预测评分;
步骤14,按照步骤10、步骤11、步骤12、步骤13对电影集合中的每个电影进行相同的处理,最终得出每个电影的未评分用户的加权预测评分,从而实现对用户-电影评分矩阵的数据填充;
步骤15,在用户集合选取一个用户Userp,通过该用户评分的电影并结合电影信息表中的属性,匹配得到目标用户所评分的每个电影的属性列表Attributepi如下;
Figure BDA0002003144410000083
其中,
Figure BDA0002003144410000086
表示用户p评分的第i个电影的第f个属性,且对于电影具有的属性的初始值为1,不具有的属性初始值为0,属性下标f=1,2,…,F,F=19表示电影属性个数;
步骤16,对步骤15中的用户Userp所评分的每个电影,结并合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:
Figure BDA0002003144410000084
其中,
Figure BDA0002003144410000087
表示用户p对属性f的平均加权评分;
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
Figure BDA0002003144410000085
其中,
Figure BDA0002003144410000094
表示用户p所评分的所有电影中相同属性
Figure BDA0002003144410000095
的计数;
步骤17,按照步骤15、步骤16对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;
步骤18,设定用户Userp与用户集合中其他用户Userq间具有的共同电影评分计数与用户Userp的电影评分计数的比值阈值Threshold_user=0.3作为是否进一步计算用户间相似度的标准;其中,用户集合中除用户Userp以外的其他用户的下标q=1,2,3,…,m;
步骤19,在用户集合中选取一个用户Userp,并计算该用户与用户集合中另一个用户Userq具有共同电影评分计数与用户Userp的电影评分计数的比值Ratio_userpq;Ratio_userpq的计算公式如下:
Figure BDA0002003144410000091
其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户-电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:
Figure BDA0002003144410000092
其中,Ipq表示用户p,q共同评分的电影集合,电影z属于集合Ipq,np,z表示用户p对电影z的归一化评分,
Figure BDA0002003144410000096
Figure BDA0002003144410000097
分别表示用户p,q对电影z的归一化平均评分;
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
Figure BDA0002003144410000093
其中
Figure BDA0002003144410000098
分别表示用户p,q的平均加权兴趣向量;
步骤21,结合步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq与属性相似度Sim_user_attributepq计算用户间的综合相似度Simpq
Simpq=λSim_user_scorepq+(1-λ)Sim_user_attributepq
其中λ=0.6为评分权重因子;
步骤22,按照步骤19、步骤20、步骤21计算步骤19中用户Userp与用户集合中其他的每个用户间的综合相似度;
步骤23,按照步骤19、步骤20、步骤21、步骤22对用户集中的每位用户进行相同的处理,计算得出每位用户的邻居用户集以及与每位邻居对应的综合相似度;
步骤24,以综合相似度为标准对每位用户的邻居集合进行排序,最终得到每位用户的序列化邻居集合;
步骤25,设定目标用户电影推荐的参照邻居用户数N=50以及目标用户的推荐电影个数R=3;
步骤26,在目标用户集合中选取一个用户Target_usert并查看该目标用户的序列化邻居集合,取前N个用户构成该目标用户的参照邻居用户集NNt并作为计算目标用户未评分电影的预测评分依据;其中,目标用户集合是用户集合的一个子集,目标用户下标t=1,2,3,…,T,T=15为目标用户集合中用户的数量;
步骤27,在归一化后的用户-电影评分矩阵基础上,依据现有的基于用户的协同过滤推荐算法,计算步骤26中目标用户Target_usert未评分电影的预测评分Pt,i
Figure BDA0002003144410000101
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分,
Figure BDA0002003144410000102
分别为目标用户Target_usert和邻居用户u所评分电影的归一化平均评分;
步骤28,按照步骤26、步骤27对步骤26中目标用户所有未评分电影进行相同的处理,得出步骤26中目标用户Target_usert未评分电影的预测评分;
步骤29,按照步骤26、步骤27、步骤28对目标用户集中每个目标用户进行相同的处理,得出每个目标用户未评分电影的预测评分;
步骤30,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;
步骤31,在目标用户集中选取一个用户Target_usert,查看该用户的序列化预测评分电影集合并取出预测评分大小前R个电影作为该目标用户的电影推荐列表Recommend_itemt
步骤32,按照步骤31,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表如下表所示:
用户ID 电影ID 推荐度 电影名称 上映时间 电影类型
1 60 0.75 蓝白红三部曲之蓝 1993/1/1 剧情/爱情
1 74 0.75 癫猫公路历险记 1965/1/1 剧情
1 213 0.7214 看得见风景的房间 1986/1/1 动作/喜剧/剧情
2 213 0.6786 看得见风景的房间 1986/1/1 剧情/爱情
2 60 0.6714 蓝白红三部曲之蓝 1993/1/1 剧情
2 83 0.6714 无事生非 1993/1/1 喜剧/爱情
3 60 0.7143 蓝白红三部曲之蓝 1993/1/1 剧情
3 104 0.7071 恐龙特警 1996/3/29 剧情
3 136 0.6786 史密斯先生去华盛顿 1939/1/1 喜剧
4 45 0.7429 饮食男女 1994/1/1 剧情/爱情
4 60 0.7429 蓝白红三部曲之蓝 1993/1/1 喜剧/剧情
4 213 0.7071 看得见风景的房间 1986/1/1 剧情
5 165 0.75 男人的野心 1986/1/1 喜剧/剧情
5 45 0.7071 饮食男女 1994/1/1 剧情
5 213 0.7071 看得见风景的房间 1986/1/1 剧情/爱情
6 213 0.7286 看得见风景的房间 1986/1/1 喜剧/爱情
6 60 0.7071 蓝白红三部曲之蓝 1993/1/1 剧情/爱情
6 83 0.7 无事生非 1993/1/1 剧情
7 165 0.9286 男人的野心 1986/1/1 剧情
7 30 0.8571 白日美人 1967/1/1 喜剧
7 251 0.8571 谈谈情,跳跳舞 1997/7/11 剧情
8 60 0.6857 蓝白红三部曲之蓝 1993/1/1 喜剧/爱情
8 83 0.6786 无事生非 1993/1/1 剧情/爱情
8 213 0.6786 看得见风景的房间 1986/1/1 剧情
9 104 0.6929 恐龙特警 1996/3/29 剧情/爱情
9 60 0.6714 蓝白红三部曲之蓝 1993/1/1 喜剧
9 213 0.6714 看得见风景的房间 1986/1/1 剧情
10 213 0.6714 看得见风景的房间 1986/1/1 喜剧/爱情
10 45 0.6643 饮食男女 1994/1/1 喜剧/剧情
10 83 0.6643 无事生非 1993/1/1 剧情/爱情
11 242 0.6857 给我一个爸Kolya 1997/1/24 喜剧
11 45 0.6786 饮食男女 1994/1/1 剧情
11 60 0.6714 蓝白红三部曲之蓝 1993/1/1 喜剧/剧情
12 60 0.6714 蓝白红三部曲之蓝 1993/1/1 剧情/爱情
12 213 0.6714 看得见风景的房间 1986/1/1 喜剧/爱情
12 83 0.6643 无事生非 1993/1/1 剧情
13 213 0.9973 看得见风景的房间 1986/1/1 剧情/爱情
13 45 0.9929 饮食男女 1994/1/1 喜剧/剧情
13 189 0.8571 月球野餐记 1992/1/1 动画/喜剧
14 213 0.7 看得见风景的房间 1986/1/1 剧情/爱情
14 83 0.6929 无事生非 1993/1/1 喜剧/爱情
14 60 0.6714 蓝白红三部曲之蓝 1993/1/1 剧情
15 213 0.7571 蓝白红三部曲之蓝 1986/1/1 剧情/爱情
15 83 0.6857 无事生非 1993/1/1 喜剧/爱情
15 197 0.6786 毕业生 1967/1/1 剧情/爱情

Claims (1)

1.一种交叉协同过滤推荐方法,其特征在于,包括以下步骤:
步骤1,收集用户的评分数据,得到用户-电影评分矩阵S;
Figure FDA0002003144400000011
其中,矩阵的每个元素spi原始评分数据,表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,m为用户的个数,n为电影的个数;
步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:
Figure FDA0002003144400000012
其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,newmin为设定区间的下界,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:
Figure FDA0002003144400000013
其中,矩阵的每个元素npi为归一化后的评分数据,表示用户p对电影i的归一化评分;
步骤4,设定电影Itemi与电影集合中其他电影Itemj间具有的共同用户评分计数与电影Itemi的用户评分计数的比值阈值Threshold_item作为是否进一步计算电影间相似度的标准;
其中,电影集合中除电影Itemi以外的其他电影的下标j=1,2,3,...,n;
步骤5,在电影集合中选取一个电影Itemi,并计算该电影与电影集合中另一个电影Itemj具有的共同用户评分计数与电影Itemi的用户评分计数的比值Ratio_itemij;Ratio_itemij计算公式如下:
Figure FDA0002003144400000014
其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:
Figure FDA0002003144400000021
其中,Uij表示对电影i,j都评分过的用户集合,用户x属于集合Uij,nx,i表示用户x对电影i的归一化评分,
Figure FDA0002003144400000024
Figure FDA0002003144400000025
分别表示所有用户对电影i,j的归一化平均评分;
步骤7,按照步骤5、步骤6计算步骤5中电影Itemi与电影集合中其他的每个电影间的带权评分相似度,并按照带权评分相似度的大小进行排序,得到电影Itemi与其他电影的序列化相似度字典Sim_dicti
步骤8,按照步骤5、步骤6、步骤7对电影集合中的每个电影进行相同的处理,最终得出每个电影与其他电影的序列化相似度字典;由于Sim_itemij=Sim_itemji,所以对于已经计算过的两电影之间的带权评分相似度可直接拷贝相应的数据,规定电影与自己的带权评分相似度为0;
步骤9,设定电影的评分预测参考电影个数K,其中K的取值范围是0到n;
步骤10,在电影集合中选取一个电影Itemi,并在其序列化相似度字典Sim_dicti中取带权评分相似度大小前K个电影作为该电影的评分预测参考电影集合NNi
步骤11,计算步骤10中电影Itemi与其K个评分预测参考电影的评分偏差Score_deviationik
Figure FDA0002003144400000022
其中,评分预测参考电影集合下标k=1,2,3,...,K,χ为训练数据集,Si,k(χ)为训练数据集中共同评分过电影i,k的用户集,用户y属于集合Si,k(χ),Card(Si,k(χ))表示共同评分过电影i,k的用户集Si,k(χ)中的用户个数,ny,i表示用户y对电影i的归一化评分;
步骤12,利用现有的基于模型的协同过滤算法-Slope One算法,计算步骤10中电影Itemi未评分用户的加权预测评分Predict_score_itemli
Figure FDA0002003144400000023
其中,电影Itemi未评分用户下标l=1,2,3,...,Card(Itemi),Card(Itemi)为电影Itemi未评分用户的数量,Ri为电影i的评分预测参考电影集合NNi中同时与电影i一起被评分过的电影集合;
步骤13,按照步骤12对步骤10中电影Itemi的所有未评分用户的评分进行预测评分;
步骤14,按照步骤10、步骤11、步骤12、步骤13对电影集合中的每个电影进行相同的处理,最终得出每个电影的未评分用户的加权预测评分,从而实现对用户-电影评分矩阵的数据填充;
步骤15,在用户集合选取一个用户Userp,通过该用户评分的电影并结合电影信息表中的属性,匹配得到目标用户所评分的每个电影的属性列表Attributepi如下;
Figure FDA0002003144400000031
其中,
Figure FDA0002003144400000035
表示用户p评分的第i个电影的第f个属性,且对于电影具有的属性的初始值为1,不具有的属性初始值为0,属性下标f=1,2,…,F,F表示电影属性个数;
步骤16,对步骤15中的用户Userp所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:
Figure FDA0002003144400000032
其中,
Figure FDA0002003144400000036
表示用户p对属性f的平均加权评分;
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
Figure FDA0002003144400000033
其中,
Figure FDA0002003144400000037
表示用户p所评分的所有电影中相同属性
Figure FDA0002003144400000038
的计数;
步骤17,按照步骤15、步骤16对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;
步骤18,设定用户Userp与用户集合中其他用户Userq间具有的共同电影评分计数与用户Userp的电影评分计数的比值阈值Threshold_user作为是否进一步计算用户间相似度的标准;其中,用户集合中除用户Userp以外的其他用户的下标q=1,2,3,...,m;
步骤19,在用户集合中选取一个用户Userp,并计算该用户与用户集合中另一个用户Userq具有共同电影评分计数与用户Userp的电影评分计数的比值Ratio_userpq;Ratio_userpq的计算公式如下:
Figure FDA0002003144400000034
其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户-电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:
Figure FDA0002003144400000041
其中,Ipq表示用户p,q共同评分的电影集合,电影z属于集合Ipq,np,z表示用户p对电影z的归一化评分,
Figure FDA0002003144400000043
Figure FDA0002003144400000044
分别表示用户p,q对电影z的归一化平均评分;
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
Figure FDA0002003144400000042
其中
Figure FDA0002003144400000045
分别表示用户p,q的平均加权兴趣向量;
步骤21,结合步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq与属性相似度Sim_user_attributepq计算用户间的综合相似度Simpq
Simpq=ASim_user_scorepq+(1-λ)Sim_user_attributepq
其中λ为评分权重因子;
步骤22,按照步骤19、步骤20、步骤21计算步骤19中用户Userp与用户集合中其他的每个用户间的综合相似度;
步骤23,按照步骤19、步骤20、步骤21、步骤22对用户集中的每位用户进行相同的处理,计算得出每位用户的邻居用户集以及与每位邻居对应的综合相似度;
步骤24,以综合相似度为标准对每位用户的邻居集合进行排序,最终得到每位用户的序列化邻居集合;
步骤25,设定目标用户电影推荐的参照邻居用户数N以及目标用户的推荐电影个数R;其中参照邻居用户数N的取值范围是0到m,目标用户的推荐电影个数R的取值范围是0到n;
步骤26,在目标用户集合中选取一个用户Target_usert并查看该目标用户的序列化邻居集合,取前N个用户构成该目标用户的参照邻居用户集NNt并作为计算目标用户未评分电影的预测评分依据;其中,目标用户集合是用户集合的一个子集,目标用户下标t=1,2,3,...,T;
步骤27,在归一化后的用户-电影评分矩阵基础上,依据现有的基于用户的协同过滤推荐算法,计算步骤26中目标用户Target_usert未评分电影的预测评分Pt,i
Figure FDA0002003144400000051
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分,
Figure FDA0002003144400000052
分别为目标用户Target_usert和邻居用户u所评分电影的归一化平均评分;
步骤28,按照步骤26、步骤27对步骤26中目标用户所有未评分电影进行相同的处理,得出步骤26中目标用户Target_usert未评分电影的预测评分;
步骤29,按照步骤26、步骤27、步骤28对目标用户集中每个目标用户进行相同的处理,得出每个目标用户未评分电影的预测评分;
步骤30,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;
步骤31,在目标用户集中选取一个用户Target_usert,查看该用户的序列化预测评分电影集合并取出预测评分大小前R个电影作为该目标用户的电影推荐列表Recommend_itemt
步骤32,按照步骤31,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表。
CN201910219542.0A 2019-03-22 2019-03-22 一种交叉协同过滤推荐方法 Active CN109947987B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910219542.0A CN109947987B (zh) 2019-03-22 2019-03-22 一种交叉协同过滤推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910219542.0A CN109947987B (zh) 2019-03-22 2019-03-22 一种交叉协同过滤推荐方法

Publications (2)

Publication Number Publication Date
CN109947987A CN109947987A (zh) 2019-06-28
CN109947987B true CN109947987B (zh) 2022-10-25

Family

ID=67010823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910219542.0A Active CN109947987B (zh) 2019-03-22 2019-03-22 一种交叉协同过滤推荐方法

Country Status (1)

Country Link
CN (1) CN109947987B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933726B (zh) * 2019-03-22 2022-04-12 江西理工大学 基于用户平均加权兴趣向量聚类的协同过滤电影推荐方法
CN110737800A (zh) * 2019-10-14 2020-01-31 北京弘远博学科技有限公司 一种基于学生观看视频的相似度推荐的方法
CN110825978B (zh) * 2019-10-26 2023-04-07 复旦大学 一种基于近邻用户特征共享的多任务协同过滤方法
CN110968793A (zh) * 2019-11-11 2020-04-07 辽宁师范大学 基于协同过滤混合填充的用户冷启动推荐算法
CN111159573B (zh) * 2019-12-30 2022-04-08 广东工业大学 一种基于项目的内容推荐方法
CN112905906B (zh) * 2021-01-25 2022-07-15 浙江大学 一种融合局部协同与特征交叉的推荐方法及***

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103745100A (zh) * 2013-12-27 2014-04-23 浙江大学 一种基于项目的混合显性隐性反馈的协同过滤推荐算法
CN103971161A (zh) * 2014-05-09 2014-08-06 哈尔滨工程大学 基于柯西分布量子粒子群的混合推荐方法
CN106202331A (zh) * 2016-07-01 2016-12-07 中国传媒大学 分层次隐私保护的推荐***及基于该推荐***的作业方法
CN106484876A (zh) * 2016-10-13 2017-03-08 中山大学 一种基于典型度和信任网络的协同过滤推荐方法
CN108197209A (zh) * 2017-12-28 2018-06-22 重庆理工大学 一种基于加权协同过滤算法的电影推荐方法
CN109871479A (zh) * 2019-01-08 2019-06-11 西北大学 一种基于用户项目类及评分可靠性的协同过滤方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8676937B2 (en) * 2011-05-12 2014-03-18 Jeffrey Alan Rapaport Social-topical adaptive networking (STAN) system allowing for group based contextual transaction offers and acceptances and hot topic watchdogging

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103745100A (zh) * 2013-12-27 2014-04-23 浙江大学 一种基于项目的混合显性隐性反馈的协同过滤推荐算法
CN103971161A (zh) * 2014-05-09 2014-08-06 哈尔滨工程大学 基于柯西分布量子粒子群的混合推荐方法
CN106202331A (zh) * 2016-07-01 2016-12-07 中国传媒大学 分层次隐私保护的推荐***及基于该推荐***的作业方法
CN106484876A (zh) * 2016-10-13 2017-03-08 中山大学 一种基于典型度和信任网络的协同过滤推荐方法
CN108197209A (zh) * 2017-12-28 2018-06-22 重庆理工大学 一种基于加权协同过滤算法的电影推荐方法
CN109871479A (zh) * 2019-01-08 2019-06-11 西北大学 一种基于用户项目类及评分可靠性的协同过滤方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
结合信任和用户关系的微博关注推荐算法;王梦佳等;《计算机应用研究》;20171212(第12期);全文 *
网络信任研究进展;刘建生等;《计算机科学》;20181115(第11期);全文 *
融合类别信息和用户兴趣度的协同过滤推荐算法;何明等;《计算机科学》;20170815(第08期);全文 *

Also Published As

Publication number Publication date
CN109947987A (zh) 2019-06-28

Similar Documents

Publication Publication Date Title
CN109947987B (zh) 一种交叉协同过滤推荐方法
CN108132968B (zh) 网络文本与图像中关联语义基元的弱监督学习方法
CN108733798B (zh) 一种基于知识图谱的个性化推荐方法
CN112765486B (zh) 一种融合知识图谱的注意力机制的电影推荐方法
CN104834686B (zh) 一种基于混合语义矩阵的视频推荐方法
CN108665323B (zh) 一种用于理财产品推荐***的集成方法
CN108897791B (zh) 一种基于深度卷积特征和语义相似度量的图像检索方法
CN110674407A (zh) 基于图卷积神经网络的混合推荐方法
Chen et al. Research on personalized recommendation hybrid algorithm for interactive experience equipment
CN110096634B (zh) 一种基于粒子群优化的房产数据向量对齐方法
CN106528812B (zh) 一种基于usdr模型的云推荐方法
CN113407834A (zh) 一种基于知识图谱辅助的用户多维度兴趣抽取方法
CN110851700B (zh) 一种融合属性和语义的概率矩阵分解冷启动推荐方法
CN107944485A (zh) 基于聚类群组发现的推荐***及方法、个性化推荐***
CN109034953B (zh) 一种电影推荐方法
Cong Personalized recommendation of film and television culture based on an intelligent classification algorithm
CN108664558B (zh) 一种面向大规模用户的网络电视个性化推荐服务方法
CN112380451A (zh) 一种基于大数据的喜好内容推荐方法
CN110851701B (zh) 一种基于用户上下文耦合相似度的概率矩阵分解推荐方法
Zhu et al. Age estimation algorithm of facial images based on multi-label sorting
Fu et al. Collaborative filtering recommendation algorithm towards intelligent community
Ma et al. The SOM based improved k-means clustering collaborative filtering algorithm in TV recommendation system
CN112765490A (zh) 一种基于知识图谱和图卷积网络的信息推荐方法及***
Chen et al. Exploiting aesthetic features in visual contents for movie recommendation
Duan et al. A hybrid recommendation system based on fuzzy c-means clustering and supervised learning

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant