处理超大量用户的协同过滤推荐方法

文档序号:7884274阅读:267来源:国知局
专利名称:处理超大量用户的协同过滤推荐方法
技术领域
本发明涉及一种协同过滤推荐方法,特别是一种处理超大量用户的协同过滤推荐方法,属于网络技术领域。
背景技术
互联网上的信息资源呈指数膨胀带来了所谓的“信息过载”和“信息迷向”问题,即人们很难找到自己感兴趣的信息,即使找到了一些,也经常混有很多“噪音”。因此出现了面向互联网的信息检索、信息过滤和协同过滤等技术。但信息检索不具有智能性,不能学习用户的兴趣,尤其是对具有特定专业兴趣的用户,输入相同的关键词只能得到相同的检索结果。信息过滤不能对同一主题的过滤结果区分质量好坏,并且随着信息资源的剧增,更有效的过滤需要结合人们的质量评价信息。协同过滤则考虑了用户的评价信息。协同过滤分析用户兴趣,在用户群中找到指定用户的相似(兴趣)用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度的预测。但目前基于用户的协同过滤方法是在已有的信息基础上寻找相似用户,每次预测都要计算所有用户之间相似度,而且随着用户数据库的增大,信息条目的增多,计算所有用户之间相似度资源消耗太大,实时性和可扩展性都很差。传统集中式的基于用户的协同过滤推荐算法对于M个用户和N个项目所需要的计算复杂度为O(M*M*N),当遭遇超大量的用户,比如M为百万数量级的时候,集中式的基于用户的协同过滤推荐算法因为计算复杂度太高而不能工作。
经文献检索发现,Stoca在“ChordA scalable peer-to-peer查询service for Internet applications(Chord一个适用于互联网应用的可伸缩对等查找服务)”(ACM SIGCOMM,San Diego,CA,USA,2001,pp.149-160《美国计算机协会数据通信专业组2001年年会会议集》,第149-160页)这篇文章中,提出了一个基于分布式哈希表的对等查找算法,对于N个对等节点构成的Chord网络,每个节点只需要跟踪logN个其它节点的信息,当一个对等体加入或者退出,只需要通知logN个其它对等节点改变其应用层路由表。这种分布式哈希表路由算法的好处是可伸缩性好,但目前这种方法主要用于分布式文件存取领域。

