基于单源SimRank的协同过滤推荐方法与流程

文档序号:18797345发布日期:2019-09-29 19:53阅读:249来源:国知局
基于单源SimRank的协同过滤推荐方法与流程

本发明是关于协同过滤推荐,特别是关于一种基于单源simrank的协同过滤推荐方法。



背景技术:

推荐系统作为电子商务、社交网络分析、个性化广告投放、用户兴趣推荐等多个领域的核心技术,在互联网发展的浪潮中重要性日益凸显。

根据已有的历史数据,分析用户的兴趣和需求,将其感兴趣的信息、产品、服务等推荐给用户的个性化信息系统称为推荐系统。根据推荐算法的不同,我们可以将其划分为基于协同过滤的推荐、基于内容的推荐、混合推荐三种。其中,基于协同过滤的推荐由于不需预先获得用户或物品的特征数据,仅依赖于用户的历史行为对用户进行建模,有很强的可移植性,得到了人们的广泛使用。具体的,在面向社交网络的推荐系统中,可以根据已有的好友关系,为指定用户推荐与其相似程度较高的用户,还可以将相似用户喜欢的商品推荐给目标用户,以扩展推荐系统的适用场景,提升推荐系统的鲁棒性和可移植性。

在协同过滤推荐方法的执行过程中,需要进行图节点相似度的计算和比较。如何准确地定义图节点的相似度并且能对之进行高效的计算,一直是研究者们持续探索的问题。为了方便具体问题的抽象和定义,我们将社交网络转化为图论中的图结构g=(v,e),其中,v、e分别表示图结构上的所有节点、边组成的集合,对应于实际社交网络中的用户群体和用户之间的好友关系。因此,可以将寻找社交网络上相似用户的实际问题转化为计算图结构上节点之间相似度的抽象问题。

在节点相似度定义方法中,simrank相似度作为图节点相似度计算领域的一种重要算法,因为其定义完全基于图结构、不依赖于其他额外特征,并借助迭代的形式整合了节点多阶邻居的环境信息等优良特性,引起了人们的重点关注。下面为simrank的基本定义式:

基于此,本申请的发明人发现,由于simrank迭代定义的性质,直接计算单源节点的simrank需要耗费o(td2n2)的时间复杂度和o(n2)的空间复杂度,这里t表示迭代次数,d表示图上节点的平均度数,n表示图节点的个数。

而随着大数据时代的到来,现实生活中产生的图结构规模越来越大,比如上亿用户的微信、推特(twitter)形成的社交网络等,根据原始定义计算simrank的时间复杂度太高,很难在有效时间内计算出大图上的单源simrank的结果,无法满足实时推荐、交互查询的需求。

公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。



技术实现要素:

本发明的目的在于提供一种基于单源simrank的协同过滤推荐方法,其能够在有效时间内计算出大图的单源simrank的结果,满足实时推荐、交互查询的需求。

为实现上述目的,本发明提供了一种基于单源simrank的协同过滤推荐方法,包括:将待推荐用户、用户以及用户间的关系转换为图结构,其中,所述图结构中包括多个与所述用户对应的节点以及多条与所述用户间的关系对应的边,所述边包括出边以及入边,所述待推荐用户为图结构中的源节点u;根据从源节点u出发的随机游走经过l步到达节点w并停止的概率πl(u,w)、从节点w出发的两条随机游走在行走过程中不再相遇的概率η(w)以及从节点w出发的反向游走经过l步到达节点v并停止的概率πl(v,w)来进行节点v与所述源节点u之间的simrank相似度的估计s(u,v),其中,随机游走为以的概率随机走向当前节点的一个入邻居节点,以的概率停止在当前节点的游走,c为衰减系数,0≤c≤1,v为所述图结构中的任一节点;重复执行simrank相似度的估计,直至完成图结构中所有节点与源节点u之间的simrank相似度的估计;根据simrank相似度的估计结果,找到与所述待推荐节点相似度最高的前k个节点;获取所述前k个节点的行为信息,将所述行为信息整合推送给所述源节点u。

在一优选的实施方式中,所述根据从源节点u出发的随机游走经过l步到达节点w并停止的概率πl(u,w)、从节点w出发的两条随机游走在行走过程中不再相遇的概率η(w)以及从节点w出发的反向游走经过l步到达节点v并停止的概率πl(v,w)来进行节点v与所述源节点u之间的simrank相似度的估计s(u,v),包括:计算所述(πl(u,w)·η(w))的估计值;判断节点w是否为核心节点;若是,则从预存的索引表中获取所述核心节点的πl(v,w)的估计值;若否,则通过后向游走的方法动态计算πl(v,w)的估计值,其中,所述后向游走指从当前节点出发以一定的概率分布走向当前节点的出邻居;根据公式一来进行节点v与所述源节点u之间的simrank相似度的估计s(u,v),所述公式一为:

在一优选的实施方式中,所述判断节点w是否为核心节点之前,包括:根据图结构中节点的佩奇排名,确定图结构中的核心节点,其中,所述核心节点是逆佩奇排名降序排名后处于前j0位的节点,其中,j0为整数且0≤j0≤n,n为图结构中的节点数;判断是否满足预设条件,若不满足预设条件则从所述核心节点开始,沿出边方向进行随机游走;若满足预设条件,则停止随机游走,并确定πl(v,w)的估计值。

在一优选的实施方式中,所述沿出边方向进行随机游走之后包括:在进行随机游走时,根据公式二更新从节点w出发的反向随机游走经过l+1步到达节点v′的残余值rl+1(v′,w),所述公式二为:

其中,din(v′)表示节点v′的入度,v′为随机选取的节点v的一个出邻居节点,rl(v,w)为从节点w出发的反向随机游走经过l步到达节点v的残余值;根据公式三更新在第l步随机游走时到达节点v对应的πl(v,w),所述公式三为:

在一优选的实施方式中,所述预设条件包括:图结构上的所有节点在进行了l步随机游走到达节点v的残余值rl(v,w)均小于预设值rmax时。

在一优选的实施方式中,所述若满足预设条件,则停止随机游走,并确定πl(v,w)的值包括:若满足预设条件,则停止随机游走;将停止随机游走时更新的πl(v,w)的值存储在索引表中。

在一优选的实施方式中,所述计算所述(πl(u,w)·η(w))的估计值,包括:获取第一当前采样次数;在第一当前采样次数下从源节点u出发产生一条随机游走,该随机游走经过l步到达节点w并停在节点w;从节点w出发产生两条随机游走w1(w)、w2(w),如果w1(w)、w2(w)在游走过程中没有相遇,则此次采样的结果为1,否则此次采样的结果为0;判断第一当前采样次数是否达到第一预设采样值;若没有达到所述第一预设采样值,则重复获取所述第一当前采样次数,在所述第一当前采样次数下从源节点u产生一条随机游走,经过l步到达节点w并停在节点w,从节点w出发产生两条随机游走并判断所述两条随机游走是否相遇的步骤,并更新所述第一当前采样次数,直至所述第一当前采样次数达到所述第一预设采样值为止;若达到所述第一预设采样值,则将所有采样结果的均值作为(πl(u,w)·η(w))的估计值。

在一优选的实施方式中,所述通过后向游走的方法动态计算πl(v,w)的估计值包括:获取第二当前采样次数;在第二当前采样次数下,根据所述公式四计算到达节点v′的πi+1(v′,w),所述公式四为:

其中,v表示游走步数为i时到达的节点,v′表示游走步数为i+1时到达的节点,din(v)表示节点v的入度,i为整数,0≤i≤l;不断进行随机游走并更新所述第四公式,直到游走步数达到所需的l步时,得到第二当前采样次数下πl(v,w)的估计结果;判断第二当前采样次数是否达到第二预设采样值;若没有达到所述第二预设采样值,则重复获取当前采样次数,在所述第二当前采样次数下对πi+1(v′,w)进行计算以及得到所述第二当前采样次数下πl(v,w)的估计结果的步骤,并更新所述第二当前采样次数,直至所述第二当前采样次数达到所述第二预设采样值为止;若达到所述第二预设采样值,则将所有采样结果的均值作为πl(v,w)的估计值。

在一优选的实施方式中,所述第一预设采样值和/或第二预设采样值为dr次,其中,ε为预设误差。

在一优选的实施方式中,所述根据公式一来进行节点v与所述源节点u之间的simrank相似度的估计s(u,v)之后,还包括:重复进行fr轮的u、v之间的simrank相似度的估计值的计算,其中,计算得到的fr轮的估计值的中位数,将所述中位数作为节点v与所述源节点u之间的simrank相似度的估计值s(u,v)。

与现有技术相比,根据本发明的基于单源simrank的协同过滤推荐方法,可以实现在保证计算结果准确度的前提下,在有效时间内得到了源节点与图结构上其他所有节点的simrank相似度最高的前k个节点,从而对应得到了与待推荐用户最为相似的k个用户,降低了时间复杂度,满足实时推荐、交互查询的需求。

