一种大规模协同过滤的推荐系统的制作方法

文档序号:6368599阅读:143来源:国知局
专利名称:一种大规模协同过滤的推荐系统的制作方法
技术领域
本发明涉及的是一种网络技术领域的系统,具体地说,涉及的是一种大规模协同过滤的推荐系统。
背景技术
推荐系统是一种致力于从用户的浏览记录或者购买行为中推荐相似产品,刺激用户购买或使用推荐产品的系统。推荐系统不仅大大地提高了用户的体验,也极大地推动了电子商务和互联网的持续繁荣。传统的推荐系统多是基于两种协同过滤的推荐方法来实现推荐的。一种基于记忆的方法,推荐时需要在全局的用户项目数据库上搜索以发现最相似的用户或者项目,常用的方法是最近邻或期望最大化方法;另外一种是基于模型的方法,推荐时主要是先从历史数据中学习用户的偏好模型,进而利用这一模型来推荐。然而,协同过滤中的两大基本问题数据稀疏性和扩展性严重约束了基于记忆和模型方法的性能。根据统计,在现有的在线商业推荐系统中,数据稀疏性甚至高于99%,表示用户可能购买或浏览或评价的项目相对于整个推荐系统中所有的项目时是非常的少。用户评分数据的高度稀疏性严重影响了基于模型的协同过滤方法的准确率,因为这类方法往往难以找到合适的模型来揭示用户偏好的模型,虽然他们通过模型的学习,提高了程序的可扩展性。另外一方面,基于记忆的协同过滤方法则因为在大规模的用户项目数据库中查找和确认与活跃用户或项目相关的最近邻而颇为耗时。考虑到推荐系统不断增长的用户和项目数量(如数百亿的数据),基于记忆的方法一般难以在实际推荐系统中使用。现在技术中很少有关于将在全局用户项目数据库的协同过滤问题映射到局域用户项目数据库的协同过滤的研究,大部分已有的工作主要集中于提高用户或者项目相似度的准确度,或者集中于最相似的用户或项目的选择,而缺少全局性得对准确度和可扩展性的综合考虑。而且这种系统的不足在于1.没有考虑相似用户对相似项目的评价,其实这部分评价有助于提高预测的准确度;2.该系统的相似项目及评分数据均是在全局用户项目数据库上查找和确认,这步操作是较为耗时的。因此,无论推荐的准确性还是基于这种方法的推荐系统的扩展性都是可以做进一步的提高。

发明内容
本发明的目的在于克服现有技术中的不足,提供一种大规模协同过滤的推荐系统。本发明通过寻找最相似的用户和项目动态构建局域用户项目数据库,从而将在全局用户项目数据库的协同过滤问题映射成为在一般的局域用户项目数据库上的协同过滤问题,实现了一种快速准确且极具扩展性的协同过滤推荐系统。本发明是通过以下技术方案实现的一种大规模协同过滤的推荐系统,包括全局项目相似度创建模块、用户评分平滑模块、局域用户项目数据库创建模块和推荐模块,其中所述的全局项目相似度创建模块,将全局用户项目数据库中的所有项目作为输入,计算任意两个项目间的相似度,并将结果降序排列后输出全局项目相似度的矩阵;所述的用户评分平滑模块,将全局用户项目数据库中的所有用户作为输入,输出平滑过用户评分的全局用户项目数据库,即对于组中活跃用户未评分的每个项目,根据该组中已经评分过该项目的用户的评分的差异性,来平滑活跃用户对该项目的评分;所述的局域用户项目数据库创建模块,负责从输入的全局用户项目数据库中选择部分用户和项目,输出局域用户项目数据库;所述的推荐模块,从局域用户项目数据库的输入中输出推荐系统对当前用户的推荐结果。本发明上述模块中,全局项目相似度创建模块和用户评分平滑模块均是推荐系统在离线阶段完成的,为在线阶段的推荐准备数据,所述局域用户项目数据库创建模块和推荐模块是在线阶段完成的,实时预测用户对项目的评分,并向用户推荐相似项目。
所述的全局项目相似度创建模块使用相似度函数来计算任意两个项目之间的相似度,相似度函数的计算方法是先找出同时已评价过这两个项目的所有用户,计算出每个用户对这两个项目各自的评分与其平均评分的差值,称之为项差;把所有用户对两个项目的项差相乘后累加在一起,称之为项差和;再把这些用户对两个项目各自的项差和平方后开方相乘在一起,再用上述计算出的项差和来除。所述的用户评分平滑模块通过以下步骤完成首先使用最近邻或者期望最大化方法划分为不同的用户组;接着对于组中的每个项目,计算该组中所有已经评价过该项目的用户的评分与该用户平均评分差的和与该组中所有已经评过该项目的用户总数的商,记为项评差;然后,对于该组中的各个用户,平滑其所有没有评分的记录,即对任何该用户没有评分的记录,赋予该用户的平均评分与该组对该项目的项评差的和;最后对于每个用户,计算其与各个组之间的相似度大小来构造输出其所对应的与组关系远近的列表,即组列表。所述的局域用户项目数据库创建模块通过以下步骤完成根据推荐系统在线的实时请求,确定活跃用户和项目,并从全局项目相似度创建模块输出的结果中选择与当前项目最相似的若干个项目组成的群体,从活跃用户相关的组列表中根据各组的先后关系,依次选择直到得到达到指定个数的最相似的一批用户,根据这批用户和这若干个项目,构造了局域用户项目数据库,接着从全局用户项目数据库中选择个数相同的用户对该项目群体的评分,添加到局域用户项目数据库中。所述的推荐模块,输入局域用户项目数据库,首先计算活跃用户对与项目相似的项目评分、与活跃用户相似的用户对同一项目的评分及与项目相似的项目的评分,接着,根据融合函数来融合得到的上述三部分的评分,并把这个评分反馈给推荐系统,这样用户就对活跃项目有了评分,然后,对于活跃用户所有未评分的项目进行预测,重复上述过程来构造局域用户项目数据库,最后,推荐模块从活跃用户对所有相似项目的评分中挑选评分最高的前多项作为推荐结果输出。本发明能够将在全局用户项目数据库的协同过滤问题映射成在局域用户项目数据库上的协同过滤问题,大大地降低了问题的规模,相比于已有的推荐系统,具有以下特
占·
^ \\\ ·I.本发明能够达到非常高的预测准确率。本发明通过分别查找与活跃用户和活跃项目最相近的用户和项目及其相关评分动态构建局域用户项目数据库。本发明通过在预测前平滑用户评分来有效地消除了用户评分的多样性;在最后的预测时,本发明线性地融合了局域用户项目数据库上三种来源的评分,有效地消除了数据稀疏性带来的影响。2.本发明具有良好的扩展性。无论推荐系统全局用户项目数据库有多大规模,本发明最后形成的局域用户项目数据库,是甚至少于全局用户项目数据库的十万分之一。即使推荐系统的用户和项目数量的不断增加,本发明用于构建局域用户项目数据库的最相近用户和项目数量接近于线性增长,大大降低了协同过滤问题的规模,说明本发明具有良好的扩展性。