发明内容
本发明的目的在于针对现有技术存在的缺陷或不足,提供一种处理超大量用户的协同过滤推荐方法,使其解决传统集中式的基于用户的协同过滤推荐方法遭遇超大量的用户时的问题。
本发明是通过以下技术方案实现的,本发明首先把M个用户对于N个项目的评分数据分布式地存储,即每个用户存储自己对于N个项目的评分数据,然后通过分布式哈希表路获得相似用户的评分数据,在本地使用协同过滤方法得到预测值,再进一步得到推荐值,这样使得每个用户的计算复杂度降为O(M*N),提高了系统的可伸缩性,同时通过在该过程中限制每个项目从分布式哈希表覆盖网络返回相似用户的数目,并调整相似用户的影响力,使得具有越多项编号、评分相同二元组的用户,其影响力也相应越大。从而将方法复杂度进一步降为O(N*N),使其和用户的数量无关,进一步极大地提高了系统的可伸缩性,并且试验数据证明其还提高预测的准确度和推荐的质量。
以下对本发明方法作进一步的说明,方法步骤如下A、每个用户在计算机后台运行一个代理程序,构造一个分布式哈希表覆盖网络;B、代理把用户对于某个项目的评分所构成的<ITEM_ID,VOTE>(即<项编号,评分>)二元组哈希到整个分布式哈希表覆盖网络;C、代理对于用户的每个<项编号,评分>二元组,从分布式哈希表覆盖网络中获取与之相似的用户(认为拥有相同<项编号,评分>二元组的用户可能相似);D、代理对于取回来的相似用户的用户评分数据,在本地使用协同过滤方法得到预测值,从中产生对用户的推荐。
●所述的步骤A,具体如下A1、用户激活本地代理程序,让它一直在后台运行;A2、代理程序通过哈希用户名得到一个哈希值Klocal(即本地哈希值)用来唯一标志自己;A3、所有的代理通过哈希值构造出分布式哈希值路由表,从而与其他代理互联,构造出分布式哈希表覆盖网络;
●所述的步骤B,当构造好分布式哈希表覆盖网络后,具体如下B1、用户的代理程序通过哈希用户的每个<项编号,评分>二元组,得到其哈希值K;B2、对于每个哈希值K,构造携带哈希值K的“PUT消息”(即“推送消息”)并把它转发给与K最相似的邻居(“最相似”在这儿意味着K与邻居的哈希值Klocal的N位前缀最相近);B3、当一个代理收到其他邻居路由过来的“推送消息”,首先把消息中的用户评分数据和哈希值K放在本地缓冲里,然后如果自己不是和这个“推送消息”所携带的哈希值K最相似的邻居,就把这个“推送消息”转发给与其所携带的哈希值K最相似的邻居。
●所述的步骤C,具体如下C1、用户的代理程序通过哈希用户的每个<项编号,评分>二元组,得到其哈希值K;C2、对于每个哈希值K,构造携带哈希值K的“LOOKUP消息“(即“查询消息”)并把它转发给与K最相似的邻居;C3、当一个代理收到其他邻居路由过来的“查询消息”,首先检查自己的本地缓冲区里面是否有F个含哈希值K的用户评分数据(F是个常数,比如说等于5)。如果有,则把这F个用户及其评分数据返回给“查询消息”的发送者,沿途所经过的所有代理都把这F个用户的评分数据放在本地缓冲区里。如果没有,则继续把这个“查询消息”转发给与其所携带的哈希值K最相似的邻居;C4、不管怎么样,“查询消息”的发送者最终会得到某个代理返回的相似用户的评分数据;C5、代理汇集所有<项编号,评分>二元组得到的相似用户的评分数据,在本地得到一个相似用户评分数据集。
●所述的步骤D,在本地得到一个相似用户评分数据集后,具体如下D1、使用相关相似性或者余弦相似性方法得到本地的用户评分数据集;D2、从得到的相似性中选择最相似的N个用户(N是个常数,比如等于100);D3、根据这N个用户的相似性通过均值背离方法得到预测值,如果预测值超过某个阀值,则向用户推荐之。
本发明为了得到进一步得到更好的协同过滤推荐质量,提出了两种改进
1)限制分布式哈希表覆盖网络对于每个<项编号,评分>二元组返回相似用户的数目,实验测试数据表明,对于每个<项编号,评分>二元组最多返回5个相似用户可以得到比较好的推荐质量。而且这种方法可以把返回用户的总数从0(N)下降为0(1)数量级,N代表全部用户的总数。
2)在从分布式哈希表覆盖网络得到相似用户的评分数据之后,采用公式(1)来加倍“高相关用户”的相似度权值,降低“低相关”用户的相似度权值,试验测试数据表明这样能够很大程度地得到更好的推荐质量。
这里wa,i和wa,i′分别表示调整前和调整后的相似度权值,Na,i表示用户a和用户i有相同评分的项的数目。系数α,β和γ可以根据不同的试验环境来调节,在实际测试中系数α取为2.0,β取为4.0,γ取为4,得到的推荐质量提高了7.6%。
本发明与现有技术相比,把分布式哈希表路由方法引入协同过滤系统,并做了改进,解决了现有的集中式协同过滤系统固有的可扩展性差的问题,并提高了推荐质量,从而解决了超大量的用户问题。本发明方法的核心是使用改进的分布式哈希表路由方法来有效地找到相似用户并取回其评分数据,在本地运用协同过滤算法计算得到预测值,并产生推荐值。因为改进的分布式哈希表路返回的相似用户的相似度很高,去除了很多噪音用户评分数据,所以协同过滤推荐的质量也好于传统的方法。


