一种分布式计算图节点相似度的方法.pdf

上传人:大师****2 文档编号:527145 上传时间:2018-02-20 格式:PDF 页数:18 大小:1.62MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410323742.8

申请日:

2014.07.09

公开号:

CN104158840A

公开日:

2014.11.19

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20140709|||公开

IPC分类号:

H04L29/08; G06F17/30; H04L12/58

主分类号:

H04L29/08

申请人:

东北大学

发明人:

申德荣; 冯朔; 寇月; 聂铁铮; 王振华; 于戈

地址:

110819 辽宁省沈阳市和平区文化路3号巷11号

优先权:

专利代理机构:

沈阳东大知识产权代理有限公司 21109

代理人:

梁焱

PDF下载: PDF下载
内容摘要

一种分布式计算图节点相似度的方法,属于计算机数据挖掘领域,包括:采用主从模式搭建分布式计算平台;主计算机读入对象数据,建立图模型并发送给各子计算机;主计算机进行任务划分,并将各子任务分配给各子计算机;各子计算机计算其各任务节点分别传递给图模型中节点对的相似度增量计算值;主计算机计算偏移系数并分别发送给对应的各子计算机;子计算机对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度;该方法相比于传统SimRank计算方法,传输代价低,计算时间短,效率明显提高。

权利要求书

1.  一种分布式计算图节点相似度的方法,其特征在于:包括如下步骤:
步骤1:采用主从模式搭建分布式计算平台;
搭建的分布式环境中共有N台计算机,将其中一台计算机作为主计算机,其余N-1台计算机均作为子计算机;
步骤2:主计算机读入对象数据,建立图模型并发送给分布式计算平台中的每台子计算机;
主计算机以对象为节点,对象间关系为节点之间的边,建立图模型并将该图模型发送给分布式环境中每台子计算机;
步骤3:以该图模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的不同节点,称作任务节点;
步骤4:根据接收的任务,子计算机计算其各任务节点分别传递给图模型中的各个节点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时,任务节点传递给对应节点对的相似度增量;
对于单个任务节点m,对应的子计算机首先构建该节点的相似度增量计算值矩阵,大小为n×n,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相似度增量计算值;接下来采用广度优先算法,以该节点m为根节点进行广度优先搜索,将节点m在每一层所能到达的节点存储在集合Listk(m)中,则有
Listk(m)={(j,Pk[m,j])},k=1,…,K      (2)
其中Listk(m)表示以节点m为根节点,在第k层所能到达的图节点;j代表图中任意节点;Pk[m,j]表示从节点j出发,沿入边方向,经k步游走到达节点m的概率,称为节点m到节点j的路径值;
以迭代方式计算该节点的相似度增量计算值,即Listk(m)根据Listk-1(m)计算得到,Listk(m)中每个元素根据式(3)进行更新,
Pk[m,j]=ΣiPk-1[m,Ii(j)]/|I(j)|,P0[m,m]=1,i=1,2,…,|I(j)|     (3)
根据公式(4)及集合Listk(m),计算该节点m在各层传递给节点对(j,j′)的相似度增量计算值v′m,k(j,j′),其中j′为图中任意节点;任务节点m所对应的子计算机将j′=j时的相似度 增量计算值v′m,k(j,j′)发送给主计算机;将j′≠j时的相似度增量计算值v′m,k(j,j′)通过公式(5)累加到相似度增量计算值矩阵中;
v′m,k(j,j′)=Pk[m,j]Pk[m,j′]Ck       (4)
其中,v′m,k(j,j′)表示节点m在第k层传递给节点对(j,j′)的相似度增量计算值,即节点对(j,j′)沿入边方向经过k步游走,在节点m相遇的游历值之和;
s′m(j,j′)=Σkv′m,k(j,j′)         (5)
其中,s′m(j,j′)表示该任务节点m带给节点对(j,j′)的相似度增量计算值;
当迭代k=K次以后,迭代停止,相似度增量计算值矩阵存放的即为节点m传递给各节点对的相似度增量计算值;
步骤5.主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移系数为用于对各任务节点的相似度增量计算值进行修正的系数;
在所有子计算机完成步骤4后,主计算机根据接收到的每个子计算机发送的其各任务节点传递给节点对(j,j′),j′=j时的相似度增量计算值v′m,k(j,j′),建立集合Set={({x′,k′,y′},v′)},其中x′和y′均表示任意图节点,v′表示节点x′在第k′=1,2,…,K次迭代对节点对(y′,y′)的相似度增量计算值v′x′,k′(y′,y′),并用Set(x′,k′,y′)表示集合Set对应的元素v′=v′x′,k′(y′,y′);构建集合Sco={({x,k,y},v)},其中x和y均表示任意图节点,v表示以节点x为起点,经过k步游走,在节点y发生首遇的游历值之和vx,k(y,y),并用Sco(x,k,y)表示集合Sco对应的元素v=vx,k(y,y);下面介绍集合Sco的更新方法:
以k=1,2,…,K为迭代顺序更新集合Sco,在第k-1次迭代计算Sco(x,k-1,y)全部完成后,才进行第k次迭代计算Sco(x,k,y),其中单个元素Sco(x,k,y)计算方法如下:
A.若k=1,则Sco(x,k,y)=Set(x,k,y),则转去执行步骤C;否则执行步骤B;
B.Sco(x,k,y)通过从集合Sco中查找出元素Sco(x,k1,p)与从集合Set中查找出元素Set(p,k2,y),且满足k1+k2=k,根据公式(6)计算得到偏差v″x,k(y,y),公式(6)如下:
vx,k(y,y)=ΣpΣk1+k2=kvx,k1(p,p)vp,k2(y,y)---(6)]]>
再通过公式(7)计算得到Sco(x,k,y),公式(7)如下:
Sco(x,k,y)=(Set(x,k,y)-vx,k(y,y))2---(7)]]>
C.结束;
集合Sco更新完毕后,接下来通过公式(8)计算各个任务节点的偏移系数,
δy=ΣxΣkSco(x,k,y)---(8)]]>
δy为节点y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机;
步骤6.子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;
子计算机根据公式(9)对步骤4求得的本地相似度增量计算值进行修正,即
s(j,j′)=Σys′y(j,j′)(1-δy)        (9)
其中s(j,j′)表示节点对(j,j′)的相似度,s′y(j,j′)表示节点y传递给节点对(j,j′)的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果;δy表示任务节点y的偏移系数,其用于对任务节点y的相似度增量计算值进行修正;求和符号内s′y(j,j′)(1-δy)整体表示节点y传递给节点对(j,j′)的相似度增量,为修正后的节点y对应矩阵中的记录;
步骤7:根据从各子计算机接收的各节点的相似度增量,主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度;
主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为1.0。

2.
  根据权利要求1所述的分布式计算图节点相似度的方法,其特征在于,步骤2所述的建立图模型并发送给分布式计算平台中的每台子计算机,主计算机及各子计算机对该图模型进行存储,存储的方法为:
主计算机以对象为节点,对象间关系为节点之间的边,建立图模型;主计算机以文本形式对该图模型进行存储,每行存储节点tail的所有出邻居及出邻居入度,并为tail建立索引,存储结构如下:tail,(head1,|I(head1)|),…(head|O(tail)|,|I(head|O(tail)|)|),其中(tail,headz),z=1,2,…,|O(tail)|均为图中从节点tail到节点headz的有向边,|O(tail)|为tail的出度;|I(headz)|表示节点headz的入度;各子计算机将其接收的该图模型以相同的存储结构存储于 本地。

3.
  根据权利要求1所述的分布式计算图节点相似度的方法,其特征在于,步骤3所述的主计算机将划分后的各子任务及迭代次数分配给各子计算机,其中迭代次数K根据式(1)确定,

其中,ε为用户所能容忍的误差大小;C为衰减因子,是介于0,1之间的常数。

说明书