附图说明

图1是根据本发明一实施方式的基于单源simrank的协同过滤推荐方法的流程图。

图2是根据本发明一实施方式的节点u、v之间的simrank相似度的估计的流程图。

具体实施方式

下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。

除非另有其它明确表示,否则在整个说明书和权利要求书中,术语“包括”或其变换如“包含”或“包括有”等等将被理解为包括所陈述的元件或组成部分,而并未排除其它元件或其它组成部分。

simrank是图节点相似度计算领域的一种重要算法,最初由glenjeh和jenniferwidom在2002年提出,其核心思想可总结为以下两点:

a.一个节点和其本身的相似度最大。

b.如果两个节点各自的邻居节点之间是相似的,则这两个节点之间也具有一定程度的相似性。

其具体定义如下:

其中,u、v表示两个节点,s(u,v)表示节点u、v之间的simrank相似度,c是一个介于0,1之间的实数,也称为“衰减系数”。根据定义,不同节点u和v的相似度取决于他们入邻居之间的相似度。特别地,如果|i(u)|=0或|i(v)|=0,则认为s(u,v)=0,其中,i(u)、i(v)表示节点u、v的入邻居集。

在simrank的计算问题中,我们将给定源节点,返回图上其他所有节点与该源节点之间simrank值的问题称为单源simrank的计算问题。这里,我们并不需要得到完全精确的simrank结果,只期望算法计算出的simrank值与对应节点对真实simrank之间的绝对误差不超过给定的误差参数ε。具体而言,给定图上节点u、v,我们希望以(1-δ)的概率,图上任意节点v与源节点u之间的simrank估计值与真实值s(u,v)满足

单源simrank在web网络挖掘、社交网络分析、垃圾邮件检测等领域都有重要应用。然而,由于simrank原始定义的迭代特性,基于定义的计算方法需要耗费o(td2n2)的时间复杂度和o(n2)的空间复杂度,这里t表示迭代次数,d表示图上节点的平均度数,n表示图节点的个数,如此高昂的时间、空间复杂度很难满足实际应用的需要。在simrank被提出后,有很多研究者都对单源simrank的计算算法进行过优化,但是截止目前,还没有可以在亚线性时间内完成单源simrank计算的算法出现,对于较大规模的图集而言,其节点数往往处于较高量级,查询时间线性于节点数的算法无法满足实时分析、交互查询等实际场景的需要,使得simrank的应用范围收到了阻滞。

如图1所示,根据本发明优选实施方式的基于单源simrank的协同过滤推荐方法的流程图,包括步骤s1-s5。

步骤s1,将待推荐用户、用户以及用户间的关系转换为图结构,其中,所述图结构中包括多个与所述用户对应的节点以及多条与所述用户间的关系对应的边,所述边包括出边以及入边,所述待推荐用户为图结构中的源节点u。

本实施例的用户指的是平台上的所有注册用户,用户间的关系具体可以是用户间的关注关系。例如,facebook上所有的注册好友以及好友关系网。

具体的,对于微博、facebook、instagram这类有关注关系的社交网络,我们将社交网络的用户对应到图结构上的节点,用户之间的关注关系对应到图结构上的边。具体来说,如果a用户关注了b用户,则在图结构上需建立一条由b用户节点到a用户节点的有向边。(例b—>a),这里,b是a的入邻居节点,a是b的出邻居节点,这条边是节点b的出边,是节点a的入边。我们将一个节点所拥有的出边的个数称为“出度”,将其所拥有的入边的个数称为“入度”。

对于微信、qq这类有好友关系的社交网络,我们将社交网络上的用户对应到图节点,将好友关系对应到图结构上的边。具体来说,如果a用户和b用户之间存在好友关系(即a、b互为好友),则在图结构上建立一条由a用户节点到b用户节点的有向边和一条b用户节点到a用户节点的有向边。

步骤s2,根据从源节点u出发的随机游走经过l步到达节点w并停止的概率πl(u,w)、从节点w出发的两条随机游走在行走过程中不再相遇的概率η(w)以及从节点w出发的反向游走经过l步到达节点v并停止的概率πl(v,w)来进行节点v与源节点u之间的simrank相似度的估计。

