一种基于分步动态填充缓解推荐系统数据稀疏性的方法与流程

文档序号:15984862发布日期:2018-11-17 00:45阅读:169来源:国知局

本发明属于美食推荐技术领域,尤其涉及一种基于分步动态填充缓解推荐系统数据稀疏性的方法。

背景技术

随着互联网技术的迅猛发展,数据规模的爆炸式增长,带来了严重的“信息过载”问题。如何快速有效地从纷繁复杂的数据中获取有价值的信息成为了当前大数据发展的关键难题。为了解决该难题,个性化推荐算法被广泛研究,其中最常见的是协同过滤算法。在美食商家推荐领域,由于网站上的美食商家数量巨大,但只有很少的用户愿意给去过的美食商家评分,所以造成了用户—美食商家评分数据矩阵的极大稀疏,导致基于协同过滤算法得到的商家推荐列表不够准确。因此,如何对稀疏的用户—美食商家评分矩阵进行准确的预填充是美食推荐算法首要解决的问题。



技术实现要素:

本发明旨在解决以上现有技术的问题。提出了一种提高推荐准确度的基于分步动态填充缓解推荐系统数据稀疏性的方法。本发明的技术方案如下:

一种基于分步动态填充缓解推荐系统数据稀疏性的方法,其包括以下步骤:

步骤1、对用户行为数据进行预处理,选取与美食商家及美食用户相关的信息,得到用户—美食商家评分矩阵;

步骤2、利用建立的用户—美食商家评分矩阵,为每个用户和每个美食商家构建历史评分记录集合,同时构建用户集合,按照用户的评分商家数从大到小对用户集合中的用户排序;

步骤3、设置用户相似度阈值α和用户历史共同评分差均值阈值β;

步骤4、按用户在用户集合中的顺序,选取一个目标用户;根据用户—美食商家评分矩阵,计算其余用户与目标用户的相似度;选取与目标用户相似度大于α的用户构建目标用户的预选相似邻居用户集;

步骤5、计算目标用户与各预选相似邻居用户的历史共同评分差均值,若两个用户历史本身没有共同评分商家,则他们的共同评分差均值为+∞;选取共同评分差均值小于β的预选邻居用户构造最终的相似邻居用户集;

步骤6、利用目标用户的相似邻居用户集对用户—美食商家评分矩阵进行第一步填充;

步骤7、对评分矩阵中剩下的未填充数据,同样采用相似度阈值法和共同评分差均值来选取最相似商家,并利用相似商家集来对用户—美食商家评分矩阵进行第二步填充。

进一步的,所述步骤1中的用户行为数据预处理过程如下:

步骤1.1:对从点评网站中获得用户行为数据,只选取美食商家及其用户的相关信息;

步骤1.2:建立用户—美食商家评分矩阵,(1)从总的数据中筛选出与美食商家及美食用户相关的信息;(2)用这些信息来建立用户—美食商家评分矩阵。

进一步的,所述步骤2具体过程如下:

步骤2.1:为每个用户构建用户的历史评分记录集合;为每个商家构建商家的历史评分记录集合;

步骤2.2:构建用户集合,统计每个用户的评分商家个数,按照用户评分商家个数从大到小对用户集合中的用户排序。

进一步的,所述步骤4中构建目标用户的预选相似邻居用户集过程如下:

步骤4.1:按用户在用户集合中的顺序,取一个用户作为目标用户;

步骤4.2:利用用户—美食商家评分矩阵,通过pearson皮尔逊相关系数公式来计算其余用户与目标用户的相似度;步骤4.3:选取与目标用户相似度大于α的用户构建目标用户的预选相似邻居用户集p_n(u)。

进一步的,所述pearson皮尔逊相关系数计算公式如下:

其中,simu,v表示用户u和用户v的相似度,iu,v为用户u和用户v的共同评分商家集合,rui、rvi分别为用户u、用户v对商家i的评分,分别为用户u、用户v的平均评分。

进一步的,所述步骤5中的最终相似邻居集的选取过程如下:

步骤5.1:计算目标用户与各选预相似邻居用户的历史共同评分差均值,计算公式如下:

其中,avg(u,v)为用户u和用户v的历史共同评分差均值,i′u,v为目标用户u和用户v的历史共同评分商家集合,rui、rvi分别为用户u、用户v对商家i的评分;

步骤5.2:选取共同评分差均值小于β的预选邻居用户构造最终的相似邻居用户集n(u)。

进一步的,所述步骤6的利用相似邻居用户集n(u)对稀疏的用户—美食商家评分矩阵进行评分数据填充过程如下:

步骤6.1:利用相似邻居用户集对目标用户的未评分项进行填充;

步骤6.2:反复选取用户集合中下一个用户作为目标用户,对评分矩阵进行填充,即重复执行步骤4-步骤6,其中每次用于填充和计算用户相似度的用户—美食商家评分矩阵都是对上一个用户填充完成后的矩阵。直到取完用户集合中的所有用户为止,第一步填充完毕。

进一步的,所述步骤7对评分矩阵中剩下的未填充数据,采用类似的方法,利用相似商家集来对用户—美食商家评分矩阵进行填充,填充过程如下:

步骤7.1:对于第一步填充后得到的用户—美食商家评分矩阵,构建商家集合i,统计每个商家被评分的次数,并按照商家被评分次数从大到小对商家集合排序;

步骤7.2:设置商家相似度阈值γ和商家历史共同评分差均值的阈值η;

步骤7.3:按商家在商家集合中的顺序,取一个目标商家,利用pearson相关系数,计算其余商家与目标商家的相似度;将相似度大于γ的商家作为目标商家的预选邻居商家,构建预选邻居商家集p_n(i);

步骤7.4:计算预选邻居集中的商家与目标商家历史被相同用户评分的共同评分差均值,若两个商家历史没有被同一用户评分,则商家的共同评分差均值为+∞;将共同评分差均值小于η的商家作为目标商家的邻居商家,构建邻居商家集n(i);

步骤7.5:利用邻居商家集对评分矩阵中目标商家未评分数据进行填充,反复选取商家集合中的下一个商家,即重复执行步骤7.3-步骤7.5,其中每次用于相似度计算和填充的用户—美食商家评分矩阵都是对上一个商家填充完成后的矩阵。直到取到商家集合中的所有商家为止,用户—美食商家评分矩阵填充完毕。

本发明的优点及有益效果如下:

本发明与现有的稀疏矩阵填充方法相比,本发明的优点及有益效果如下:相对于传统的协同过滤算法中相似邻居集的选取,本文加入了历史共同评分差均值来筛选邻居,去掉了与目标项评分差异较大的邻居,使相似邻居集的选取更加准确,有效避免了把一个用户讨厌的商家当成另一个用户喜欢的商家来进行推荐,使推荐更加准确。本发明采用分步动态填充法,先从用户的角度做第一步填充,再从商家的角度做第二步填充,使稀疏的用户—美食商家评分矩阵的填充更加完整。同时每一步填充都采用动态填充方式,按评分个数的大小来依次选取目标用户或目标商家进行填充,每一次做填充的矩阵都是对上一个目标填充完成后的矩阵。动态填充使用户或商家的共同评分数增多,相似度计算更加准确,因此对稀疏的用户—美食商家评分矩阵的填充也更加准确,最后给出的推荐列表更加符合用户的心意,提高了用户对推荐系统的粘性。

附图说明

图1是本发明提供优选实施例是美食商家信息表;

图2是用户信息表

图3是用户—美食商家评分矩阵;

图4是算法流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、详细地描述。所描述的实施例仅仅是本发明的一部分实施例。

本发明解决上述技术问题的技术方案是:

实施例1

本发明实施例在传统的基于用户和项目的协同过滤推荐算法的基础上,对相似邻居集的选取加入了对用户、商家的历史共同评分差均值的考量,最后分步动态的对用户—美食商家评分矩阵中未评分数据进行填充,该方法包括以下步骤:

101:对用户行为数据进行预处理,建立用户—美食商家评分矩阵;

102:为每个用户和商家构建历史评分记录集合;构建用户集合,按照用户评分商家个数从大到小对用户集合中的用户排序;

103:设置用户相似度阈值α和用户历史共同评分差均值阈值β;

104:按用户在用户集合中顺序,取一个目标用户,计算用户与目标用户的相似度,构建目标用户的预选相似邻居用户集;

105:计算预选相似邻居用户与目标用户的历史共同评分差均值,构建目标

用户最终的相似邻居用户集;

106:利用用户相似邻居集对用户—美食商家评分矩阵进行填充,反复选取

用户集合中的下一个用户,即重复步骤104-步骤106,直到用户集合中的

所有用户都被取到为止,第一步填充完毕;

107:在完成了第一步填充后,对用户—美食商家评分矩阵剩下的未填充项,

在传统的基于商品的协同过滤基础上,采用与以上步骤类似的方法,对每

个商家的未评分项进行填充。

本发明实施例首次结合步骤101-步骤107对用户—美食商家评分矩阵进行填充,较好的缓解了评分矩阵的数据稀疏性问题,提高了基于传统协同过滤算法的推荐质量。