一种分布式计算图节点相似度的方法
技术领域
本发明属于计算机数据挖掘领域,具体涉及一种分布式计算图节点相似度的方法。 
背景技术
随着图结构的广泛应用,计算两节点相似度已经成为一种基本的图操作方法。例如,针对一个社交网络所建立的图模型中,节点代表个人账号,节点之间的边代表个人账号之间的关系,节点相似度可表述成为两个账号的关联程度,其在探测相似人群以及朋友推荐中有重要应用;又如,针对引文网络所建立的图模型中,节点代表文章,节点之间的边代表文章之间的引用关系,而节点相似度可应用于文章分类及相似文章推荐。 
目前,已有多种计算节点相似度的方法,其中SimRank方法因具有高准确性而被广泛应用。传统SimRank方法计算复杂性很高,计算方法如下:对于给定的有向图,令s(a,b)表示节点a和b之间的相似性,则这两个节点的SimRank相似度如下: 
1)若a=b,则s(a,b)=1;2)若a≠b,则s(a,b)的计算公式如下: 
s(a,b)=C|I(a)||I(b)|Σi=1|I(a)|Σj=1|I(b)|s(Ii(a),Ij(b))]]>
其中,C为衰减因子,是介于0,1之间的常数;|I(a)|和|I(b)|分别为节点a和b的入邻居个数;Ii(a)表示节点a的第i个入邻居,Ij(b)表示节点b的第j个入邻居。 
在初始化阶段,若a≠b,则R0(a,b)=0,否则R0(a,b)=1,然后按下式进行迭代: Rk(Ii(a),Ij(b));其中Rk+1(a,b)表示节点a和b之间的第k+1次迭代的SimRank相似度;在每次迭代过程中,依次算出所有节点对之间的相似度后进入下一次迭代,在迭代计算次后,可得Rk(a,b)为节点对(a,b)的SimRank相似度,其中ε为用户所能容忍的误差大小; 
由公式可知,相同或相似节点的出邻居节点也具有高相似性,在迭代计算节点对相似度时,需通过节点对的入邻居的相似度对该节点对相似度进行更新,则s(a,b)=limk→∞Rk(a,b)。可以看出,该方法计算复杂性过高,且在计算过程中需等待前一次迭代计算全部完成后才能进行下一次迭代计算。 
为降低传统SimRank计算复杂度,人们提出了多种SimRank优化计算方法,例如:基于局部和的SimRank优化计算方法、基于随机游走的SimRank计算方法以及基于GPU的SimRank 并行计算方法等。其中基于随机游走的SimRank优化计算方法中,节点a和b之间SimRank相似度计算公式为s(a,b)=Σt:(a,b)→mP[t]Cl(t),其中t表示分别从节点a和b出发,沿入边方向游走,经过相同步数,首次在节点m相遇的两条路径,P[t]表示该相遇发生的概率;l(t)表示路径的长度;并称这两条路径形成了一次从节点对(a,b)到节点m的首遇游历(tour),P[t]Cl(t)为游历值,同样称l(t)为该游历的长度; 
上述的多种SimRank优化计算方法计算复杂性均达到o(Kn4),其中K表示迭代计算次数,n表示图中节点个数。对于大规模图数据,如大型社交网络、网页数据以及引文信息网络,这些网络中节点的数量和边的数量异常庞大,由于这些计算方法仅在单个计算机中进行处理,而单个计算机CPU计算能力有限,导致计算时间过长。据实验测试,传统单机方法在2.1GHz英特尔奔腾处理器且1G内存的实验环境中,处理10000个节点的图数据需要的计算时间大致46个小时。 
基于随机游走的SimRank优化计算方法在计算节点对(a,b)相似度时,需得到所有以(a,b)为端点的路径,因此可在分布式环境中对其实现:以节点对为划分单元对相似度计算任务进行划分,每台计算机处理计算多个节点对的相似度大小。然而这种计算方法复杂性过高,且需多次图数据读取操作。 
发明内容
针对现有技术存在的不足,本发明提供一种分布式计算图节点相似度(DcSimRank)的方法。 
本发明的技术方案: 
一种分布式计算图节点相似度的方法,包括如下步骤: 
步骤1:采用主从(master-slave)模式搭建分布式计算平台; 
搭建的分布式环境中共有N台计算机,将其中一台计算机作为主(master)计算机,其余N-1台计算机均作为子(slave)计算机; 
步骤2:主计算机读入现有的对象数据,建立图模型并发送给分布式计算平台中的每台子计算机; 
主计算机以对象为节点,对象间关系为节点之间的边,建立图模型;主计算机以文本形式对该图模型进行存储,每行存储节点tail的所有出邻居及出邻居入度,并为tail建立索引,存储结构如下:tail,(head1,|I(head1)|),…(head|O(tail)|,|I(head|O(tail))|),其中(tail,headz), z=1,2,…,|O(tail)|均为图中从节点tail到节点headz的有向边,|O(tail)|为tail的出度;|I(headz)|表示节点headz的入度;主计算机将该图模型发送给分布式环境中每台子计算机,各子计算机将其接收的该图模型以相同的存储结构存储于本地; 
步骤3:以该图模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的不同节点,称作任务节点; 
迭代次数K根据下式给出, 

