1.一种基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,包括以下步骤:步骤1、对用户行为数据进行预处理,选取与美食商家及美食用户相关的信息,得到用户—美食商家评分矩阵;
步骤2、利用建立的用户—美食商家评分矩阵,为每个用户和每个美食商家构建历史评分记录集合,同时构建用户集合,按照用户的评分商家数从大到小对用户集合中的用户排序;
步骤3、设置用户相似度阈值α和用户历史共同评分差均值阈值β;
步骤4、按用户在用户集合中的顺序,选取一个目标用户;根据用户—美食商家评分矩阵,计算其余用户与目标用户的相似度;选取与目标用户相似度大于α的用户构建目标用户的预选相似邻居用户集;
步骤5、计算目标用户与各预选相似邻居用户的历史共同评分差均值,若两个用户历史本身没有共同评分商家,则他们的共同评分差均值为+∞;选取共同评分差均值小于β的预选邻居用户构造最终的相似邻居用户集;
步骤6、利用目标用户的相似邻居用户集对用户—美食商家评分矩阵进行第一步填充;
步骤7、对评分矩阵中剩下的未填充数据,同样采用相似度阈值法和共同评分差均值来选取最相似商家,并利用相似商家集来对用户—美食商家评分矩阵进行第二步填充。
2.根据权利要求1所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述步骤1中的用户行为数据预处理过程如下:步骤1.1:对从点评网站中获得用户行为数据,只选取美食商家及其用户的相关信息;
步骤1.2:建立用户—美食商家评分矩阵,(1)从总的数据中筛选出与美食商家及美食用户相关的信息;(2)用这些信息来建立用户—美食商家评分矩阵。
3.根据权利要求1所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述步骤2具体过程如下:步骤2.1:为每个用户构建用户的历史评分记录集合;为每个商家构建商家的历史评分记录集合;
步骤2.2:构建用户集合,统计每个用户的评分商家个数,按照用户评分商家个数从大到小对用户集合中的用户排序。
4.根据权利要求1所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述步骤4中构建目标用户的预选相似邻居用户集过程如下:步骤4.1:按用户在用户集合中的顺序,取一个用户作为目标用户;
步骤4.2:利用用户—美食商家评分矩阵,通过Pearson皮尔逊相关系数公式来计算其余用户与目标用户的相似度;步骤4.3:选取与目标用户相似度大于α的用户构建目标用户的预选相似邻居用户集p_N(u)。
5.根据权利要求4所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述Pearson皮尔逊相关系数计算公式如下:其中,simu,v表示用户u和用户v的相似度,Iu,v为用户u和用户v的共同评分商家集合,Rui、Rvi分别为用户u、用户v对商家i的评分, 分别为用户u、用户v的平均评分。
6.根据权利要求1所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述步骤5中的最终相似邻居集的选取过程如下:步骤5.1:计算目标用户与各选预相似邻居用户的历史共同评分差均值,计算公式如下:其中,avg(u,v)为用户u和用户v的历史共同评分差均值,I′u,v为目标用户u和用户v的历史共同评分商家集合,Rui、Rvi分别为用户u、用户v对商家i的评分;
步骤5.2:选取共同评分差均值小于β的预选邻居用户构造最终的相似邻居用户集N(u)。
7.根据权利要求1所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述步骤6的利用相似邻居用户集N(u)对稀疏的用户—美食商家评分矩阵进行评分数据填充过程如下:步骤6.1:利用相似邻居用户集对目标用户的未评分项进行填充;
步骤6.2:反复选取用户集合中下一个用户作为目标用户,对评分矩阵进行填充,即重复执行步骤4-步骤6,其中每次用于填充和计算用户相似度的用户—美食商家评分矩阵都是对上一个用户填充完成后的矩阵。直到取完用户集合中的所有用户为止,第一步填充完毕。
8.根据权利要求7所述的基于分步动态填充缓解推荐系统数据稀疏性的方法,其特征在于,所述步骤7对评分矩阵中剩下的未填充数据,采用类似的方法,利用相似商家集来对用户—美食商家评分矩阵进行填充,填充过程如下:步骤7.1:对于第一步填充后得到的用户—美食商家评分矩阵,构建商家集合I,统计每个商家被评分的次数,并按照商家被评分次数从大到小对商家集合排序;
步骤7.2:设置商家相似度阈值γ和商家历史共同评分差均值的阈值η;
步骤7.3:按商家在商家集合中的顺序,取一个目标商家,利用Pearson相关系数,计算其余商家与目标商家的相似度;将相似度大于γ的商家作为目标商家的预选邻居商家,构建预选邻居商家集p_N(i);
步骤7.4:计算预选邻居集中的商家与目标商家历史被相同用户评分的共同评分差均值,若两个商家历史没有被同一用户评分,则商家的共同评分差均值为+∞;将共同评分差均值小于η的商家作为目标商家的邻居商家,构建邻居商家集N(i);
步骤7.5:利用邻居商家集对评分矩阵中目标商家未评分数据进行填充,反复选取商家集合中的下一个商家,即重复执行步骤7.3-步骤7.5,其中每次用于相似度计算和填充的用户—美食商家评分矩阵都是对上一个商家填充完成后的矩阵。直到取到商家集合中的所有商家为止,用户—美食商家评分矩阵填充完毕。