图I为本发明的推荐系统结构图。
具体实施方式
下面结合附图对本发明的实施例作详细说明本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。如图I所示,本实施例包括全局项目相似度创建模块、用户评分平滑模块、局域用户项目数据库创建模块和推荐模块。其中前两个模块在离线阶段完成,后两个模块则是在在线阶段完成。所述的全局项目相似度创建模块,将全局用户项目数据库中的所有项目作为输入,计算所有项目间的相似度,并降序排列后输出结果,其中全局用户项目数据库是指定的若干个用户对指定的一批项目的评分组成的数据库;所述的用户评分平滑模块,是指将全局用户项目数据库中的所有用户作为输入,先根据用户的评分历史划分成不同的组。接着,对于划分组中的任何一个项目,计算已经评价过此项目的用户的评分与其平均评分之差的和除以该组中所有已经评价此项目的用户总数,得到项评差。然后对于用户未评价的项目进行平滑评分,即对于用户已经评分过的项目,保持用户原有的评分,对于用户未评分的项目,则赋予该用户对其已经评分过的项目的评分的平均值和项评差的和。最后,对于每个用户,计算其与各个组之间的相似度,根据其大小创建组列表。所述的局域用户项目数据库创建模块,负责从输入的全局用户项目数据库中选择部分若干个用户和一批指定项目,输出局域用户项目数据库,其中局域用户项目数据库指定的若干个用户对指定的一批项目的评分组成的数据库。所述的推荐模块,从局域用户项目数据库的输入中输出推荐系统对当前用户的推荐结果。本实施例采用的数据集来源于美国University of Minnesota的GroupLens研究中心提供的MovieLens数据集(http://www. grouplens. org)。该数据集含有943个用户对1682个电影的100,000个评分,数据的稀疏性达到93. 7%0从数据集中任意选择800个用户,1500个项目,并且要求每个用户至少评价40个项目,这样构成了 800 X 1500的全局用户项目数据库,共有47198个评分,数据的稀疏度达到96.07%。然后,分别选择100,200,直到600个用户作为训练集Tl,T2到T6,最后的400个用户的记录作为测试集。同时,选择用户评价项目的前20,40和50个记为Given20,Given40和Given50。整个系统运行在2. 4GHz主频,,IGB内存,80GB硬盘,使用Windows XP(SP2)系统的机器上。本实施例中,所述的全局项目相似度的创建模块,将全局用户项目数据库中的每个项目作为输入,使用Pearson相似度函数来计算任意两个项目间的相似度,并将结果依降序排列,最后输出全局项目相似度的矩阵。两个项目间的Pearson相似度函数的计算方法是先找出同时已评价过这两个项目的所有用户,计算出每个用户对这两个项目各自的评分与其平均评分的差值,称之为项差;把所有用户对两个项目的项差相乘后累加在一起,称之为项差和;再把这些用户对两个项目各自的项差和平方后开方相乘在一起,再用上述计算出的项差和来除即可。本实施例中,所述的用户评分平滑模块,是从本地用户项目的数据库中所有用户的输入中,输出经过用户评分平滑的本地用户项目数据库。本模块通过以下步骤来完成
I.首先,输入本地用户项目数据库中的所有用户,任意选择若干个用户作为该批用户唯一的组中心,依据Pearson相似度函数来计算各个用户与各个组中心的相似度,选择相似度最大的(离当前用户最近的)组并加入这个组;再针对每一个组,计算新的组中心,产生新的相同个数的组中心,重复上一步,直到无法再产生新的组中心为止。2.接着,对于各个组的每个项目,计算该组中所有已经评价过该项目的每个用户对项目的评分与其平均评分之差的总和,再除以组中已经评过项目的用户数,得到簇项差。接着,针对活跃用户平滑其所有没有评分的记录,即对活跃用户对某个项目没有评分的记录,赋予该用户的平均评分与簇项差的和。簇项差的计算方法是用项目组中所有已评价过项目的用户的项评差之和除以已评价过项目的人数。最后对每个用户,计算其与各个组之间的相似度,依降序存储为组列表。每个活跃用户与组的相似度计算方法为先找出活跃用户已经评分的项目与组中所有用户评分项目的交集群,在该交集群中,计算出活跃用户与每个项目的簇项差与项差的乘积累加和,再计算出活跃用户与每个项目的簇项差的平方开平方后与活跃用户与每个项目的项差的平方开平方后的乘积,最后用之前计算出的累加和来除以该乘积即可得出。本实施例中,所述的局域用户项目数据库的创建模块,根据预测请求,确定活跃用户和活跃项目,输入全局项目相似度矩阵,输出局域用户项目数据库。具体来说,本模块通过两个步骤完成I.局域用户项目数据库的创建模块从全局项目相似度矩阵中选择与活跃项目最相似的若干个项目;从活跃用户的组列表中依据组的先后顺序选择指定数目的相似用户。2.根据指定的用户和若干个项目,从全局用户项目数据库中选择这些用户对这些项目的评分记录,添加到局域用户项目数据库中。针对MovieLens数据集,本发指定了 30个用户和80个项目,这样局域用户项目数据库只有2400个评分数据,大大降低了用于预测的用户项目数据库的大小。本实施例中,所述的推荐模块,负责从输入局域用户项目数据库中向用户推荐相似的项目。本模块包括以下三个步骤I.首先,针对局域用户项目数据库,计算活跃用户对与活跃项目相似的项目的评分,与活跃用户相似的用户对活跃项目及其相似项目的评分。2.接着,使用F函数来融合这三部分评分,接着对于活跃用户所有未评分项目,重复上两个步骤(构造局域用户项目数据库及计算三个部分的评分并融合)。3.最后,推荐系统从对活跃用户已经预测评分的所有项目中,选择前十个评分最高的项目作为推荐结果,返回给用户。本发明使用的三种评分计算方法分别如下①活跃用户对与活跃项目相似的项目的评分先计算所有相似的活跃用户对与活跃项目相似的项目的评分与其评分平滑参数的乘积的累加和,再除以所有相似活跃用户的评分平滑参数与该活跃项目相似的项目间的Pearson相似度的累加和即可。②与活跃用户相似的用户对活跃项目的评分对于选择出的所有与活跃项目相似的项目,计算出每个项目与活跃项目的Pearson相似度与其项目差的乘积再乘以评分平滑参数,把所有项目的乘积累加在一起;再除以所有与活跃项目相似的项目的评分平滑参数与活跃项目的Pearson相似度的乘积;最后再加上活跃用户对活跃项目的平均评分即可。
③与活跃用户相似的用户对与活跃项目相似的项目的评分计算出每个与活跃用户相似的用户的评分平滑参数与该用户与活跃用户的Pearson相似度再乘以该相似用户对活跃项目的评分,把所有相似用户的乘积累加在一起;再除以所有与活跃用户相似的用户的评分平滑参数与该用户与活跃用户的Pearson相似度的乘积的累加和即可。结果显示,本实施例的平均准确率约为80%。而且,随着训练集和测试集的不断增长,本发明系统构造的局域用户项目数据库呈线性增长,说明本发明系统的扩展性优越。
权利要求
1.一种大规模协同过滤的推荐系统,其特征在于,该系统包括全局项目相似度创建模块、用户评分平滑模块、局域用户项目数据库创建模块和推荐模块,其中 所述的全局项目相似度创建模块,将全局用户项目数据库中的所有项目作为输入,计算任意两个项目间的相似度,并将结果降序排列后输出全局项目相似度的矩阵; 所述的用户评分平滑模块,将全局用户项目数据库中的所有用户作为输入,输出平滑过用户评分的全局用户项目数据库,即对于组中活跃用户未评分的每个项目,根据该组中已经评分过该项目的用户的评分的差异性,来平滑活跃用户对该项目的评分; 所述的局域用户项目数据库创建模块,负责从输入的全局用户项目数据库中选择部分用户和项目,输出局域用户项目数据库; 所述的推荐模块,从局域用户项目数据库的输入中输出推荐系统对当前用户的推荐结果。
2.根据权利要求I所述的一种大规模协同过滤的推荐系统,其特征是,所述全局项目相似度创建模块和用户评分平滑模块均是推荐系统在离线阶段完成的,为在线阶段的推荐准备数据,所述局域用户项目数据库创建模块和推荐模块是在线阶段完成的,实时预测用户对项目的评分,并向用户推荐相似项目。
3.根据权利要求I或2所述的一种大规模协同过滤的推荐系统,其特征是,所述的全局项目相似度创建模块使用相似度函数来计算任意两个项目之间的相似度,所述相似度函数的计算方法是先找出同时已评价过这两个项目的所有用户,计算出每个用户对这两个项目各自的评分与其平均评分的差值,称之为项差;把所有用户对两个项目的项差相乘后累加在一起,称之为项差和;再把这些用户对两个项目各自的项差和平方后开方相乘在一起,再用上述计算出的项差和来除。
4.根据权利要求I或2所述的一种大规模协同过滤的推荐系统,其特征是,所述的用户评分平滑模块通过以下步骤完成首先利用最近邻或者期望最大化方法将全局用户项目数据库中的所有项目,根据评分纪录,划分为不同的组;接着,对于组中的每个活跃项目,计算该组中所有已经评价过该活跃项目的用户的评分与该用户平均评分差的和与该组中所有已经评过项目的用户数的商,得到项评差;然后,对于该组中的各个用户,平滑其所有没有评分的记录,即对该用户没有评分的记录,赋予该用户的平均评分与该组对该项目的簇项差的和;最后,对于每个用户,计算其与各个组之间的相似度大小来构造输出其所对应的用户与组的关系远近列表,即组列表。
5.根据权利要求I或2所述的一种大规模协同过滤的推荐系统,其特征是,所述的局域用户项目数据库创建模块通过以下步骤完成根据推荐系统在线的实时请求,确定活跃用户和项目,并从全局项目相似度创建模块输出的结果中选择与当前项目最相似的若干个项目组成的群体,从活跃用户相关的组列表中根据各组的先后关系,依次选择直到得到达到指定个数的最相似的一批用户,根据这批用户和这若干个项目,构造局域用户项目数据库,接着从全局用户项目数据库中选择指定个数的用户对这若干个项目的评分,添加到局域用户项目数据库中。
6.根据权利要求I或2所述的一种大规模协同过滤的推荐系统,其特征是,所述的推荐模块通过以下步骤完成首先计算活跃用户对与项目相似的项目评分、与活跃用户相似的用户对同一项目的评分及与项目相似的项目的评分,接着,根据融合函数来融合得到的上述三部分的评分,并把这个评分反馈给推荐系统,这样用户就对活跃项目有了评分,然后,对于活跃用户所有未评分的项目进行预测,重复上述过程来构造局域用户项目数据库,最后,推荐模块从活跃用户对所有相似项目的评分中挑选评分最高的前多项作为推荐结果输 出。
全文摘要
本发明公开了一种大规模协同过滤的推荐系统,其中全局项目相似度创建模块将全局用户项目数据库中的所有项目作为输入,计算所有项目间的相似度,并降序排列后输出结果;用户评分平滑模块把全局用户项目数据库中的所有用户作为输入,输出平滑过用户评分的全局用户项目数据库;局域用户项目数据库创建模块负责从输入的全局用户项目数据库中选择部分用户和项目,输出局域用户项目数据库;推荐模块从局域用户项目数据库的输入中输出对当前用户的推荐结果。本发明系统通过将在全局用户项目数据库上的协同过滤问题转化为在局域用户项目数据库上的协同过滤,大大地降低了用于预测的用户项目数据库的大小,显著地提高了推荐结果的准确性。
文档编号G06F17/30GK102663128SQ20121012354
公开日2012年9月12日 申请日期2012年4月24日 优先权日2012年4月24日
发明者刘清, 吉根林, 张大强, 徐玉杰, 杨明 申请人:南京师范大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1