其中,ε为用户所能容忍的误差大小;C为衰减因子,是介于0,1之间的常数; 
步骤4:根据接收的任务,各子计算机计算其各任务节点分别传递给图模型中的各个节点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时,任务节点传递给对应节点对的相似度增量; 
对于单个任务节点m,对应的子计算机首先构建该节点的相似度增量计算值矩阵,大小为n×n,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相似度增量计算值;接下来采用广度优先算法,以该节点m为根节点进行广度优先搜索,将节点m在每一层所能到达的节点存储在集合Listk(m)中,则有 
Listk(m)={(j,Pk[m,j])},k=1,…,K        (2) 
其中Listk(m)表示以节点m为根节点,在第k层所能到达的图节点;j代表图中任意节点;Pk[m,j]表示从节点j出发,沿入边方向,经k步游走到达节点m的概率,称为节点m到节点j的路径值; 
以迭代方式计算该节点的相似度增量计算值,即Listk(m)根据Listk-1(m)计算得到,Listk(m)中每个元素根据式(3)进行更新, 
Pk[m,j]=ΣiPk-1[m,Ii(j)]/|I(j)|,P0[m,m]=1,i=1,2,…,|I(j)|       (3) 
根据公式(4)及集合Listk(m),计算该节点m在各层传递给节点对(j,j′)的相似度增量计算值v′m,k(j,j′),其中j′为图中任意节点;任务节点m所对应的子计算机将j′=j时的相似度增量计算值v′m,k(j,j′)发送给主计算机;将j′≠j时的相似度增量计算值v′m,k(j,j′)通过公式(5) 累加到相似度增量计算值矩阵中。 
v′m,k(j,j′)=Pk[m,j]Pk[m,j′]Ck            (4) 
其中,v′m,k(j,j′)表示节点m在第k层传递给节点对(j,j′)的相似度增量计算值,即节点对(j,j′)沿入边方向经过k步游走,在节点m相遇的游历值之和; 
s′m(j,j′)=Σkv′m,k(j,j′)         (5) 
其中,s′m(j,j′)表示该任务节点m带给节点对(j,j′)的相似度增量计算值; 
当迭代k=K次以后,迭代停止,相似度增量计算值矩阵存放的即为节点m传递给各节点对的相似度增量计算值。 
步骤5.主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移系数为用于对各任务节点的相似度增量计算值进行修正的系数; 
在所有子计算机完成步骤4后,主计算机根据接收到的每个子计算机发送的其各任务节点传递给节点对(j,j′),j′=j时的相似度增量计算值v′m,k(j,j′),建立集合Set={({x′,k′,y′},v′)},其中x′和y′均表示任意图节点,v′表示节点x′在第k′=1,2,…,K次迭代对节点对(y′,y′)的相似度增量计算值v′x′,k′(y′,y′),并用Set(x′,k′,y′)表示集合Set对应的元素v′=v′x′,k′(y′,y′);构建集合Sco={({x,k,y},v)},其中x和y均表示任意图节点,v表示以节点x为起点,经过k步游走,在节点y发生首遇的游历值之和vx,k(y,y),并用Sco(x,k,y)表示集合Sco对应的元素v=vx,k(y,y);下面介绍集合Sco的更新方法: 
以k=1,2,…,K为迭代顺序更新集合Sco,在第k-1次迭代计算Sco(x,k-1,y)全部完成后,才进行第k次迭代计算Sco(x,k,y),其中单个元素Sco(x,k,y)计算方法如下: 
A.若k=1,则Sco(x,k,y)=Set(x,k,y),则转去执行步骤C;否则执行步骤B; 
B.Sco(x,k,y)通过从集合Sco中查找出元素Sco(x,k1,p)与从集合Set中查找出元素Set(p,k2,y),且满足k1+k2=k,根据公式(6)计算得到偏差v″x,k(y,y),公式(6)如下: 
vx,k(y,y)=ΣpΣk1+k2=kvx,k1(p,p)vp,k2(y,y)---(6)]]>
再通过公式(7)计算得到Sco(x,k,y),公式(7)如下: 
Sco(x,k,y)=(Set(x,k,y)-vx,k(y,y))2---(7)]]>
C.结束; 
集合Sco更新完毕后,接下来通过公式(8)计算各个任务节点的偏移系数, 
δy=ΣxΣkSco(x,k,y)---(8)]]>
δy为节点y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机。 
步骤6.子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机; 
子计算机根据公式(9)对步骤4求得的本地相似度增量计算值进行修正,即 
s(j,j′)=Σys′y(j,j′)(1-δy)          (9) 
其中s(j,j′)表示节点对(j,j′)的相似度,s′y(j,j′)表示节点y传递给节点对(j,j′)的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果;δy表示任务节点y的偏移系数,其用于对任务节点y的相似度增量计算值进行修正;求和符号内s′y(j,j′)(1-δy)整体表示节点y传递给节点对(j,j′)的相似度增量,为修正后的节点y对应矩阵中的记录; 
步骤7:根据从各子计算机接收的各节点的相似度增量,主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度; 
主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为1.0。 
有益效果:本发明的分布式求取图节点相似度的方法,通过搭建分布式计算平台,由主计算机读入对象数据,建立图模型,划分任务后将各个任务块分配给各个子计算机,最后再由主计算机对各子计算机完成的任务结果进行整合,计算出图模型中两节点相似度大小,用于对象间联系程度的分析,其计算复杂度为O(Kn3),通信代价为O(Nn2),相比于传统SimRank计算方法,传输代价低,计算时间短,效率明显提高。 
附图说明
图1为本发明实施例1的人际关系结构示意图; 
图2为本发明实施例1的分布式求取图节点相似度的方法流程图; 
图3为本发明实施例1根据图1所示的人际关系结构建立的图模型示意图; 
图4为本发明实施例2的3种不同相似度计算方法分别对5个不同数据集进行相似度计算的运行时间测试图。 
具体实施方式
下面结合附图对本发明的一种实施方式作进一步详细的说明。 
本实施方式中所有实施例中涉及程序部分的均使用Java编程实现,且实验所使用的分布式环境为15台计算机的机群,每台计算机配置为Intel Core i321003.1GHz CPU,8G内存,500G硬盘,操作系统为Red Hat Linux6.1。 
实施例1 
为方便理解,本实施例提供一个较小的图数据的详细处理过程。本实施例以人物关系网络为例,该人物关系网络出自微软人立方关系搜索 (http://renlifang.msra.cn/GuanxiMap.aspx?query=355),如图1所示,描述了七位名人间的人际关系结构,这七位名人分别是董卿、朱军、李咏、白岩松、毕福剑、赵本山以及李思思。该实施例根据这七人间的人际关系,可计算分析出这七人间的关联紧密程度。 
为减少计算次数,本实施例确定计算精度为ε=0.01;为了加快收敛速度,本实施例确定衰减因子为C=0.4;本实施例中约定所有数据均取至小数点后三位。针对该七位名人构成的人际关系网络结构进行分布式计算图节点相似度(DcSimRank)的方法,如图2所示,该方法流程开始于步骤201。 
在步骤202,采用主从(master-slave)模式搭建分布式计算平台:本实施例所使用的计算机数量N=4,对分布式环境中的这四台计算机进行划分,其中一台作为主计算机,其余三台作为子计算机,并分别标记为第一子计算机、第二子计算机以及第三子计算机; 
在步骤203,主计算机读入现有的对象数据,建立图模型并发送给分布式计算平台中的每台子计算机; 
本实施例中主计算机读入图1所示的7个对象数据,7个对象即董卿、赵本山、朱军、毕福剑、李思思、白岩松以及李咏;主计算机以该7个对象分别为节点A,B,C,D,E,F,G,对象之间的关系为节点之间的边,建立图模型,如图3所示;主计算机以文本形式对该图模型进行存储,如表1所示,每行存储节点tail的所有出邻居及出邻居入度,并以节点tail作为主键,为tail建立索引,存储结构如下:tail,(head1,|I(head1)|),…(head|O(tail)|,|I(head|O(tail)|)|),其中(tail,headz),z=1,2,…,|O(tail)|均为图中从节点tail到节点headz的有向边,|O(tail)|为tail的出度;|I(headz)|表示节点headz的入度;主计算机将该图模型分别发送给第一子计算机、第二子计算机以及第三子计算机;各子计算机将其接收的该图模型以相同的存储结构 存储于本地; 
表1图模型存储结构 

A,(B,2),(C,6),(D,4),(E,3),(F,2),(G,3)B,(A,6),(C,6) C,(A,6),(B,2),(D,4),(E,3),(F,2),(G,3)D,(A,6),(C,6),(E,3),(G,3) E,(A,6),(C,6),(D,4) F,(A,6),(C,6) G,(A,6),(C,6),(D,4)

在步骤204,以该图模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的不同节点,称作任务节点; 
对任务进行划分时,本实施例中的主计算机将节点A,B,C,D,E,F,G作为任务划分对象,为保证负载平衡,将节点A,B划分给第一子计算机进行处理,将节点C,D划分给第二子计算机进行处理,将节点E,F,G划分给第三子计算机进行处理;则其中节点A,B分别为第一子计算机的任务节点,节点C,D分别为第二子计算机的任务节点,节点E,F,G分别为第三子计算机的任务节点; 
本实施例中主计算机根据本实施例确定的计算精度为ε=0.01和衰减因子C=0.4及式(1),计算出迭代次数K=5,并将其分别发送给第一子计算机、第二子计算机以及第三子计算机; 

其中,ε为用户所能容忍的误差大小;C为衰减因子,是介于0,1之间的常数。 
在步骤205,根据接收的任务,子计算机计算其各任务节点分别传递给图模型中的各个节点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时,任务节点传递给对应节点对的相似度增量; 
本实施例以第一子计算机的任务节点A为例进行阐述,其余节点的计算方法类似,此处不再赘述。 
对于节点A,第一子计算机首先构建节点A的相似度增量计算值矩阵S′A,矩阵大小为 7*7,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相似度增量计算值;接下来采用广度优先算法,以节点A为根节点进行广度优先搜索,将节点A在每一层所能到达的节点记录并存储在集合Listk(A)中,则有 
Listk(A)={(j,Pk[A,j])},k=1,…,K        (2) 
其中Listk(A)表示以节点A为根节点,在第k层所能到达的节点集合;j代表图中任意节点,即j代表节点A,B,C,D,E,F,G中的任意节点;Pk[A,j]表示从节点j出发,沿入边方向,经k步游走到达节点A的概率,称为节点A到节点j的路径值; 
Listk(A)根据Listk-1(A)计算得到,Listk(A)中每个元素根据式(3)进行更新, 
Pk[A,j]=ΣiPk-1[A,Ii(j)]/|I(j),P0[m,m]=1,i=1,2,…,|I(j)|     (3) 
则节点A在k=1层时,所能到达的节点集合List1(A),如表2第一行所示;依此类推,则节点A在各层所能到达的节点的集合Listk(A),如表2所示。 
表2节点A的Listk(A)存储结果 
List1(A)={(B,0.5),(C,0.167),(D,0.25),(E,0.333),(F,0.5),(G,0.333)}List2(A)={(A,0.347),(B,0.083),(C,0.319),(D,0.208),(E,0.139),(F,0.083),(G,0.139)}List3(A)={(A,0.162),(B,0.333),(C,0.167),(D,0.236),(E,0.292),(F,0.333),(G,0.292)}List4(A)={(A,0.275),(B,0.164),(C,0.275),(D,0.229),(E,0.188),(F,0.164),(G,0.188)}List5(A)={(A,0.201),(B,0.275),(C,0.201),(D,0.232),(E,0.259),(F,0.275),(G,0.259)}

根据公式(4)及集合Listk(A),计算该节点A在各层传递给节点对(j,j′)的相似度增量计算值v′A,k(j,j′),其中j′为图中任意节点;第一子计算机将j′=j时的相似度增量计算值v′A,k(j,j′)发送给主计算机;将j′≠j时的相似度增量计算值v′A,k(j,j′)通过公式(5)累加到相似度增量计算值矩阵SA′中。 
v′A,k(j,j′)=Pk[A,j]Pk[A,j′]Ck k=1,…,K       (4) 
s′A(j,j′)=Σkv′A,k(j,j′           )(5) 
以节点A在k=1层传递给节点对(j,j′)的相似度增量计算值v′A,1(j,j′)为例:根据公式(4) 及集合List1(A)计算v′A,1(j,j′),即,将List1(A)中元素两两相乘并乘以衰减因子C,如v′A,1(B,C)=P1[A,B]P1[A,C]C=0.5*0.167*0.4=0.033,依此类推,可得到该次迭代节点A传递给节点对(j,j′)的相似度增量计算值,并将其累加到矩阵S′A中;将List1(A)中的各元素分别与其自身相乘并乘以衰减因子C,如v′A,1(B,B)=P1[A,B]P1[A,B]C=0.5*0.5*0.4=0.100,依此类推,分别计算出v′A,1(C,C)、v′A,1(D,D)、v′A,1(E,E)、v′A,1(F,F)和v′A,1(G,G),并将它们传送给主计算机,作为主计算机计算偏移系数的参数,至此第一次迭代计算完毕。 
接下来进行第二次迭代计算,即节点A在k=2层时,所能到达的节点集合List2(A),如表2的第二行所示,其是通过迭代方式对List1(A)进行更新后得到的,其更新方法如下:根据公式(3),List2(A)中元素对应节点是通过List1(A)中该节点的入节点的值除以其入度所得到的,如List2(A)中第一个元素(A,P2[A,A]),由表1可知,节点A的入邻居包括节点B~G,因此,P2[A,A]=(P1[A,B]+…P1[A,G])/|I(A)|=0.347,依此类推,依照此方法对List2(A)更新完毕,得到表2中的第二行,其余步骤与第一次迭代计算相同:将List2(A)中元素两两相乘并乘以衰减因子C2,得到第二次迭代节点A传递给节点对(j,j′)的相似度增量计算值,并将其累加到矩阵S′A中;将List2(A)中的各元素分别与其自身相乘并乘以衰减因子C2,分别计算出v′A,2(A,A)、v′A,2(B,B)、v′A,2(C,C)、v′A,2(D,D)、v′A,2(E,E)、v′A,2(F,F)和v′A,2(G,G),并将它们传送给主计算机,作为计算偏移系数的参数,至此第二次迭代计算完毕。 
按照第一次迭代计算与第二次迭代计算的方法,将第三次、第四次和第五次迭代计算完成以后,该任务节点A处理完毕,第一子计算机按照同样的方法继续处理其任务节点B。同理,根据该计算方法,第二子计算机和第三子计算机分别对其任务节点进行计算,得到其各任务节点分别传递给节点对(j,j′)的相似度增量计算值,并分别将j′=j时的相似度增量计算值v′m,k(j,j′)发送给主计算机,将j′≠j时的相似度增量计算值v′m,k(j,j′)通过公式(5)累加到各任务节点的相似度增量计算值矩阵中。 
在步骤206,主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移系数为用于对各任务节点的相似度增量计算值进行修正的系数; 
在所有子计算机完成步骤205后,主计算机根据接收到的每个子计算机发送的其各任务节 点传递给节点对(j,j′),j′=j时的相似度增量计算值v′m,k(j,j′),建立集合Set={({x′,k′,y′},v′)},表3展示了集合Set部分元素,其中x′和y′均表示任意图节点;v′表示节点x′在第k′=1,2,…,K次迭代对节点对(y′,y′)的相似度增量计算值v′x′,k′(y′,y′),并用Set(x′,k′,y′)表示集合Set对应的元素v′=v′x′,k′(y′,y′); 
表3集合Set部分元素 

构建集合Sco={({x,k,y},v)},其中x和y均表示任意图节点,v表示以节点x为起点,经过k步游走,在节点y发生首遇的游历值之和vx,k(y,y),并用Sco(x,k,y)表示集合Sco对应的 元素v=vx,k(y,y);下面根据公式(6)和(7),利用集合Set对集合Sco进行更新: 
以k=1,2,…,K为迭代顺序更新集合Sco,在第k-1次迭代计算Sco(x,k-1,y)全部完成后,才进行第k次迭代计算Sco(x,k,y),其中单个元素Sco(x,k,y)计算方法如下: 
A.若k=1,则Sco(x,k,y)=Set(x,k,y),则转去执行步骤C;否则执行步骤B; 
首先对Sco中k=1的结果进行更新:由于在两条长度为1的路径中,不可能出现第二个相遇节点,因此将集合Set中k=1的结果直接导入集合Sco即可;若Sco(x,k,y)中k=1,则转去执行步骤C;若Sco(x,k,y)中k>1,则继续转去执行步骤B; 
B.对于k>1时的Sco(x,k,y),通过从集合Sco中查找出元素Sco(x,k1,p)与从集合Set中查找出元素Set(p,k2,y),且满足k1+k2=k,p为在集合Sco和集合Set中同时出现的节点;根据公式(6)计算得到偏差v″x,k(y,y),公式(6)如下: 
vx,k(y,y)=ΣpΣk1+k2=kvx,k1(p,p)vp,k2(y,y)---(6)]]>
再通过公式(7)计算得到Sco(x,k,y),公式(7)如下: 
Sco(x,k,y)=(Set(x,k,y)-vx,k(y,y))2---(7)]]>
对于Sco中k=2时,以计算Sco(A,2,A)为例,首先对集合Set与集合Sco进行查询,得到满足条件的Set(A,1,B)与Sco(B,1,A),Set(A,1,C)与Sco(C,1,A)等六条记录,通过公式(6)得到偏差v″A,2(A,A)=Set(A,1,B)*Sco(B,1,A)+Set(A,1,C)*Sco(C,1,A)+…=0.004,通过公式(7)求得Sco(A,2,A)=(Set(A,2,A)-v″A,2(A,A))/2=0.008。其余Sco元素更新方法相同,不再阐述。 
C.结束; 
集合Sco更新完毕后,如表4所示,展示了集合Sco部分元素 
表4集合Sco部分元素 