图1为本发明方法的数据存取和转发示意2为本发明基于分布式哈希表的协同过滤方法流程3为本发明基于分布式哈希表的协同过滤推送方法流程4为本发明基于分布式哈希表的协同过滤查询方法流程图具体实施方式
以下结合附图对本发明方法的实施方式进一步的详细描述。
如图1所示,本发明的数据存取和转发示意图,每个用户代理在本地保存两份数据,一份是用户自己的评分数据,另一份是缓冲的其他用户的评分数据。用户与用户之间通过分布式哈希表覆盖网络相连,路由方法根据消息所附带的哈希值K,找到与之最相似的邻居,并把这个消息转发给这个邻居。
整个分布式哈希表的协同过滤方法的流程如图2所示,具体如下A、每个用户在计算机后台运行一个代理程序,构造一个分布式哈希表覆盖网络;B、代理把用户对于某个项目的评分所构成的<项编号,评分>二元组哈希到整个分布式哈希表覆盖网络;C、代理对于用户的每个<项编号,评分>二元组,从分布式哈希表覆盖网络中获取与之相似的用户(认为拥有相同<项编号,评分>二元组的用户可能相似);D、代理对于取回来的相似用户的用户评分数据,在本地使用协同过滤方法得到预测值,从中产生对用户的推荐。
如图3所示,步骤A的方法流程具体如下A1、用户激活本地代理程序,让它一直在后台运行;A2、代理程序通过哈希用户名得到一个本地哈希值用来唯一标志自己;A3、所有的代理通过哈希值构造出分布式哈希值路由表,从而与其他代理互联,构造出分布式哈希表覆盖网络;如图3所示,当构造好分布式哈希表覆盖网络后,步骤B的方法流程具体如下B1、用户的代理程序通过哈希用户的每个<项编号,评分>二元组,得到其哈希值K;B2、对于每个哈希值K,构造携带哈希值K的“推送消息”并把它转发给与K最相似的邻居;B3、当一个代理收到其他邻居路由过来的“推送消息”,首先把消息中的用户评分数据和哈希值K放在本地缓冲里,然后如果自己不是和这个“推送消息”所携带的哈希值K最相似的邻居,就把这个“推送消息”转发给与其所携带的哈希值K最相似的邻居。
如图4所示,步骤C的查询方法流程具体如下C1、用户的代理程序通过哈希用户的每个<项编号,评分>二元组,得到其哈希值K;
C2、对于每个哈希值K,构造“查询消息”(携带哈希值K)并把它转发给与K最相似的邻居;C3、当一个代理收到其他邻居路由过来的“查询消息”,首先检查自己的本地缓冲区里面是否有F个含哈希值K的用户评分数据(F是个常数,比如说等于5)。如果有,则把这F个用户及其评分数据返回给“查询消息”的发送者,沿途所经过的所有代理都把这F个用户的评分数据放在本地缓冲区里。如果没有,则继续把这个“查询消息”转发给与其所携带的哈希值K最相似的邻居;C4、“查询消息”的发送者得到在缓冲中成功命中的代理返回的相似用户的评分数据;C5、代理汇集所有<项编号,评分>二元组得到的相似用户的评分数据,在本地得到一个相似用户的评分数据集。
步骤C是整个系统的核心部分,它的目标是在分布式协同过滤推荐方法里面有效地找到相似用户,并取回相似用户的评分数据。其有效性和可扩展性体现在分布式哈希表覆盖网络的中间转发节点缓存了很多用户的评分数据,通过很少的几次转发就能找到具有相同<项编号,评分>二元组的相似用户,并把它返回。比如说一个用户的本地哈希值为123456,对于某个<项编号,评分>二元组的哈希值为654321,最坏情况下需要6步才能把“查询消息”路由给负责哈希值为654321的节点,假设中间经过节点的本地哈希值分别为698765,659823,654987,654398,654329。但由于缓冲区的存在,可能在“查询消息”被路由到第2个节点,其本地哈希值为659823,就成功查询到相同<项编号,评分>二元组的相似用户,返回了。
步骤D,在本地得到一个相似用户评分数据集后,具体如下D1、使用相关相似性或者余弦相似性方法来得到本地的用户评分数据集;D2、从得到的相似性中选择最相似常数个用户;D3、根据这常数个用户的相似性通过均值背离方法得到预测值,如果预测值超过平均值,则向用户推荐之。
步骤D可以使用传统的协同过滤方法来产生预测值和推荐值。为了得到更高的推荐精度,采用公式(1)来加倍“高相关用户”的相似度权值,降低“低相关”用户的相似度权值。比如说用户P对于三个相似用户A,B,C按照相关相似性或者余弦相似性方法得到了相同的相似度权值,都为0.2,但A和P没有评分相同的项,B和P有1项评分相同的项,C和P有5项评分相同的项,按照实验测试中系数α取为2.0,β取为4.0,γ取为4,A的相似度权值不变,还是为0.2,B的相似度权值变为0.4,C的相似度权值变为0.8。从中可以看出,相同评分的项数越多,其相似度就应该越高,因此大大增加其相似度权值。实验测试数据表明这样确实能提高预测的准确度和推荐的质量。
权利要求
1.一种处理超大量用户的协同过滤推荐方法,其特征在于,首先把用户对于项目的评分数据分布式地存储,即每个用户存储自己对于项目的评分数据,然后通过分布式哈希表路获得相似用户的评分数据,在本地使用协同过滤方法得到预测值,再进一步得到推荐值,同时通过在该过程中限制每个项目从分布式哈希表覆盖网络返回相似用户的数目,并调整相似用户的影响力,使得具有越多项编号、评分相同二元组的用户,其影响力也相应越大,从而提高预测的准确性。
2.根据权利要求1所述的处理超大量用户的协同过滤推荐方法,其特征是,方法步骤如下A、每个用户在计算机后台运行一个代理程序,构造一个分布式哈希表覆盖网络;B、代理把用户对于某个项目的评分所构成的项编号、评分二元组哈希到整个分布式哈希表覆盖网络;C、代理对于用户的每个项编号、评分二元组,从分布式哈希表覆盖网络中获取与之相似的用户;D、代理对于取回来的相似用户的用户评分数据,在本地使用协同过滤方法得到预测值,从中产生对用户的推荐。
3.根据权利要求2所述的处理超大量用户的协同过滤推荐方法,其特征是,所述的步骤A,具体如下A1、用户激活本地代理程序,让它一直在后台运行;A2、代理程序通过哈希用户名得到一个本地哈希值用来唯一标志自己;A3、所有的代理通过哈希值构造出分布式哈希值路由表,从而与其他代理互联,构造出分布式哈希表覆盖网络。
4.根据权利要求2所述的处理超大量用户的协同过滤推荐方法,其特征是,所述的步骤B,当构造好分布式哈希表覆盖网络后,具体如下B1、用户代理程序通过哈希用户的每个项编号、评分二元组,得到其哈希值K;B2、对于每个哈希值K,构造携带哈希值K的推送消息并把它转发给与K最相似的邻居;B3、当一个代理收到其他邻居路由过来的推送消息,首先把消息中的用户评分数据和哈希值K放在本地缓冲里,然后如果存在和该推送消息所携带的哈希值K更相似的邻居,就把该推送消息转发给与其所携带的哈希值K最相似的邻居。
5.根据权利要求2所述的处理超大量用户的协同过滤推荐方法,其特征是,所述的步骤C,具体如下C1、用户代理程序通过哈希用户的每个项编号、评分二元组,得到其哈希值K;C2、对于每个哈希值K,构造携带哈希值K的查询消息并把它转发给与K最相似的邻居;C3、当一个代理收到其他邻居路由过来的查询消息,首先检查自己的本地缓冲区里面是否有F个含哈希值K的用户评分数据,如果有,则把这F个用户及其评分数据返回给查询消息的发送者,沿途所经过的所有代理都把这F个用户的评分数据放在本地缓冲区里,否则则继续把该查询消息转发给与其所携带的哈希值K最相似的邻居;C4、查询消息的发送者最终会得到某个代理返回的相似用户的评分数据;C5、代理汇集所有项编号、评分二元组得到的相似用户的评分数据,在本地得到一个相似用户评分数据集。
6.根据权利要求2所述的处理超大量用户的协同过滤推荐方法,其特征是,所述的步骤D,在本地得到相似用户评分数据集后,具体如下D1、使用相关相似性或者余弦相似性方法得到本地的用户评分数据集;D2、从得到的相似性中选择最相似的N个用户;D3、根据这N个用户的相似性通过均值背离方法得到预测值,如果预测值超过某个阀值,则向用户推荐之。
全文摘要
一种处理超大量用户的协同过滤推荐方法,属于网络技术领域。方法如下首先把用户对于项目的评分数据分布式地存储,即每个用户存储自己对于项目的评分数据,然后通过分布式哈希表路获得相似用户的评分数据,在本地使用协同过滤方法得到预测值,再进一步得到推荐值,同时在该过程中限制每个项目从分布式哈希表覆盖网络返回相似用户的数目,并调整相似用户的影响力,使得具有越多相同项编号、评分二元组的用户,其影响力也相应越大,从而提高预测的准确性。本发明把分布式哈希表路由算法引入协同过滤系统,并做了改进,解决了现有的集中式协同过滤系统固有的可扩展性差的问题,并提高了推荐质量。
文档编号H04L12/16GK1547351SQ20031010906
公开日2004年11月17日 申请日期2003年12月4日 优先权日2003年12月4日
发明者申瑞民, 谢波, 韩鹏, 杨帆 申请人:上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1