实施例2

下面结合具体的计算公式和实验数据对实施例1中的方案进一步的介绍,详见下文描述:

201:对从美国点评网站yelp中获得的用户行为数据,只选取美食商家及其用户的相关信息,如图1、图2所示;

建立用户—美食商家评分矩阵,如图3所示。

202:为每个用户构建用户的历史评分记录集合i(u),为每个商家构建商家的历史评分记录集合u(i);

构建用户集合u,统计每个用户的评分商家个数,按照用户评分商家个数从大到小对用户集合中的用户排序;

203:设置用户相似度阈值α和用户共同评分差均值阈值β;

204:选取目标项目,计算用户评分相似度,构建目标用户的预选相似邻居集;

(1)按用户在用户集合中顺序,取一个用户作为目标用户;

(2)采用pearson相关系数公式计算用户集合中其余各用户与目标用户u

的评分相似度,计算公式如下:

其中,simu,v表示用户u和用户v的相似度,iu,v为用户u和用户v的共同评分商家集合,rui、rvi分别为用户u、用户v对商家i的评分,分别为用户u、用户v的平均评分。

(3)选择与目标用户相似度大于阈值α的用户作为目标用户的预选相似邻居用户,构建目标用户的预选相似邻居用户集p_n(u);

205:构建目标用户最终的相似邻居用户集:

(1)计算预选相似邻居集中的用户与目标用户u的历史共同评分差均值,计算公式如下:

其中,i′u,v为目标用户u和用户v的历史共同评分商家集合,rui、rvi分别为用户u、用户v对商家i的评分。

(2)将预选邻居集中与目标用户的历史共同评分差均值小于阈值β的用户作为目标用户最终的邻居用户,构建目标用户最终的相似邻居用户集n(u)。

206:对用户—美食商家评分矩阵做第一步填充;

(1)利用相似邻居用户集计算目标用户u对未评分商家i的评分值,并对用

户—美食商家评分矩阵中的对应项进行填充,计算公式如下:

(2)完成对用户u的未评分商家的评分值填充后,反复从用户集合u中选取下一个用户作为目标用户,即重复执行步骤204-步骤206,实现根据用户集对用户—美食商家评分矩阵的动态填充。当用户评分集合u中的所有用户都被取到时,对用户—美食商家评分矩阵的第一步填充完毕。

207:对用户—美食商家评分矩阵剩下的未填充项进行第二步填充。

(1)对于第一步填充后得到的用户—美食商家评分矩阵,构建商家集合i,统计每个商家被评分的次数,并按照商家被评分次数从大到小对商家集合i排序;

(2)设置商家相似度阈值γ和商家历史共同评分差均值的阈值η;

(3)按商家在商家集合中的顺序,选取一个目标商家,利用pearson相关系数,计算商家与目标商家i的相似度,计算公式如下:

其中ui,j为同时对商家i和商家j都有评分的用户集合,rui为用户u对商家i的评分,ruj为用户u对商家j的评分,为商家i的平均得分,为商家j的平均得分。

选择与目标商家i的相似度大于γ的商家作为目标商家i的邻居商家,构建预选邻居商家集p_n(i)。

(4)构建目标商家最终的邻居商家集;

计算预选邻居商家集中的商家与目标商家的历史共同评分差均值,计算公式如下:

其中u′i,j表示在商家的历史评分记录中,对商家i和商家j同时都有评分的用户集合;|u′i,j|表示在商家的历史评分记录中,对商家i和商家j同时都有评分的用户个数;rui为用户u对商家i的评分;ruj为用户u对商家j的评分。

将共同评分差均值小于η的商家作为目标商家的邻居商家,构建最终目标商家的相似邻居商家集n(i)。

(5)对用户—美食商家评分矩阵做第二步的填充;

利用相似邻居商家集计算用户u对目标商家i未评分项的评分值,并用该值对用户—美食商家评分矩阵中的对应项进行填充,计算公式如下:

完成对当前目标商家i的未评分项的填充后,反复从商家集合中选取下一个商家作为目标商家,即重复执行步骤(3)、(4)、(5),实现根据商家集i对用户—美食商家评分矩阵的动态填充。当商家集i中的所有商家都被取到时,对用户—美食商家评分矩阵填充完毕。流程图如图4所示。

以上这些实施例应理解为仅用于说明本发明而不用于限制本发明的保护范围。在阅读了本发明的记载的内容之后,技术人员可以对本发明作各种改动或修改,这些等效变化和修饰同样落入本发明权利要求所限定的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1