集合Sco更新完毕后,接下来通过公式(8)计算每个任务节点的偏移系数, 
δy=ΣxΣkSco(x,k,y)---(8)]]>
其中δy为节点y的偏移系数,其用于对任务节点y的相似度增量计算值进行修正;主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机。如主计算机计算出节点A的偏移系数为: 
δA=ΣxΣkSco(x,k,A)=Sco(A,1,A)+...+Sco(A,5,A)+Sco(B,5,A)+...+Sco(B,5,A)+...=0.087]]>,并将其发送给第一子计算机;按照此方法,主计算机完成计算δBCDEFG,如表5所示,并分别将δB发送给第一子计算机,将δCD发送给第二子计算机,将δEFG发送给第三子计算机。 
表5各节点偏移系数 
节点(y) A B C D E F G 偏移系数(δy) 0.087 0.212 0.087 0.115 0.146 0.212 0.146

在步骤207,子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机; 
各子计算机接收到偏移系数后,根据公式(9)对步骤4求得的本地相似度增量计算值进行修正,即,对于每个任务节点,用1减去其偏移系数的结果再与其相似度增量计算值矩阵中每个元素相乘,得到该任务节点的相似度增量矩阵,之后对其对应的子计算机内所有任务节点的相似度增量矩阵进行求和后得到该子计算机的相似度增量矩阵,并传送给主计算机。 
s(j,j′)=Σys′y(j,j′)(1-δy)                       (9) 
其中s(j,j′)表示节点对(j,j′)的相似度,s′y(j,j′)表示节点y传递给节点对(j,j′)的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果;求和符号内s′y(j,j′)(1-δy)整体表示节点y传递给节点对(j,j′)的相似度增量,为修正后的节点y对应矩阵中的记录; 
在步骤208,根据从各子计算机接收的相似度增量,主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度; 
主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为1.0,最终得到相似度计算结果如表6所示。 
表6相似度计算结果 
  A B C D E F G A 1.000 0.060 0.097 0.085 0.074 0.060 0.074 B 0.060 1.000 0.060 0.126 0.160 0.223 0.160 C 0.097 0.060 1.000 0.085 0.074 0.060 0.074 D 0.085 0.126 0.085 1.000 0.096 0.0126 0.096 E 0.074 0.160 0.074 0.096 1.000 0.160 0.159 F 0.060 0.223 0.060 0.126 0.160 1.000 0.160 G 0.074 0.160 0.074 0.096 0.159 0.160 1.000