其中,本实施例中的随机游走为以的概率随机走向当前节点的任意一个入邻居节点,入邻居节点为当前节点沿入边走到的节点,以的概率停止在当前节点的游走,也称为游走。c为衰减系数,0≤c≤1,v为所述图结构中的任一节点。c为实数,可以取值为0.6、0.8等。

步骤s3,重复执行simrank相似度的估计,直至完成图结构中所有节点与源节点u之间的simrank相似度的估计;

具体的,可以通过节点v遍历图上所有节点来实现。

步骤s4,根据simrank相似度的估计结果,找到与所述待推荐节点相似度最高的前k个节点;

步骤s5,获取所述前k个节点的行为信息,将所述行为信息整合推送给所述源节点u。

由此,通过本实施例提供的基于单源simrank的协同过滤推荐方法,可以实现在保证计算结果准确度的前提下,在有效时间内得到了源节点与图结构上其他所有节点的simrank相似度最高的前k个节点,从而对应得到了与待推荐用户最为相似的k个用户,降低了时间复杂度,满足实时推荐、交互查询的需求。

在一种实现方式中,本实施例还提供了具体进行节点u、v之间的simrank相似度的估计的方法。如图2所示,根据本发明优选实施方式的节点u、v之间的simrank相似度的估计的流程图,包括:s201-s208。

步骤s201,根据图结构中节点的佩奇排名,确定图结构中的核心节点,其中,所述核心节点是逆佩奇排名降序排名后处于前j0位的节点,其中,j0为整数且0≤j0≤n,n为图结构中的节点数。

其中,逆佩奇排名为颠倒图上所有边的方向后计算得到的图上各点的佩奇排名。

步骤s202,判断是否满足预设条件,若不满足预设条件则从所述核心节点开始,沿出边方向进行随机游走;

步骤s2021,在进行随机游走时,根据公式二更新从节点w出发的反向游走经过l+1步到达节点v′的残余值rl+1(v′,w),所述公式二为:

其中,din(v′)表示节点v′的入度也就是入边的个数,v’为随机选取的节点v的一个出邻居节点,rl(v,w)为从节点w出发的反向游走经过l步到达节点v的残余值,在步骤s2021与s2022中,w为核心节点;

步骤s2022根据公式三更新在第l步随机游走时到达节点v对应的πl(v,w),所述公式三为:

其中,所述预设条件包括:图结构上的所有节点在进行了l步随机游走到达节点v的残余值rl(v,w)均小于预设值rmax时。

步骤s203,若满足预设条件,则停止随机游走,并确定πl(v,w)的估计值。

具体的,确定πl(v,w)的估计值包括:将停止随机游走时更新的πl(v,w)的值存储在索引表中。

需要说明的是,步骤s201-s203可以在不确定待推荐用户的情况下进行计算。例如,步骤s1中,仅仅将平台上的好友以及好友关系转换为图结构,其中,所述图结构中包括社交网络中的所有用户对应的节点以及所有用户之间的关系对应的边,即可以实现步骤s201-s203的计算。

针对步骤s201-s203的说明如下:为了提高算法的查询速度,我们可以提前计算出πl(v,w),在实际查询时从索引文件中查找πl(v,w)的取值即可。但是如果存储所有的πl(v,w),节点v、w为图结构上的节点,需要o(n/ε)大小的索引空间。对于较小的误差参数ε,o(n/ε)的空间显著大于图数据大小o(m),不利于该算法的使用和扩展。为了减少这一过程要求的索引空间,我们提出只对核心节点建立索引,其他节点的πl(v,w)在查询过程中即时计算。这里的核心节点指的是逆佩奇排名较大的节点。设定参数j0,使用后向查询的方法计算逆佩奇排名排名前j0位的节点w对应的πl(v,w),并存储在索引文件中。由此,可以实现在未得知待推荐用户信息时就可提前计算部分中间结果,加速查询过程中simrank的计算时间。

步骤s204,计算所述(πl(u,w)·η(w))的估计值,具体可以包括:s2041-s2046。

步骤s2041,获取第一当前采样次数;

步骤s2042,在第一当前采样次数下从源节点u出发产生一条随机游走,经过l步到达节点w并停在节点w;

步骤s2043,从节点w出发产生两条随机游走w1(w)、w2(w),如果w1(w)、w2(w)在游走过程中没有相遇,则此次采样的结果为1,否则此次采样的结果为为0;

步骤s2044,判断第一当前采样次数是否达到第一预设采样值;

