本发明涉及个性化推荐
技术领域:
,特别是涉及一种基于协同过滤的推荐方法。
背景技术:
:随着电子商务系统用户数目和商品数目的日益增加,在整个商品空间上用户评分数据极端稀疏,在数据稀疏时,共同评分项目很少,计算结果往往不准确甚至根本无法计算。以实验常用的数据集为例,movielens的稀疏度为95.5%,netfix的稀疏性导致相似度无法计算或者计算不准确的问题。在大型电子商务系统中,用户评分的项目一般不会超过项目总数的1%,经两个用户共同评分的项目则更少,如eachmovie网站在18个月当中所接收的用户评分数据为:72916个用户对1628部电影有2811983个评估值,也就是评估数目占用户一项矩阵的元素数目的比例为α=2811983/(72916×1628)≈0.0237,即2.37%,其矩阵非常稀疏。为了解决数据稀疏性问题,现有的办法是对未评分项目猜测一个评分,通常来说设为一个固定值或者平均分;但是这种填补空白数据的方法很难有说服力,设置的分值不同也会影响到推荐的精度(比如在5分制中设为评分的中间值3,或为了保守起见,避免影响真实数据设为0,都会产生不同的推荐结果)。传统的协同过滤推荐通过用户的最近邻居产生最终的推荐,基于项目协同过滤推荐首先计算项目之间的相关性,然后通过用户对相关项目的评分预测用户对未评分项目的评分。通常的协同过滤流程为:度量用户之间的相似度方法主要有3种:余弦相似度、相关相似度以及修正余弦相似度。余弦相似度:通过把用户的评分看作n维空间的向量,则两个用户的相似度就能够用余弦夹角来度量计算量小,但是应用中忽略了用户的评分尺度问题。相关相似度:设经用户i和用户j共同评分的项目集合用Iij表示,则用户i和用户j之间的相似度可以通过Person相关系数来度量Ri,c表示用户i对项目c的评分,和分别表示用户i和用户j对项目的平均评分。修正的余弦相似性:为了减少两个用户出现太多的空白数据,不对用户i和用户j的共同项目来计算,而是区别对待,如公式技术实现要素:本发明的目的在于克服现有技术的不足,提供一种基于协同过滤的推荐方法,利用最近邻协同过滤推荐的可靠性,面对数据稀疏性的不足时,通过补全数据的基础上,提高补全数据的可靠性,使得协同过滤能够发挥更好的作用。本发明的目的是通过以下技术方案来实现的:基于协同过滤的推荐方法,包括:计算任意两个项目之间的相似度;根据所述任意两个项目之间的相似度构建项目相似度矩阵,并根据所述项目相似度矩阵获得各项目的最近邻居集合;根据所述最近邻居集合计算用户对各项目的预测评分;根据各项目的预测评分和预测评分的置信度计算任意两个用户的相似度;根据任意两个用户的相似度计算各用户的最近邻居集合;根据用户的最近邻居集合,对用户的未评分项目进行评分,并根据评分结果生成用户的推荐集。两个项目的相似度的计算公式如下:sim(u,V)=Freq(uv)Freq(uv)+Σ|ri,u-ri,v|]]>式中,Freq(uv)表示对项目u和项目v都进行评分的用户数目,ri,u表示第i个用户对项目u的评分,ri,v表示第i个用户对项目v的评分。所述项目相似度矩阵如下:Rsim=sim1,1sim1,2...sim1,nsim2,1sim2,2...sim2,n............simn,1simn,2...simn,n]]>式中,n表示项目的总数。计算用户对各项目的预测评分时,用户为未对该项目进行评分的用户。用户对各项目的预测评分的计算公式如下:Puk,q=Σn∈Mpsim(q,n)×Ruk,nΣn∈Mpsim(q,n)]]>式中,sim(q,n)表示项目q和项目q的最近邻居集合中邻居项目n的相似度,Ruk,n表示用户uk对邻居项目n的评分或预测评分。所述置信度的计算公式如下:ϵuk,q=1nΣn∈Mqsim(q,n)]]>式中,sim(q,n)表示项目q和项目q的最近邻居集合中邻居n的相似度。两个用户的相似度的计算公式如下:sim,(ui,uj)=u1·u2|u1|×|u2|=Rui,1·Ruj,1+Rui,2·Ruj,2+...+Rui,k·Ruj,kR2ui,1+R2ui,2+...+R2ui,k·R2uj,1+R2uj,2+...+R2uj,k]]>sim(ui,uj)=Πpϵui,p×Πqϵuj,q×sim′(ui,uj)]]>式中,sim(ui,uj)表示用户ui和用户uj的相似度,Rui,k表示用户ui对项目k的评分或预测评分,Ruj,k表示用户uj对项目k的评分或预测评分,εui,p表示用户ui对项目p的评分或预测评分的置信度,εuj,q表示用户uj对项目q的评分或预测评分的置信度。用户的最近邻居集合的计算方式为:对于一个用户,选取与该用户相似度最高的多个用户作为该用户的邻居集合。根据用户的最近邻居集合,对用户的未评分项目进行评分的公式如下:Puk,i=R‾u+Σn∈Nusim(u,n)×(Rn,i-Rn‾)Σn∈Nu|sim(u,n)|]]>式中,Puk,i表示用户u对项目i的预测评分,表示用户u的平均项目评分,Rn,i表示用户u的邻居集合Nu中用户n对项目i的评分,sim(u,n)表示用户u和用户n的相似度。根据评分结果生成用户的推荐集时,选取评分最高的k个项目作为用户的推荐集。本发明的有益效果是:(1)本发明通过项目之间的相似度来补全项目评分,有效地解决了相似性度量中用户共同评分数据比较少的情况,同时使得未评分商品有一个准确的评分,而不是统一化的为0或均值;(2)为了区分补全的评分和实际评分之间的差异,本发明中引入置信度作为评分的一个评判;每个评分都对应一个置信度,置信度越大则说明评分的真实性越大,在最后的预测中也体现出的更大的作用;(3)在补全项目评分后,利用评分和置信度计算用户之间的相似度,每一个用户都获得一个邻居集,利用用户和邻居集的相似度,根据邻居集对用户未评分项目的评分可以推测出用户的项目评分,最后从推测出的评分中选取评分最高的几个项目作为推荐结果。附图说明图1为本发明的一个实施例的流程示意图。具体实施方式下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。如图1所示,基于协同过滤的推荐方法,包括以下步骤:步骤一、计算任意两个项目之间的相似度。以计算项目u和项目v的相似度为例:同时对项目u和项目v评分的用户越多,则表示项目u和项目v的相似度越大;同时对项目u和项目v进行评分的用户中,给予项目u和项目v相同分值的用户越多,则项目u和项目v的相似度越大。两个项目之间的相似度的计算公式如下:sim(u,v)=Freq(uv)Freq(uv)+Σ|ri,u-ri,v|]]>式中,Freq(uv)表示对项目u和项目v都进行评分的用户数目,ri,u表示第i个用户对项目u的评分,ri,v表示第i个用户对项目v的评分。步骤二、根据所述任意两个项目之间的相似度构建项目相似度矩阵,并根据所述项目相似度矩阵获得各项目的最近邻居集合。项目相似度矩阵表示如下:Rsim=sim1,1sim1,2...sim1,nsim2,1sim2,2...sim2,n............simn,1simn,2...simn,n]]>式中,n表示项目的总数。该项目相似度矩阵中的元素对称分布,即simu,v=simv,u,表示项目u和项目v的相似度。步骤三、根据所述最近邻居集合计算用户对各项目的预测评分。在一种实施方式中,根据一个项目的最近邻居集合计算未对该项目作出评价的用户对该项目的预测评分。对项目进行预测评分时,首先,计算项目Itemk(1≤k≤n)的p个最近邻居集合Mp={i1′,i2′,…,ip′}使得且sim(Itemk,i'1)最大,Mp中将邻居项目按照与项目Itemk的相似度的大小降序排列;其次,得到项目Itemk的p个最近邻集合Mp后,根据项目之间的相似度,预测用户uk的对项目q的评分,预测评分的计算公式如下:根式中,sim(q,n)表示项目q和项目q的最近邻居集合中邻居n的相似度,Ruk,n表示用户uk对邻居n的评分或预测评分。步骤四、根据各项目的预测评分和预测评分的置信度计算未评分用户中任意两个用户的相似度。一个项目的置信度为该项目和该项目的邻居集合中邻居项目的相似度的平均值,表示该项目的预测评分的可信度,计算公式如下:ϵuk,q=1nΣn∈Mqsim(q,n)]]>式中,sim(q,n)表示项目q和项目q的最近邻居集合中邻居n的相似度。两个用户的相似度的计算方法为:根据每个项目的预测评分和预测评分的置信度,对应一个二元值(Rui,n,εui,n),Rui,n表示用户ui对项目n的评分,由于Rui,n的值可能远大于εui,n(预测评分Rui,n的置信度),所以先对其进行归一化处理为(Rui,n/m,εui,n),m为项目n能获得的最大评分。在用户之间存在交叉评分的项目上,对于用户i有:{(Rui,1/m,ε1),(Rui,2/m,ε2),…,(Rui,n/m,εn)};对于用户j有:{Ruj,1/m,ε1),(Ruj,2/m,ε2),…,(Ruj,n/m,εn)}。定义用户ui的项目评分以及置信度矩阵:{(Rui,1,εui,1),(Rui,2,εui,2)…(Rui,k,εui,k)};定义用户uj的项目评分以及置信度矩阵:{(Ruj,1,εuj,1),(Ruj,2,εuj,2)…(Ruj,k,εuj,k)};则在ui和uj对相似度置信度为1的时候,用余弦定理求得用户之间的额相似度:sim,(ui,uj)=u1·u2|u1|×|u2|=Rui,1·Ruj,1+Rui,2·Ruj,2+...+Rui,k·Ruj,kR2ui,1+R2ui,2+...+R2ui,k·R2uj,1+R2uj,2+...+R2uj,k]]>sim(ui,uj)=Πpϵui,p×Πqϵuj,q×sim′(ui,uj)]]>相似度的计算方式如下:令其中,a与b的相似度定义为0.5,aa与a的相似度定义为0.7,则aa与b的相似度为0.5*0.7=0.35;其中A与B的相似度定义为0.6,AA与A的相似度定义为0.5,则AA与B的相似度定义为0.5*0.6=0.3;B与b的相似度用余弦夹角计算为sim(B,b),则aa与AA的相似度为0.3*0.35*sim(B,b)。步骤五、根据用户的相似度计算用户的最近邻居集合。取用户i相似度高的k个用户作为邻居集合Nu。步骤六、根据用户的最近邻居集合,对用户的未评分项目进行评分,并根据评分结果生成用户的推荐集。根据用户的最近邻居集合,对用户的未评分项目进行评分的公式如下:Puk,i=R‾u+Σn∈Nusim(u,n)×(Rn,i-Rn‾)Σn∈Nu|sim(u,n)|]]>式中,Puk,i表示用户u对项目i的预测评分,表示用户u的平均项目评分,Rn,i表示用户u的邻居集合Nu中用户n对项目i的评分,sim(u,n)表示用户u和用户n的相似度。根据评分结果生成用户的推荐集时,选取评分最高的k个项目作为用户的推荐。以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。当前第1页1 2 3