通过本实施例,对本发明(DcSimRank方法)的正确性进行分析: 
如表6所示数据,为图1给出的7位名人的人际关系紧密度的分析结果,以第一行为例:通过数据可得董卿(A)与自身关联紧密程度最高,与其他人物相似度差别较大;在其他节点 中与朱军(C)具有较高相似度,其次是毕福剑(D),之后为李思思(E)与李咏(G),最后为赵本山(B)和白岩松(F)。与现实情况进行比较分析,由于董卿(A)、朱军(C)、毕福剑(D)、李思思(E)、李咏(G)、白岩松(F)均为央视主持,且董卿(A)与朱军(C)常年合作主持春晚,而毕福剑(D)和李思思(E)为最近两年才加入春晚,自然与董卿(A)的关联紧密程度不如朱军(C),虽然李咏(G)也曾经与董卿(A)合作过多次,但今年以来李咏(G)已离开春晚,因此其关联紧密程度也较低。通过分析表明,该方法所计算得到的节点相似度具有较高的正确性。 
本发明(DcSimRank方法)的性能测试: 
实施例2 
表7所示为5个不同数据集,其中Wiki数据集为维基百科页面数据,其中节点表示每个页面,节点之间的边代表页面之间的链接,节点对的相似度可用来表示两个页面的关联程度,例如维基百科中辽宁省页面、奉天省页面和沈阳市页面三者之间具有很高的关联程度,由于在大量网页中同时存在该三个页面的链接;数据集Gnu1至Gnu4为一个分布式p2p文件共享系统的通信数据,其中节点表示每个服务器,节点之间的边代表服务器间的访问过程,节点对的相似度可用来表示两个服务器内数据的关联程度,在数据维护、数据融合操作时有重要作用。 
表7数据集 
数据集 节点数量 边数量 Wiki 7155 103689 Gnu1 6301 20777 Gnu2 8864 31839 Gnu3 10876 39994 Gnu4 22687 54705

图4为对该5个不同数据集采用3种不同的相似度计算方法进行相似度计算的运行时间测试图,从图中可以看出本发明的优化计算方法DcSimRank相比于传统SimRank以及LSimRank(基于随机游走的SimRank)具有较高的执行效率。 
虽然以上描述了本发明的具体实施方式,但是本领域内的熟练的技术人员应当理解,这些仅是举例说明,可以对这些实施方式做出多种变更或修改,而不背离本发明的原理和实质。 

一种分布式计算图节点相似度的方法.pdf_第1页
第1页 / 共18页
一种分布式计算图节点相似度的方法.pdf_第2页
第2页 / 共18页
一种分布式计算图节点相似度的方法.pdf_第3页
第3页 / 共18页
点击查看更多>>
资源描述

《一种分布式计算图节点相似度的方法.pdf》由会员分享,可在线阅读,更多相关《一种分布式计算图节点相似度的方法.pdf(18页珍藏版)》请在专利查询网上搜索。

1、10申请公布号CN104158840A43申请公布日20141119CN104158840A21申请号201410323742822申请日20140709H04L29/08200601G06F17/30200601H04L12/5820060171申请人东北大学地址110819辽宁省沈阳市和平区文化路3号巷11号72发明人申德荣冯朔寇月聂铁铮王振华于戈74专利代理机构沈阳东大知识产权代理有限公司21109代理人梁焱54发明名称一种分布式计算图节点相似度的方法57摘要一种分布式计算图节点相似度的方法,属于计算机数据挖掘领域,包括采用主从模式搭建分布式计算平台;主计算机读入对象数据,建立图模型并发。

2、送给各子计算机;主计算机进行任务划分,并将各子任务分配给各子计算机;各子计算机计算其各任务节点分别传递给图模型中节点对的相似度增量计算值;主计算机计算偏移系数并分别发送给对应的各子计算机;子计算机对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度;该方法相比于传统SIMRANK计算方法,传输代价低,计算时间短,效率明显提高。51INTCL权利要求书3页说明书12页附图2页19中华人民共和国国家知识产权局12发明专利申请权利要求书3页说明书12页附图2页10申请。

3、公布号CN104158840ACN104158840A1/3页21一种分布式计算图节点相似度的方法,其特征在于包括如下步骤步骤1采用主从模式搭建分布式计算平台;搭建的分布式环境中共有N台计算机,将其中一台计算机作为主计算机,其余N1台计算机均作为子计算机;步骤2主计算机读入对象数据,建立图模型并发送给分布式计算平台中的每台子计算机;主计算机以对象为节点,对象间关系为节点之间的边,建立图模型并将该图模型发送给分布式环境中每台子计算机;步骤3以该图模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的不同节点,称。

4、作任务节点;步骤4根据接收的任务,子计算机计算其各任务节点分别传递给图模型中的各个节点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时,任务节点传递给对应节点对的相似度增量;对于单个任务节点M,对应的子计算机首先构建该节点的相似度增量计算值矩阵,大小为NN,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相似度增量计算值;接下来采用广度优先算法,以该节点M为根节点进行广度优先搜索,将节点M在每一层所能到达的节点存储在集合LISTKM中,则有LISTKMJ,PKM,J,K1,K2其中LISTKM表示以节点M为根节点,在第K层所能到达的图节点;J代表图。

5、中任意节点;PKM,J表示从节点J出发,沿入边方向,经K步游走到达节点M的概率,称为节点M到节点J的路径值;以迭代方式计算该节点的相似度增量计算值,即LISTKM根据LISTK1M计算得到,LISTKM中每个元素根据式3进行更新,PKM,JIPK1M,IIJ/|IJ|,P0M,M1,I1,2,|IJ|3根据公式4及集合LISTKM,计算该节点M在各层传递给节点对J,J的相似度增量计算值VM,KJ,J,其中J为图中任意节点;任务节点M所对应的子计算机将JJ时的相似度增量计算值VM,KJ,J发送给主计算机;将JJ时的相似度增量计算值VM,KJ,J通过公式5累加到相似度增量计算值矩阵中;VM,KJ,。

6、JPKM,JPKM,JCK4其中,VM,KJ,J表示节点M在第K层传递给节点对J,J的相似度增量计算值,即节点对J,J沿入边方向经过K步游走,在节点M相遇的游历值之和;SMJ,JKVM,KJ,J5其中,SMJ,J表示该任务节点M带给节点对J,J的相似度增量计算值;当迭代KK次以后,迭代停止,相似度增量计算值矩阵存放的即为节点M传递给各节点对的相似度增量计算值;步骤5主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移系数为用于对各任务节点的相似度增量计算值进行修正的系数;在所有子计算机完成步骤4后,主计算机根据接收到的每个子计算机发送的其各任务权利要求书CN104158840A2。

7、/3页3节点传递给节点对J,J,JJ时的相似度增量计算值VM,KJ,J,建立集合SETX,K,Y,V,其中X和Y均表示任意图节点,V表示节点X在第K1,2,K次迭代对节点对Y,Y的相似度增量计算值VX,KY,Y,并用SETX,K,Y表示集合SET对应的元素VVX,KY,Y;构建集合SCOX,K,Y,V,其中X和Y均表示任意图节点,V表示以节点X为起点,经过K步游走,在节点Y发生首遇的游历值之和VX,KY,Y,并用SCOX,K,Y表示集合SCO对应的元素VVX,KY,Y;下面介绍集合SCO的更新方法以K1,2,K为迭代顺序更新集合SCO,在第K1次迭代计算SCOX,K1,Y全部完成后,才进行第K。

8、次迭代计算SCOX,K,Y,其中单个元素SCOX,K,Y计算方法如下A若K1,则SCOX,K,YSETX,K,Y,则转去执行步骤C;否则执行步骤B;BSCOX,K,Y通过从集合SCO中查找出元素SCOX,K1,P与从集合SET中查找出元素SETP,K2,Y,且满足K1K2K,根据公式6计算得到偏差VX,KY,Y,公式6如下再通过公式7计算得到SCOX,K,Y,公式7如下C结束;集合SCO更新完毕后,接下来通过公式8计算各个任务节点的偏移系数,Y为节点Y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机;步骤6子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似。

9、度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;子计算机根据公式9对步骤4求得的本地相似度增量计算值进行修正,即SJ,JYSYJ,J1Y9其中SJ,J表示节点对J,J的相似度,SYJ,J表示节点Y传递给节点对J,J的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果;Y表示任务节点Y的偏移系数,其用于对任务节点Y的相似度增量计算值进行修正;求和符号内SYJ,J1Y整体表示节点Y传递给节点对J,J的相似度增量,为修正后的节点Y对应矩阵中的记录;步骤7根据从各子计算机接收的各节点的相似度增量,主计算机对图模型中各节点对的相似度进行整合,最终得到图。

10、模型中各个节点对的相似度;主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为10。2根据权利要求1所述的分布式计算图节点相似度的方法,其特征在于,步骤2所述的建立图模型并发送给分布式计算平台中的每台子计算机,主计算机及各子计算机对该图模权利要求书CN104158840A3/3页4型进行存储,存储的方法为主计算机以对象为节点,对象间关系为节点之间的边,建立图模型;主计算机以文本形式对该图模型进行存储,每行存储节点TAIL的所有出邻居及出邻居入度,并为TAIL建立索引,存储结构如下TAIL,HEAD1,|。