步骤s2045,若没有达到所述第一预设采样值,则重复获取第一当前采样次数,在所述第一当前采样次数下从源节点u产生一条随机游走,经过l步到达节点w并停在节点w,从节点w出发产生两条随机游走并判断所述两条随机游走是否相遇的步骤,并更新所述第一当前采样次数,直至所述第一当前采样次数达到所述第一预设采样值为止;

步骤s2046,若达到所述第一预设采样值,则将所有采样结果的均值作为(πl(u,w)·η(w))的估计值。

其中,第一预设采样值可以为dr次,其中,ε为预设误差。

步骤s205,判断节点w是否为核心节点;

步骤s206,若是则从预存的索引表中获取所述核心节点的πl(v,w)的估计值;

步骤s207,若否则通过后向游走的方法动态计算πl(v,w)的估计值,其中,所述后向游走指从当前节点出发以一定的概率分布走向当前节点的出邻居;

步骤s2071,获取第二当前采样次数;

步骤s2072,在第二当前采样次数下,根据所述公式四计算到达节点v′的πi+1(v′,w),所述公式四为:

其中,v表示游走步数为i时到达的节点,v′表示游走步数为i+1时到达的节点,din(v)表示节点v的入度,i是一个整数,0≤i≤l;

步骤s2073,不断进行随机游走并更新所述第四公式,直到游走步数达到所需的l步时,得到第二当前采样次数下πl(v,w)的估计结果;

步骤s2074,判断第二当前采样次数是否达到第二预设采样值;

步骤s2075,若没有达到所述第二预设采样值,则重复获取当前采样次数,在第二当前采样次数下对πi+1(v′,w)进行计算以及得到第二当前采样次数下πl(v,w)的估计结果的步骤,并更新第二当前采样次数,直至第二当前采样次数达到所述第二预设采样值为止;

步骤s2076,若达到第二预设采样值,则将所有采样结果的均值作为πl(v,w)的估计值。其中,第二预设采样值可以为dr次,其中,ε为预设误差。

针对步骤s205-s207的说明如下:

1)对πl(v,w)的估计是相对于其真实值的无偏估计,即对l≥0,有

其中,表示对真实值πl(v,w)的估计值。

2)该方法运行的时间复杂度为o(nπ(w))。值得注意的是,仅输出πl(v,w)(i=0,1,…,∞,v∈v)的值也需要

的时间复杂度,所以该方法的运行时间是可能情况下的最优选择。这里的π(w)表示节点w对应的逆佩奇排名。

步骤s208,根据公式一计算u、v之间的simrank相似度的估计值s(u,v),所述公式一为:

步骤s209,重复进行fr-1轮u、v之间的simrank相似度的估计值的计算,其中,

具体的,步骤s209的具体实现方法可以是,在当前轮次,分别进行dr次采样次数的πl(v,w)以及(πl(u,w)·η(w))的估计值的计算,然后根据dr次的计算结果的均值,确定πl(v,w)以及(πl(u,w)·η(w))的估计值。根据公式一计算s(u,v),作为一轮的s(u,v)的估计值。当前轮次更新为当前轮次+1。重复上述步骤,直至当前轮次为fr为止。

步骤s210,计算得到的fr轮的估计值的中位数,将所述中位数作为节点u、v之间的simrank相似度的估计值s(u,v)。

针对单源simrank的计算,在最坏情况下,整个方法的时间复杂度为

对于逆佩奇排名符合幂律分布的图,整个方法的时间复杂度满足:

这里γ表示逆佩奇排名服从幂律分布所对应的系数。

因此,与直接计算单源节点的simrank需要耗费o(td2n2)的时间复杂度进行对比,明显降低了计算的复杂度。

进一步的,本实施例将simrank的原始定义转化为πl(u,w)、η(w)、πl(v,w)三者乘积加和的形式,在计算η(w)的部分,有别于单独估计n(w),本方法选择整体估计(πl(u,w)·η(w))的取值,从而使得该部分程序运行的时间复杂度由o(n(log(n/δ))/ε2)降至o((log(n/δ))/ε2),提升了方法的运行效率,也使得方法可以支持较小误差系数ε、较大图节点数n的查询情景。在计算πl(v,w)的部分,本实施例选择存储逆佩奇排名较大的部分图节点对应的所有可能的πl(v,w),从而在保证方法查询时间不受太大影响的同时减少索引文件的大小。

另外,大多数图结构都服从幂律分布,对于逆佩奇排名符合幂律分布的图,根据本实施例提供的方法计算单源simrank的过程是亚线性于节点数n的。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

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