基于用户平均加权兴趣向量聚类的协同过滤电影推荐方法与流程

文档序号:18010110发布日期:2019-06-25 23:55阅读:244来源:国知局
本发明涉及一种电影推荐方法,具体是基于用户平均加权兴趣向量聚类的协同过滤电影推荐方法。
背景技术
:处在大数据时代的今天,海量的数据以爆炸的方式充斥着我们每个人的日常生活。网上购物颠覆了传统的买卖方式,社交网络拓宽了我们交际的范围,博客论坛成为我们记录生活的一部分,那么如何向用户提供个性化的、具有针对性的信息服务成为无数电商以及网络平台关注的焦点。协同过滤推荐能够及时跟踪用户的需求变化来自动调整信息服务的方式和内容,是一种极具潜力的解决信息过载的个性化服务技术。在大大节约了商家的广告宣传费用的同时又提高了用户的关注度,也帮助用户在更短的时间里买到自己心仪的商品,达到了一举三赢的效果。协同过滤推荐算法相比其他的推荐算法具有很大优势,主要体现在以下几个方面:①算法的个性化、自动化程度高;②推荐领域广泛;③易产生新异推荐;④技术上易于实现。国内外的研究人员提出了各种各样的基于协同过滤的推荐方法,例如钱程和阳小兰发表的“一种电影个性化推荐系统的研究与实现”(见[j].计算机与数字工程,2011,8,p73-76),电影推荐系统基于改进的协同过滤推荐算法,并针对电影领域进行实验,实验证明了推荐系统的可行性以及高效性;李剑锋和秦拯发表的“一种基于局部近邻slopeone协同过滤推荐算法”(见[j].计算机工程与科学,2011,7,p1346-1350),解决在构建电影评分偏差表时噪声数据对评分偏差的影响,从而提高的评分预测的准确性以及推荐的精准度;朱东郡等发表的“基于标签聚类和兴趣划分的协同过滤推荐算法”(见[j].计算机工程,2017,11,p146-151),算法通过对标签聚类对用户兴趣进行划分,并引入时间因子跟踪用户的兴趣变化,相比传统的协同过滤推荐算法,实验表明改进后的算法能够深入挖掘用户兴趣,适应用户的兴趣变化,进而使推荐精度的得到提高。从协同过滤推荐算法研究现状可知,推荐技术在大数据时代的今天已经得到了广泛的应用,不过传统的协同过滤推荐算法存在数据稀疏性、冷启动、扩展性等问题,这些问题直接或者间接地导致系统在推荐时推荐精准度不高、推荐效率低下、推荐实时性不佳以及不能很好地应对新电影或新用户进入系统的推荐(见翁小兰、王志坚所发表的“协同过滤推荐算法研究进展”,[j].计算机工程与应用,2018,54(1),p25-31)。技术实现要素:本发明的目的是提供一种基于用户平均加权兴趣向量聚类的协同过滤电影推荐方法,它引入用户加权兴趣向量并结合k-means聚类,在很大程度上减少了邻居用户的搜索时间,且显著提高了推荐结果的合理性,使推荐结果更为精准。本发明所采用的技术方案是:基于用户平均加权兴趣向量聚类的协同过滤电影推荐方法,包括以下步骤:步骤1,收集用户的评分数据,得到用户-电影评分矩阵s;其中,矩阵的每个元素sij为用户原始评分数据,表示用户i对电影j的评分,用户没有评分过的电影分值为0,用户下标i=1,2,…,m,电影下标j=1,2,…,n,m为用户的个数,n为电影的个数;步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:其中,mina为用户评分数据集a中最小的数据,maxa为用户评分数据集a中最大的数据,newmax为设定区间的上界,newmin为设定区间的下界,sij为原始评分数据,nij为归一化后的评分数据;步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵n如下:其中,矩阵的每个元素nij为归一化后的评分数据,表示用户i对电影j的归一化评分;步骤4,在用户集合中选取一个用户useri,通过该用户的评分电影并结合电影信息表中的电影属性,匹配得到该用户所评分的每个电影的属性向量attributeij如下:其中,表示用户i所评分的第j个电影的第f个属性,且对于电影具有的属性的初始值为1,不具有的属性初始值为0,属性下标f=1,2,…,f,f表示电影属性个数;步骤5,对步骤4中用户useri所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权兴趣向量attribute_scorei,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量avg_attribute_scorei来描述该用户的综合兴趣爱好,avg_attribute_scorei表示为:其中,表示用户i对属性f的平均加权评分;加权兴趣向量公式为:attribute_scorei=nij·attributeij平均加权兴趣向量每个分量的计算公式为:其中,表示用户i所评分的所有电影中相同属性的计数;步骤6,按照步骤4、步骤5对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;步骤7,设定聚类簇数k并创建k个空的用户兴趣集合{c1,c2,...,ck,…,ck};其中,类簇下标k=1,2,3,…,k;步骤8,在用户集合中随机选取k个用户的平均加权兴趣向量作为初始类簇中心{μ1,μ2,...,μk,…,μk};步骤9,从用户集中选取一个用户useri并计算该用户的平均加权兴趣向量到各个聚类中心的距离dik,求出与该用户距离最近的聚类中心μk,并将该用户纳入相应的类簇ck中;距离公式:dik=‖avg_attribute_scorei-μk‖2聚类公式:μk=argmink∈{1,2,3…,k}dik步骤10,按照步骤9对用户集合中的每位用户进行相同的处理,将所有用户都归入相应的类簇中;步骤11,选取k个类簇中的一个类簇classk,计算该类簇中所有用户的平均加权兴趣向量的均值向量作为该类簇新的聚类中心μ’k;其中,card(ck)为类簇ck中用户的数量;步骤12,按照步骤11对k个类簇中的每个类簇进行聚类中心更新操作,得到新的聚类中心{μ'1,μ'2,...,μ'k,…,μ'k};步骤13,重复步骤9、步骤10、步骤11、步骤12,直到每个类簇的聚类中心不再改变时输出k个类簇以及对应的聚类中心步骤14,选取目标用户集合中的一个目标用户target_usert,通过计算该目标用户平均加权兴趣向量与各个聚类中心的距离,判断目标用户所在兴趣集合,具体计算公式同步骤5和步骤9;其中,目标用户集合是用户集合的一个子集,目标用户下标t=1,2,3,…,t,t为目标用户集合中用户的数量;步骤15,利用皮尔逊相关系数公式计算步骤14中目标用户target_usert与其所在的兴趣集合中每个用户的评分相似度sim_scorete;利用余弦相似度公式计算步骤14中目标用户target_usert与其所在的兴趣集合中每个用户的平均加权兴趣向量相似度sim_attributete;其中,兴趣集合中用户下标表示兴趣集合中的用户的数量,皮尔逊相关系数公式:其中,ite表示用户t,e共同评分的电影集合,电影c属于集合ite,ntc表示用户t对电影c的归一化评分,和分别表示用户t,e对电影c的归一化平均评分;余弦相似度公式:其中,分别表示用户t,e的平均加权兴趣向量;步骤16,结合步骤14中目标用户target_usert与所在兴趣集合中每个用户的评分相似度sim_scorete和平均加权兴趣相似度sim_attributete得到该目标用户与兴趣集合中每个用户的综合相似度simte;simte=λsim_scorete+(1-λ)sim_attributete其中λ为评分权重因子;步骤17,以综合相似度simte为标准,对步骤14中目标用户target_usert所在的兴趣集合中的用户进行综合相似度排序,得到该目标用户的序列化邻居用户集合;步骤18,按照步骤步骤14、步骤15、步骤16、步骤17对目标用户集合中的每个用户进行相同的处理,最终得出每位目标用户的序列化邻居用户集合;步骤19,设定参照邻居用户数n以及目标用户的推荐电影个数r;其中,参照邻居用户数n的取值范围是0到m,目标用户的推荐电影个数r的取值范围是0到n;步骤20,在目标用户集合中选取一个用户target_usert并查看该目标用户的序列化邻居集合,取前n个用户构成该目标用户的参照邻居用户集nnt并作为计算目标用户未评分电影的预测评分依据;步骤21,利用现有的基于用户的协同过滤推荐算法,通过步骤20中目标用户target_usert的参照邻居用户集nnt计算该目标用户未评分电影j的预测评分ptj,预测评分公式如下:其中,参照用户u属于集合nnt,simtu目标用户target_usert与参照邻居用户u的综合相似度,nuj为参照邻居用户u对电影j的归一化评分,分别为参照邻居用户u和目标用户target_usert所评分电影的归一化平均评分;步骤22,按照步骤21对步骤20中目标用户target_usert所有未评分电影进行相同的处理,得出该目标用户未评分电影的预测评分;步骤23,按照步骤20、步骤21、步骤22对目标用户集中每位用户进行相同的处理,得出每位目标用户未评分电影的预测评分;步骤24,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;步骤25,在目标用户集中选取一个用户target_usert,查看该目标用户的序列化预测评分电影集合并取出预测评分大小前r个电影作为该目标用户的推荐电影列表recommend_itemt;步骤26,按照步骤25,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表。本发明首先通过电影评分数据和电影属性信息构建用户平均加权兴趣向量,并以此为聚类标准利用k-means聚类算法对用户兴趣进行划分,判断目标用户所在的用户兴趣集合后,再利用基于用户综合相似度的协同过滤推荐算法对目标用户进行电影推荐,能够有效提高用户兴趣划分的精度,并使兴趣划分结果更具有说服力,同时,改进的算法能够有效提高推荐的精准度。具体实施方式下面通过实施例对本发明进一步说明。实施例:步骤1,收集用户的评分数据,得到用户-电影评分矩阵s;其中,矩阵的每个元素sij为用户原始评分数据,表示用户i对电影j的评分,用户没有评分过的电影分值为0,用户下标i=1,2,…,m,电影下标j=1,2,…,n,m=459个用户,n=1683个电影;步骤2,选用min-max数据归一化方法对用户评分数据归一化,使得用户的评分数值在设定区间之内,进而得到归一化用户评分,min-max数据归一化公式如下:其中,mina为用户评分数据集a中最小的数据,maxa为用户评分数据集a中最大的数据,newmax为设定区间的上界,这里newmax=1,newmin为设定区间的下界,这里newmin=0,sij为用户原始评分数据,nij为归一化后的评分数据;步骤3,按照步骤2对用户集合中每位用户的评分数据进行相同的处理,最终得到归一化用户评分矩阵n如下:其中,矩阵的每个元素nij为归一化后的评分数据,表示用户i对电影j的归一化评分;步骤4,在用户集合中选取一个用户useri,通过该用户的评分电影并结合电影信息表中的电影属性,匹配得到该用户所评分的每个电影的属性向量attributeij如下:其中表示用户i所评分的第j个电影的第f个属性,且对于电影具有的属性的初始值为1,不具有的属性初始值为0,属性下标f=1,2,…,f,f=19个电影属性;步骤5,对步骤4中用户useri所评分的每个电影,并结合该用户对每个电影的归一化评分以及对应的电影属性得到该用户的加权兴趣向量attribute_scorei,由于用户所评分的不同电影中存在属性相同的情况,故采用平均加权兴趣向量avg_attribute_scorei来描述该用户的综合兴趣爱好,avg_attribute_scorei表示为:其中,表示用户i对属性f的平均加权评分;加权兴趣向量公式为:attribute_scorei=nij·attributeij平均加权兴趣向量每个分量的计算公式为:其中,表示用户i所评分的所有电影中相同属性的计数;步骤6,按照步骤4、步骤5对用户集合中的每位用户进行相同的处理,最终得出每位用户的平均加权兴趣向量;步骤7,设定聚类簇数k=7并创建k个空的用户兴趣集合{c1,c2,...,ck,…,ck};其中,类簇下标k=1,2,3,…,k;步骤8,在用户集合中随机选取k个用户的平均加权兴趣向量作为初始类簇中心{μ1,μ2,...,μk,…,μk};步骤9,从用户集中选取一个用户useri并计算该用户的平均加权兴趣向量到各个聚类中心的距离dik,求出与该用户距离最近的聚类中心μk,并将该用户纳入相应的类簇ck中;距离公式:dik=‖avg_attribute_scorei-μk‖2聚类公式:μk=argmink∈{1,2,3…,k}dik步骤10,按照步骤9对用户集合中的每位用户进行相同的处理,将所有用户都归入相应的类簇中;步骤11,选取k个类簇中的一个类簇classk,计算该类簇中所有用户的平均加权兴趣向量的均值向量作为该类簇新的聚类中心μ’k;其中,card(ck)为类簇ck中用户的数量;步骤12,按照步骤11对k个类簇中的每个类簇进行聚类中心更新操作,得到新的聚类中心{μ’1,μ’2,...,μ’k,…,μ’k};步骤13,重复步骤9、步骤10、步骤11、步骤12,直到每个类簇的聚类中心不再改变时输出k个类簇以及对应的聚类中心步骤14,选取目标用户集合中的一个目标用户target_usert,通过计算该目标用户平均加权兴趣向量与各个聚类中心的距离,判断目标用户所在兴趣集合,具体计算公式同步骤5和步骤9;其中,目标用户集合是用户集合的一个子集,目标用户下标t=1,2,3,…,t,t=15为目标用户集合中用户的数量;步骤15,利用皮尔逊相关系数公式计算步骤14中目标用户target_usert与其所在的兴趣集合中每个用户的评分相似度sim_scorete;利用余弦相似度公式计算步骤14中目标用户target_usert与其所在的兴趣集合中每个用户的平均加权兴趣向量相似度sim_attributete;其中,兴趣集合中用户下标表示兴趣集合中的用户的数量,皮尔逊相关系数公式:其中,ite表示用户t,e共同评分的电影集合,电影c属于集合ite,ntc表示用户t对电影c的归一化评分,和分别表示用户t,e对电影c的归一化平均评分;余弦相似度公式:其中,分别表示用户t,e的平均加权兴趣向量;步骤16,结合步骤14中目标用户target_usert与所在兴趣集合中每个用户的评分相似度sim_scorete和平均加权兴趣相似度sim_attributete得到该目标用户与兴趣集合中每个用户的综合相似度simte;simte=λsim_scorete+(1-λ)sim_attributete其中λ=0.5为评分权重因子;步骤17,以综合相似度simte为标准,对步骤14中目标用户target_usert所在的兴趣集合中的用户进行综合相似度排序,得到该目标用户的序列化邻居用户集合;步骤18,按照步骤步骤14、步骤15、步骤16、步骤17对目标用户集合中的每个用户进行相同的处理,最终得出每位目标用户的序列化邻居用户集合;步骤19,设定参照邻居用户数n=50以及目标用户的推荐电影个数r=3;步骤20,在目标用户集合中选取一个用户target_usert并查看该目标用户的序列化邻居集合,取前n个用户构成该目标用户的参照邻居用户集nnt并作为计算目标用户未评分电影的预测评分依据;步骤21,利用现有的基于用户的协同过滤推荐算法,通过该目标用户的参照邻居用户集nnt计算步骤20中目标用户target_usert未评分电影j的预测评分ptj,预测评分公式如下:其中,参照用户u属于集合nnt,simtu目标用户target_usert与参照邻居用户u的综合相似度,nuj为参照邻居用户u对电影j的归一化评分,分别为参照邻居用户u和目标用户target_usert所评分电影的归一化平均评分;步骤22,按照步骤21对步骤20中目标用户target_usert所有未评分电影进行相同的处理,得出该目标用户未评分电影的预测评分;步骤23,按照步骤20、步骤21、步骤22对目标用户集中每位用户进行相同的处理,得出每位目标用户未评分电影的预测评分;步骤24,对目标用户集中每位用户的预测评分电影按照预测评分数据的大小排序,得到每位目标用户的序列化预测评分电影集合;步骤25,在目标用户集中选取一个用户target_usert,查看该目标用户的序列化预测评分电影集合并取出预测评分大小前r个电影作为该目标用户的推荐电影列表recommend_itemt;步骤26,按照步骤25,对目标用户集中每位用户进行相同的处理,最终得出每位目标用户的电影推荐列表如下表所示:用户id电影id推荐度电影名称上映时间电影类型12860.491894943英国病人1996/11/15剧情/爱情/战争12880.484551354惊声尖叫1996/12/20恐怖/惊悚13130.409694965泰坦尼克号1997/1/1动作/剧情/爱情21810.452393451绝地归来1997/3/14动作/冒险/爱情/科幻/战争2500.451925329星球大战1977/1/1动作/冒险/爱情/科幻/战争2560.424829407低俗小说1994/1/1犯罪/剧情3500.738579245星球大战1977/1/1动作/冒险/爱情/科幻/战争31740.649054488夺宝奇兵1981/1/1动作/冒险310.43643319玩具总动员1995/1/1动画/儿童/喜剧42860.705007461英国病人1996/11/15剧情/爱情/战争410.598696812玩具总动员1995/1/1动画/儿童/喜剧42690.559529731光猪六壮士1997/1/1喜剧520.28007448黄金眼1995/1/1动作/冒险/惊悚530.28007448四个房间1995/1/1惊悚540.28007448矮子当道1995/1/1动作/喜剧/剧情62860.480748696英国病人1996/11/15剧情/爱情/战争63130.374679595泰坦尼克号1997/1/1动作/剧情/爱情62580.349422009超时空接触1997/7/11剧情/科幻73020.487497457洛杉矶机密1997/1/1犯罪/黑色/神秘/惊悚73000.399722325空军一号1997/1/1动作/惊悚73130.381757066泰坦尼克号1997/1/1动作/剧情/爱情82580.37488492超时空接触1997/7/11剧情/科幻82860.346908433英国病人1996/11/15剧情/爱情/战争81000.330122541冰血暴1997/2/14犯罪/剧情/惊悚91810.74976984绝地归来1997/3/14动作/冒险/爱情/科幻/战争91720.738579245帝国反击1980/1/1动作/冒险/剧情/爱情/科幻/战争91740.699412164夺宝奇兵1981/1/1动作/冒险101810.937837838绝地归来1997/3/14动作/冒险/爱情/科幻/战争102580.823528967超时空接触1997/7/11剧情/科幻101270.763423644教父1972/1/1动作/犯罪/剧情113000.369100872空军一号1997/1/1动作/惊悚113020.317162022洛杉矶机密1997/1/1犯罪/黑色/神秘/惊悚112940.310736895大话王1997/3/21喜剧122880.772151029惊声尖叫1996/12/20恐怖/惊悚122690.699412164光猪六壮士1997/1/1喜剧123020.693816867洛杉矶机密1997/1/1犯罪/黑色/神秘/惊悚131000.430304227冰血暴1997/2/14犯罪/剧情/惊悚132580.279328292超时空接触1997/7/11剧情/科幻131810.252949813绝地归来1997/3/14动作/冒险/爱情/科幻/战争142860.851226705英国病人1996/11/15剧情/爱情/战争142580.713417989超时空接触1997/7/11剧情/科幻142690.684172992光猪六壮士1997/1/1喜剧151740.437640516夺宝奇兵1981/1/1动作/冒险153180.306296684辛德勒名单1993/1/1剧情/战争15980.305640543沉默的羔羊1991/1/1剧情/惊悚。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1