11、IHEAD1|,HEAD|OTAIL|,|IHEAD|OTAIL|,其中TAIL,HEADZ,Z1,2,|OTAIL|均为图中从节点TAIL到节点HEADZ的有向边,|OTAIL|为TAIL的出度;|IHEADZ|表示节点HEADZ的入度;各子计算机将其接收的该图模型以相同的存储结构存储于本地。3根据权利要求1所述的分布式计算图节点相似度的方法,其特征在于,步骤3所述的主计算机将划分后的各子任务及迭代次数分配给各子计算机,其中迭代次数K根据式1确定,其中,为用户所能容忍的误差大小;C为衰减因子,是介于0,1之间的常数。权利要求书CN104158840A1/12页5一种分布式计算图节点相似度的方。

12、法技术领域0001本发明属于计算机数据挖掘领域,具体涉及一种分布式计算图节点相似度的方法。背景技术0002随着图结构的广泛应用,计算两节点相似度已经成为一种基本的图操作方法。例如,针对一个社交网络所建立的图模型中,节点代表个人账号,节点之间的边代表个人账号之间的关系,节点相似度可表述成为两个账号的关联程度,其在探测相似人群以及朋友推荐中有重要应用;又如,针对引文网络所建立的图模型中,节点代表文章,节点之间的边代表文章之间的引用关系,而节点相似度可应用于文章分类及相似文章推荐。0003目前,已有多种计算节点相似度的方法,其中SIMRANK方法因具有高准确性而被广泛应用。传统SIMRANK方法计算。

13、复杂性很高,计算方法如下对于给定的有向图,令SA,B表示节点A和B之间的相似性,则这两个节点的SIMRANK相似度如下00041若AB,则SA,B1;2若AB,则SA,B的计算公式如下00050006其中,C为衰减因子,是介于0,1之间的常数;|IA|和|IB|分别为节点A和B的入邻居个数;IIA表示节点A的第I个入邻居,IJB表示节点B的第J个入邻居。0007在初始化阶段,若AB,则R0A,B0,否则R0A,B1,然后按下式进行迭代RKIIA,IJB;其中RK1A,B表示节点A和B之间的第K1次迭代的SIMRANK相似度;在每次迭代过程中,依次算出所有节点对之间的相似度后进入下一次迭代,在迭。

14、代计算次后,可得RKA,B为节点对A,B的SIMRANK相似度,其中为用户所能容忍的误差大小;0008由公式可知,相同或相似节点的出邻居节点也具有高相似性,在迭代计算节点对相似度时,需通过节点对的入邻居的相似度对该节点对相似度进行更新,则SA,BLIMKRKA,B。可以看出,该方法计算复杂性过高,且在计算过程中需等待前一次迭代计算全部完成后才能进行下一次迭代计算。0009为降低传统SIMRANK计算复杂度,人们提出了多种SIMRANK优化计算方法,例如基于局部和的SIMRANK优化计算方法、基于随机游走的SIMRANK计算方法以及基于GPU的SIMRANK并行计算方法等。其中基于随机游走的SI。

15、MRANK优化计算方法中,节点A和B之间SIMRANK相似度计算公式为SA,BTA,BMPTCLT,其中T表示分别从节点A和B出发,沿入边方向游走,经过相同步数,首次在节点M相遇的两条路径,PT表示该相遇发生的概率;LT表示路径的长度;并称这两条路径形成了一次从节点对A,B到节点M的首遇游历TOUR,PTCLT为游历值,同样称LT为该游历的长度;说明书CN104158840A2/12页60010上述的多种SIMRANK优化计算方法计算复杂性均达到OKN4,其中K表示迭代计算次数,N表示图中节点个数。对于大规模图数据,如大型社交网络、网页数据以及引文信息网络,这些网络中节点的数量和边的数量异常庞。

16、大,由于这些计算方法仅在单个计算机中进行处理,而单个计算机CPU计算能力有限,导致计算时间过长。据实验测试,传统单机方法在21GHZ英特尔奔腾处理器且1G内存的实验环境中,处理10000个节点的图数据需要的计算时间大致46个小时。0011基于随机游走的SIMRANK优化计算方法在计算节点对A,B相似度时,需得到所有以A,B为端点的路径,因此可在分布式环境中对其实现以节点对为划分单元对相似度计算任务进行划分,每台计算机处理计算多个节点对的相似度大小。然而这种计算方法复杂性过高,且需多次图数据读取操作。发明内容0012针对现有技术存在的不足,本发明提供一种分布式计算图节点相似度DCSIMRANK的。

17、方法。0013本发明的技术方案0014一种分布式计算图节点相似度的方法,包括如下步骤0015步骤1采用主从MASTERSLAVE模式搭建分布式计算平台;0016搭建的分布式环境中共有N台计算机,将其中一台计算机作为主MASTER计算机,其余N1台计算机均作为子SLAVE计算机;0017步骤2主计算机读入现有的对象数据,建立图模型并发送给分布式计算平台中的每台子计算机;0018主计算机以对象为节点,对象间关系为节点之间的边,建立图模型;主计算机以文本形式对该图模型进行存储,每行存储节点TAIL的所有出邻居及出邻居入度,并为TAIL建立索引,存储结构如下TAIL,HEAD1,|IHEAD1|,HE。

18、AD|OTAIL|,|IHEAD|OTAIL|,其中TAIL,HEADZ,Z1,2,|OTAIL|均为图中从节点TAIL到节点HEADZ的有向边,|OTAIL|为TAIL的出度;|IHEADZ|表示节点HEADZ的入度;主计算机将该图模型发送给分布式环境中每台子计算机,各子计算机将其接收的该图模型以相同的存储结构存储于本地;0019步骤3以该图模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的不同节点,称作任务节点;0020迭代次数K根据下式给出,00210022其中,为用户所能容忍的误差大小;C为衰减因。

19、子,是介于0,1之间的常数;0023步骤4根据接收的任务,各子计算机计算其各任务节点分别传递给图模型中的各个节点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时,任务节点传递给对应节点对的相似度增量;说明书CN104158840A3/12页70024对于单个任务节点M,对应的子计算机首先构建该节点的相似度增量计算值矩阵,大小为NN,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相似度增量计算值;接下来采用广度优先算法,以该节点M为根节点进行广度优先搜索,将节点M在每一层所能到达的节点存储在集合LISTKM中,则有0025LISTKMJ,PKM,J。

20、,K1,K20026其中LISTKM表示以节点M为根节点,在第K层所能到达的图节点;J代表图中任意节点;PKM,J表示从节点J出发,沿入边方向,经K步游走到达节点M的概率,称为节点M到节点J的路径值;0027以迭代方式计算该节点的相似度增量计算值,即LISTKM根据LISTK1M计算得到,LISTKM中每个元素根据式3进行更新,0028PKM,JIPK1M,IIJ/|IJ|,P0M,M1,I1,2,|IJ|30029根据公式4及集合LISTKM,计算该节点M在各层传递给节点对J,J的相似度增量计算值VM,KJ,J,其中J为图中任意节点;任务节点M所对应的子计算机将JJ时的相似度增量计算值VM,。

21、KJ,J发送给主计算机;将JJ时的相似度增量计算值VM,KJ,J通过公式5累加到相似度增量计算值矩阵中。0030VM,KJ,JPKM,JPKM,JCK40031其中,VM,KJ,J表示节点M在第K层传递给节点对J,J的相似度增量计算值,即节点对J,J沿入边方向经过K步游走,在节点M相遇的游历值之和;0032SMJ,JKVM,KJ,J50033其中,SMJ,J表示该任务节点M带给节点对J,J的相似度增量计算值;0034当迭代KK次以后,迭代停止,相似度增量计算值矩阵存放的即为节点M传递给各节点对的相似度增量计算值。0035步骤5主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移系。

22、数为用于对各任务节点的相似度增量计算值进行修正的系数;0036在所有子计算机完成步骤4后,主计算机根据接收到的每个子计算机发送的其各任务节点传递给节点对J,J,JJ时的相似度增量计算值VM,KJ,J,建立集合SETX,K,Y,V,其中X和Y均表示任意图节点,V表示节点X在第K1,2,K次迭代对节点对Y,Y的相似度增量计算值VX,KY,Y,并用SETX,K,Y表示集合SET对应的元素VVX,KY,Y;构建集合SCOX,K,Y,V,其中X和Y均表示任意图节点,V表示以节点X为起点,经过K步游走,在节点Y发生首遇的游历值之和VX,KY,Y,并用SCOX,K,Y表示集合SCO对应的元素VVX,KY,Y。

