CN109947987B - 一种交叉协同过滤推荐方法 - Google Patents
一种交叉协同过滤推荐方法 Download PDFInfo
- 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
Links
- 238000001914 filtration Methods 0.000 title claims abstract description 30
- 238000000034 method Methods 0.000 title claims abstract description 16
- 239000011159 matrix material Substances 0.000 claims abstract description 24
- 238000004364 calculation method Methods 0.000 claims abstract description 17
- 238000012545 processing Methods 0.000 claims description 22
- 239000013598 vector Substances 0.000 claims description 17
- 238000010606 normalization Methods 0.000 claims description 6
- 238000012549 training Methods 0.000 claims description 5
- 238000012163 sequencing technique Methods 0.000 claims description 3
- MUKYLHIZBOASDM-UHFFFAOYSA-N 2-[carbamimidoyl(methyl)amino]acetic acid 2,3,4,5,6-pentahydroxyhexanoic acid Chemical compound NC(=N)N(C)CC(O)=O.OCC(O)C(O)C(O)C(O)C(O)=O MUKYLHIZBOASDM-UHFFFAOYSA-N 0.000 description 10
- 241000819233 Tribulus <sea snail> Species 0.000 description 10
- 229940047183 tribulus Drugs 0.000 description 10
- 235000005911 diet Nutrition 0.000 description 5
- 230000037213 diet Effects 0.000 description 5
- 238000011156 evaluation Methods 0.000 description 3
- 241000086550 Dinosauria Species 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 239000004135 Bone phosphate Substances 0.000 description 1
- PEDCQBHIVMGVHV-UHFFFAOYSA-N Glycerine Chemical compound OCC(O)CO PEDCQBHIVMGVHV-UHFFFAOYSA-N 0.000 description 1
- 244000046052 Phaseolus vulgaris Species 0.000 description 1
- 235000010627 Phaseolus vulgaris Nutrition 0.000 description 1
- 240000004808 Saccharomyces cerevisiae Species 0.000 description 1
- 230000003796 beauty Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 206010015037 epilepsy Diseases 0.000 description 1
- 230000005284 excitation Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 235000021178 picnic Nutrition 0.000 description 1
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;
其中,矩阵的每个元素spi原始评分数据,表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,m为用户的个数,n为电影的个数;
步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:
其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,newmin为设定区间的下界,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:
其中,矩阵的每个元素npi为归一化后的评分数据,表示用户p对电影i的归一化评分;
步骤4,设定电影Itemi与电影集合中其他电影Itemj间具有的共同用户评分计数与电影Itemi的用户评分计数的比值阈值Threshold_item作为是否进一步计算电影间相似度的标准;其中,电影集合中除电影Itemi以外的其他电影的下标j=1,2,3,…,n;
步骤5,在电影集合中选取一个电影Itemi,并计算该电影与电影集合中另一个电影Itemj具有的共同用户评分计数与电影Itemi的用户评分计数的比值Ratio_itemij;Ratio_itemij计算公式如下:
其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:
步骤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;
其中,评分预测参考电影集合下标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;
其中,电影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如下;
步骤16,对步骤15中的用户Userp所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
步骤17,按照步骤15、步骤16对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;
步骤18,设定用户Userp与用户集合中其他用户Userq间具有的共同电影评分计数与用户Userp的电影评分计数的比值阈值Threshold_user作为是否进一步计算用户间相似度的标准;其中,用户集合中除用户Userp以外的其他用户的下标q=1,2,3,…,m;
步骤19,在用户集合中选取一个用户Userp,并计算该用户与用户集合中另一个用户Userq具有共同电影评分计数与用户Userp的电影评分计数的比值Ratio_userpq;Ratio_userpq的计算公式如下:
其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户-电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
步骤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;
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分,分别为目标用户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;
其中,矩阵的每个元素spi表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,用户个数m=654,电影个数n=1683;
步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:
其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,这里newmax=1,newmin为设定区间的下界,这里newmin=0,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:
其中,矩阵的每个元素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计算公式如下:
其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:
步骤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;
其中,评分预测参考电影集合下标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;
其中,电影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如下;
步骤16,对步骤15中的用户Userp所评分的每个电影,结并合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
步骤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的计算公式如下:
其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户-电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
步骤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;
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分,分别为目标用户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;
其中,矩阵的每个元素spi原始评分数据,表示用户p对电影i的评分,用户没有评分过的电影分值为0,用户下标p=1,2,…,m,电影下标i=1,2,…,n,m为用户的个数,n为电影的个数;
步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:
其中,minA为用户评分数据集A中最小的数据,maxA为用户评分数据集A中最大的数据,newmax为设定区间的上界,newmin为设定区间的下界,spi为原始评分数据,npi为归一化后的评分数据;
步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵N如下:
其中,矩阵的每个元素npi为归一化后的评分数据,表示用户p对电影i的归一化评分;
步骤4,设定电影Itemi与电影集合中其他电影Itemj间具有的共同用户评分计数与电影Itemi的用户评分计数的比值阈值Threshold_item作为是否进一步计算电影间相似度的标准;
其中,电影集合中除电影Itemi以外的其他电影的下标j=1,2,3,...,n;
步骤5,在电影集合中选取一个电影Itemi,并计算该电影与电影集合中另一个电影Itemj具有的共同用户评分计数与电影Itemi的用户评分计数的比值Ratio_itemij;Ratio_itemij计算公式如下:
其中,Card(Uij)表示对电影i,j都评分过的用户的个数,Card(Ui)表示对电影i评分过的用户的个数;
步骤6,若步骤5中的Ratio_itemij大于设定的阈值Threshold_item,则利用皮尔逊相关系数公式并结合共同评分比值Ratio_itemij进一步计算步骤5中电影Itemi与电影集合中另一个电影Itemj间的带权评分相似度Sim_itemij,若小于阈值Threshold_item则不进行相似度计算;带权评分相似度计算公式如下:
步骤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;
其中,评分预测参考电影集合下标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;
其中,电影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如下;
步骤16,对步骤15中的用户Userp所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权属性评分向量Attribute_scorep,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量Avg_attribute_scorep来描述该用户的综合兴趣爱好,Avg_attribute_scorep表示为:
加权兴趣向量公式为:
Attribute_scorep=npi*Attributepi
平均加权兴趣向量每个分量的计算公式为:
步骤17,按照步骤15、步骤16对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;
步骤18,设定用户Userp与用户集合中其他用户Userq间具有的共同电影评分计数与用户Userp的电影评分计数的比值阈值Threshold_user作为是否进一步计算用户间相似度的标准;其中,用户集合中除用户Userp以外的其他用户的下标q=1,2,3,...,m;
步骤19,在用户集合中选取一个用户Userp,并计算该用户与用户集合中另一个用户Userq具有共同电影评分计数与用户Userp的电影评分计数的比值Ratio_userpq;Ratio_userpq的计算公式如下:
其中,Card(Ipq)表示用户p,q共同评分过的电影集合中电影的个数,Card(Ip)表示用户p评分过的电影集合中电影的个数;
步骤20,在经过Slope One算法进行数据填充过后的用户-电影评分矩阵基础上,若步骤19中的Ratio_userpq大于设定的阈值Threshold_user,则进一步计算步骤19中用户Userp与用户集合中另一个用户Userq间的评分相似度Sim_user_scorepq和平均加权兴趣相似度Sim_user_attributepq,若小于阈值则不进行相似度计算;计算评分相似度使用皮尔逊相关系数,皮尔逊相关系数公式如下:
计算用户间的平均加权兴趣相似度使用余弦相似度,余弦相似度公式如下:
步骤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;
其中,参照用户u属于邻居用户集合NNt,Simtu目标用户Target_usert与邻居用户u的综合相似度,nu,i为邻居用户u对电影i的归一化评分,分别为目标用户Target_usert和邻居用户u所评分电影的归一化平均评分;
步骤28,按照步骤26、步骤27对步骤26中目标用户所有未评分电影进行相同的处理,得出步骤26中目标用户Target_usert未评分电影的预测评分;
步骤29,按照步骤26、步骤27、步骤28对目标用户集中每个目标用户进行相同的处理,得出每个目标用户未评分电影的预测评分;
步骤30,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;
步骤31,在目标用户集中选取一个用户Target_usert,查看该用户的序列化预测评分电影集合并取出预测评分大小前R个电影作为该目标用户的电影推荐列表Recommend_itemt;
步骤32,按照步骤31,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表。
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 (7)
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 | 浙江大学 | 一种融合局部协同与特征交叉的推荐方法及系统 |
CN114912035B (zh) * | 2022-05-25 | 2024-07-12 | 江西理工大学南昌校区 | 基于贝叶斯概率矩阵分解的短视频推荐方法和系统 |
Citations (6)
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)
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 |
-
2019
- 2019-03-22 CN CN201910219542.0A patent/CN109947987B/zh active Active
Patent Citations (6)
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)
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) | 一种交叉协同过滤推荐方法 | |
CN112765486B (zh) | 一种融合知识图谱的注意力机制的电影推荐方法 | |
CN108132968B (zh) | 网络文本与图像中关联语义基元的弱监督学习方法 | |
CN108733798B (zh) | 一种基于知识图谱的个性化推荐方法 | |
CN104462385B (zh) | 一种基于用户兴趣模型的电影个性化相似度计算方法 | |
CN104834686B (zh) | 一种基于混合语义矩阵的视频推荐方法 | |
CN108665323B (zh) | 一种用于理财产品推荐系统的集成方法 | |
CN105138653B (zh) | 一种基于典型度和难度的题目推荐方法及其推荐装置 | |
Chen et al. | Research on personalized recommendation hybrid algorithm for interactive experience equipment | |
CN108897791B (zh) | 一种基于深度卷积特征和语义相似度量的图像检索方法 | |
CN106528812B (zh) | 一种基于usdr模型的云推荐方法 | |
CN113407834A (zh) | 一种基于知识图谱辅助的用户多维度兴趣抽取方法 | |
CN113806630A (zh) | 基于注意力的多视角特征融合跨域推荐方法及装置 | |
CN107944485A (zh) | 基于聚类群组发现的推荐系统及方法、个性化推荐系统 | |
Cong | Personalized recommendation of film and television culture based on an intelligent classification algorithm | |
CN110851700A (zh) | 一种融合属性和语义的概率矩阵分解冷启动推荐方法 | |
CN108664558B (zh) | 一种面向大规模用户的网络电视个性化推荐服务方法 | |
CN112380451A (zh) | 一种基于大数据的喜好内容推荐方法 | |
Zhu et al. | Age estimation algorithm of facial images based on multi-label sorting | |
CN110851701B (zh) | 一种基于用户上下文耦合相似度的概率矩阵分解推荐方法 | |
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 | |
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 | |
Qu et al. | The application of interactive methods under swarm computing and artificial intelligence in image retrieval and personalized analysis |
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 |