23、;下面介绍集合SCO的更新方法0037以K1,2,K为迭代顺序更新集合SCO,在第K1次迭代计算SCOX,K1,Y全部完成后,才进行第K次迭代计算SCOX,K,Y,其中单个元素SCOX,K,Y计算方法如下0038A若K1,则SCOX,K,YSETX,K,Y,则转去执行步骤C;否则执行步骤B;0039BSCOX,K,Y通过从集合SCO中查找出元素SCOX,K1,P与从集合SET中查找出元素SETP,K2,Y,且满足K1K2K,根据公式6计算得到偏差VX,KY,Y,公式6如下说明书CN104158840A4/12页800400041再通过公式7计算得到SCOX,K,Y,公式7如下00420043C。

24、结束;0044集合SCO更新完毕后,接下来通过公式8计算各个任务节点的偏移系数,00450046Y为节点Y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机。0047步骤6子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;0048子计算机根据公式9对步骤4求得的本地相似度增量计算值进行修正,即0049SJ,JYSYJ,J1Y90050其中SJ,J表示节点对J,J的相似度,SYJ,J表示节点Y传递给节点对J,J的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果。

25、;Y表示任务节点Y的偏移系数,其用于对任务节点Y的相似度增量计算值进行修正;求和符号内SYJ,J1Y整体表示节点Y传递给节点对J,J的相似度增量,为修正后的节点Y对应矩阵中的记录;0051步骤7根据从各子计算机接收的各节点的相似度增量,主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度;0052主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为10。0053有益效果本发明的分布式求取图节点相似度的方法,通过搭建分布式计算平台,由主计算机读入对象数据,建立图模型,划分任务后将。

26、各个任务块分配给各个子计算机,最后再由主计算机对各子计算机完成的任务结果进行整合,计算出图模型中两节点相似度大小,用于对象间联系程度的分析,其计算复杂度为OKN3,通信代价为ONN2,相比于传统SIMRANK计算方法,传输代价低,计算时间短,效率明显提高。附图说明0054图1为本发明实施例1的人际关系结构示意图;0055图2为本发明实施例1的分布式求取图节点相似度的方法流程图;0056图3为本发明实施例1根据图1所示的人际关系结构建立的图模型示意图;0057图4为本发明实施例2的3种不同相似度计算方法分别对5个不同数据集进行相似度计算的运行时间测试图。具体实施方式说明书CN104158840A。

27、5/12页90058下面结合附图对本发明的一种实施方式作进一步详细的说明。0059本实施方式中所有实施例中涉及程序部分的均使用JAVA编程实现,且实验所使用的分布式环境为15台计算机的机群,每台计算机配置为INTELCOREI3210031GHZCPU,8G内存,500G硬盘,操作系统为REDHATLINUX61。0060实施例10061为方便理解,本实施例提供一个较小的图数据的详细处理过程。本实施例以人物关系网络为例,该人物关系网络出自微软人立方关系搜索HTTP/RENLIFANGMSRACN/GUANXIMAPASPXQUERY355,如图1所示,描述了七位名人间的人际关系结构,这七位名人。

28、分别是董卿、朱军、李咏、白岩松、毕福剑、赵本山以及李思思。该实施例根据这七人间的人际关系,可计算分析出这七人间的关联紧密程度。0062为减少计算次数,本实施例确定计算精度为001;为了加快收敛速度,本实施例确定衰减因子为C04;本实施例中约定所有数据均取至小数点后三位。针对该七位名人构成的人际关系网络结构进行分布式计算图节点相似度DCSIMRANK的方法,如图2所示,该方法流程开始于步骤201。0063在步骤202,采用主从MASTERSLAVE模式搭建分布式计算平台本实施例所使用的计算机数量N4,对分布式环境中的这四台计算机进行划分,其中一台作为主计算机,其余三台作为子计算机,并分别标记为第。

29、一子计算机、第二子计算机以及第三子计算机;0064在步骤203,主计算机读入现有的对象数据,建立图模型并发送给分布式计算平台中的每台子计算机;0065本实施例中主计算机读入图1所示的7个对象数据,7个对象即董卿、赵本山、朱军、毕福剑、李思思、白岩松以及李咏;主计算机以该7个对象分别为节点A,B,C,D,E,F,G,对象之间的关系为节点之间的边,建立图模型,如图3所示;主计算机以文本形式对该图模型进行存储,如表1所示,每行存储节点TAIL的所有出邻居及出邻居入度,并以节点TAIL作为主键,为TAIL建立索引,存储结构如下TAIL,HEAD1,|IHEAD1|,HEAD|OTAIL|,|IHEAD。

30、|OTAIL|,其中TAIL,HEADZ,Z1,2,|OTAIL|均为图中从节点TAIL到节点HEADZ的有向边,|OTAIL|为TAIL的出度;|IHEADZ|表示节点HEADZ的入度;主计算机将该图模型分别发送给第一子计算机、第二子计算机以及第三子计算机;各子计算机将其接收的该图模型以相同的存储结构存储于本地;0066表1图模型存储结构0067A,B,2,C,6,D,4,E,3,F,2,G,3B,A,6,C,6C,A,6,B,2,D,4,E,3,F,2,G,3D,A,6,C,6,E,3,G,3E,A,6,C,6,D,4F,A,6,C,6G,A,6,C,6,D,40068在步骤204,以该图。

31、模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的不同节点,称作任务节点;说明书CN104158840A6/12页100069对任务进行划分时,本实施例中的主计算机将节点A,B,C,D,E,F,G作为任务划分对象,为保证负载平衡,将节点A,B划分给第一子计算机进行处理,将节点C,D划分给第二子计算机进行处理,将节点E,F,G划分给第三子计算机进行处理;则其中节点A,B分别为第一子计算机的任务节点,节点C,D分别为第二子计算机的任务节点,节点E,F,G分别为第三子计算机的任务节点;0070本实施例中主计算机。

32、根据本实施例确定的计算精度为001和衰减因子C04及式1,计算出迭代次数K5,并将其分别发送给第一子计算机、第二子计算机以及第三子计算机;00710072其中,为用户所能容忍的误差大小;C为衰减因子,是介于0,1之间的常数。0073在步骤205,根据接收的任务,子计算机计算其各任务节点分别传递给图模型中的各个节点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时,任务节点传递给对应节点对的相似度增量;0074本实施例以第一子计算机的任务节点A为例进行阐述,其余节点的计算方法类似,此处不再赘述。0075对于节点A,第一子计算机首先构建节点A的相似度增量计算值矩阵SA,矩阵。

33、大小为77,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相似度增量计算值;接下来采用广度优先算法,以节点A为根节点进行广度优先搜索,将节点A在每一层所能到达的节点记录并存储在集合LISTKA中,则有0076LISTKAJ,PKA,J,K1,K20077其中LISTKA表示以节点A为根节点,在第K层所能到达的节点集合;J代表图中任意节点,即J代表节点A,B,C,D,E,F,G中的任意节点;PKA,J表示从节点J出发,沿入边方向,经K步游走到达节点A的概率,称为节点A到节点J的路径值;0078LISTKA根据LISTK1A计算得到,LISTKA中每个元素根据式3进行更新,0。

34、079PKA,JIPK1A,IIJ/|IJ,P0M,M1,I1,2,|IJ|30080则节点A在K1层时,所能到达的节点集合LIST1A,如表2第一行所示;依此类推,则节点A在各层所能到达的节点的集合LISTKA,如表2所示。0081表2节点A的LISTKA存储结果0082LIST1AB,05,C,0167,D,025,E,0333,F,05,G,0333LIST2AA,0347,B,0083,C,0319,D,0208,E,0139,F,0083,G,0139LIST3AA,0162,B,0333,C,0167,D,0236,E,0292,F,0333,G,0292LIST4AA,0275,。

35、B,0164,C,0275,D,0229,E,0188,F,0164,G,0188LIST5AA,0201,B,0275,C,0201,D,0232,E,0259,F,0275,G,02590083根据公式4及集合LISTKA,计算该节点A在各层传递给节点对J,J的相似度增量计算值VA,KJ,J,其中J为图中任意节点;第一子计算机将JJ时的相似度增量计算值VA,KJ,J发送给主计算机;将JJ时的相似度增量计算值VA,KJ,J通过公式5累加到相似度增量计算值矩阵SA中。说明书CN104158840A107/12页110084VA,KJ,JPKA,JPKA,JCKK1,K40085SAJ,JKVA。

36、,KJ,J50086以节点A在K1层传递给节点对J,J的相似度增量计算值VA,1J,J为例根据公式4及集合LIST1A计算VA,1J,J,即,将LIST1A中元素两两相乘并乘以衰减因子C,如VA,1B,CP1A,BP1A,CC050167040033,依此类推,可得到该次迭代节点A传递给节点对J,J的相似度增量计算值,并将其累加到矩阵SA中;将LIST1A中的各元素分别与其自身相乘并乘以衰减因子C,如VA,1B,BP1A,BP1A,BC0505040100,依此类推,分别计算出VA,1C,C、VA,1D,D、VA,1E,E、VA,1F,F和VA,1G,G,并将它们传送给主计算机,作为主计算机计。

37、算偏移系数的参数,至此第一次迭代计算完毕。0087接下来进行第二次迭代计算,即节点A在K2层时,所能到达的节点集合LIST2A,如表2的第二行所示,其是通过迭代方式对LIST1A进行更新后得到的,其更新方法如下根据公式3,LIST2A中元素对应节点是通过LIST1A中该节点的入节点的值除以其入度所得到的,如LIST2A中第一个元素A,P2A,A,由表1可知,节点A的入邻居包括节点BG,因此,P2A,AP1A,BP1A,G/|IA|0347,依此类推,依照此方法对LIST2A更新完毕,得到表2中的第二行,其余步骤与第一次迭代计算相同将LIST2A中元素两两相乘并乘以衰减因子C2,得到第二次迭代节。

38、点A传递给节点对J,J的相似度增量计算值,并将其累加到矩阵SA中;将LIST2A中的各元素分别与其自身相乘并乘以衰减因子C2,分别计算出VA,2A,A、VA,2B,B、VA,2C,C、VA,2D,D、VA,2E,E、VA,2F,F和VA,2G,G,并将它们传送给主计算机,作为计算偏移系数的参数,至此第二次迭代计算完毕。0088按照第一次迭代计算与第二次迭代计算的方法,将第三次、第四次和第五次迭代计算完成以后,该任务节点A处理完毕,第一子计算机按照同样的方法继续处理其任务节点B。同理,根据该计算方法,第二子计算机和第三子计算机分别对其任务节点进行计算,得到其各任务节点分别传递给节点对J,J的相似。

39、度增量计算值,并分别将JJ时的相似度增量计算值VM,KJ,J发送给主计算机,将JJ时的相似度增量计算值VM,KJ,J通过公式5累加到各任务节点的相似度增量计算值矩阵中。0089在步骤206,主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移系数为用于对各任务节点的相似度增量计算值进行修正的系数;0090在所有子计算机完成步骤205后,主计算机根据接收到的每个子计算机发送的其各任务节点传递给节点对J,J,JJ时的相似度增量计算值VM,KJ,J,建立集合SETX,K,Y,V,表3展示了集合SET部分元素,其中X和Y均表示任意图节点;V表示节点X在第K1,2,K次迭代对节点对Y,Y的。

40、相似度增量计算值VX,KY,Y,并用SETX,K,Y表示集合SET对应的元素VVX,KY,Y;0091表3集合SET部分元素0092说明书CN104158840A118/12页120093构建集合SCOX,K,Y,V,其中X和Y均表示任意图节点,V表示以节点X为起点,经过K步游走,在节点Y发生首遇的游历值之和VX,KY,Y,并用SCOX,K,Y表示集合SCO对应的元素VVX,KY,Y;下面根据公式6和7,利用集合SET对集合SCO进行更新0094以K1,2,K为迭代顺序更新集合SCO,在第K1次迭代计算SCOX,K1,Y全部完成后,才进行第K次迭代计算SCOX,K,Y,其中单个元素SCOX,K。

41、,Y计算方法如下0095A若K1,则SCOX,K,YSETX,K,Y,则转去执行步骤C;否则执行步骤B;0096首先对SCO中K1的结果进行更新由于在两条长度为1的路径中,不可能出现第二个相遇节点,因此将集合SET中K1的结果直接导入集合SCO即可;若SCOX,K,Y中K1,则转去执行步骤C;若SCOX,K,Y中K1,则继续转去执行步骤B;0097B对于K1时的SCOX,K,Y,通过从集合SCO中查找出元素SCOX,K1,P与从集合SET中查找出元素SETP,K2,Y,且满足K1K2K,P为在集合SCO和集合SET中同时说明书CN104158840A129/12页13出现的节点;根据公式6计算。

42、得到偏差VX,KY,Y,公式6如下00980099再通过公式7计算得到SCOX,K,Y,公式7如下01000101对于SCO中K2时,以计算SCOA,2,A为例,首先对集合SET与集合SCO进行查询,得到满足条件的SETA,1,B与SCOB,1,A,SETA,1,C与SCOC,1,A等六条记录,通过公式6得到偏差VA,2A,ASETA,1,BSCOB,1,ASETA,1,CSCOC,1,A0004,通过公式7求得SCOA,2,ASETA,2,AVA,2A,A/20008。其余SCO元素更新方法相同,不再阐述。0102C结束;0103集合SCO更新完毕后,如表4所示,展示了集合SCO部分元素01。

43、04表4集合SCO部分元素01050106说明书CN104158840A1310/12页140107集合SCO更新完毕后,接下来通过公式8计算每个任务节点的偏移系数,01080109其中Y为节点Y的偏移系数,其用于对任务节点Y的相似度增量计算值进行修正;主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机。如主计算机计算出节点A的偏移系数为0110,并将其发送给第一子计算机;按照此方法,主计算机完成计算B,C,D,E,F,G,如表5所示,并分别将B发送给第一子计算机,将C,D发送给第二子计算机,将E,F,G发送给第三子计算机。0111表5各节点偏移系数0112节点YABCDEFG偏移。

44、系数Y00870212008701150146021201460113在步骤207,子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;说明书CN104158840A1411/12页150114各子计算机接收到偏移系数后,根据公式9对步骤4求得的本地相似度增量计算值进行修正,即,对于每个任务节点,用1减去其偏移系数的结果再与其相似度增量计算值矩阵中每个元素相乘,得到该任务节点的相似度增量矩阵,之后对其对应的子计算机内所有任务节点的相似度增量矩阵进行求和后得到该子计算机的相似度增量矩阵,并传送给主计算。

45、机。0115SJ,JYSYJ,J1Y90116其中SJ,J表示节点对J,J的相似度,SYJ,J表示节点Y传递给节点对J,J的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果;求和符号内SYJ,J1Y整体表示节点Y传递给节点对J,J的相似度增量,为修正后的节点Y对应矩阵中的记录;0117在步骤208,根据从各子计算机接收的相似度增量,主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度;0118主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为10,最终得到相似。

46、度计算结果如表6所示。0119表6相似度计算结果0120ABCDEFGA1000006000970085007400600074B0060100000600126016002230160C0097006010000085007400600074D00850126008510000096001260096E0074016000740096100001600159F0060022300600126016010000160G00740160007400960159016010000121通过本实施例,对本发明DCSIMRANK方法的正确性进行分析0122如表6所示数据,为图1给出的7位名人的人际关系。

47、紧密度的分析结果,以第一行为例通过数据可得董卿A与自身关联紧密程度最高,与其他人物相似度差别较大;在其他节点中与朱军C具有较高相似度,其次是毕福剑D,之后为李思思E与李咏G,最后为赵本山B和白岩松F。与现实情况进行比较分析,由于董卿A、朱军C、毕福剑D、李思思E、李咏G、白岩松F均为央视主持,且董卿A与朱军C常年合作主持春晚,而毕福剑D和李思思E为最近两年才加入春晚,自然与董卿A的关联紧密程度不如朱军C,虽然李咏G也曾经与董卿A合作过多次,但今年以来李咏G已离开春晚,因此其关联紧密程度也较低。通过分析表明,该方法所计算得到的节点相似度具有较高的正确性。0123本发明DCSIMRANK方法的性能。

48、测试0124实施例20125表7所示为5个不同数据集,其中WIKI数据集为维基百科页面数据,其中节点表示每个页面,节点之间的边代表页面之间的链接,节点对的相似度可用来表示两个页面的关联程度,例如维基百科中辽宁省页面、奉天省页面和沈阳市页面三者之间具有很高的关联程度,由于在大量网页中同时存在该三个页面的链接;数据集GNU1至GNU4为一个分布式说明书CN104158840A1512/12页16P2P文件共享系统的通信数据,其中节点表示每个服务器,节点之间的边代表服务器间的访问过程,节点对的相似度可用来表示两个服务器内数据的关联程度,在数据维护、数据融合操作时有重要作用。0126表7数据集0127数据集节点数量边数量WIKI7155103689GNU1630120777GNU2886431839GNU31087639994GNU422687547050128图4为对该5个不同数据集采用3种不同的相似度计算方法进行相似度计算的运行时间测试图,从图中可以看出本发明的优化计算方法DCSIMRANK相比于传统SIMRANK以及LS。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1