CN104158840B - 一种分布式计算图节点相似度的方法 - Google Patents
一种分布式计算图节点相似度的方法 Download PDFInfo
- Publication number
- CN104158840B CN104158840B CN201410323742.8A CN201410323742A CN104158840B CN 104158840 B CN104158840 B CN 104158840B CN 201410323742 A CN201410323742 A CN 201410323742A CN 104158840 B CN104158840 B CN 104158840B
- Authority
- CN
- China
- Prior art keywords
- node
- similarity
- computer
- sub
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 38
- 238000004364 calculation method Methods 0.000 title claims abstract description 35
- 238000000205 computational method Methods 0.000 claims abstract description 11
- 239000011159 matrix material Substances 0.000 claims description 20
- 238000013508 migration Methods 0.000 claims description 9
- 230000005012 migration Effects 0.000 claims description 9
- 230000008520 organization Effects 0.000 claims description 7
- 230000015654 memory Effects 0.000 claims description 5
- 238000004422 calculation algorithm Methods 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 abstract description 4
- 238000009412 basement excavation Methods 0.000 abstract description 2
- 238000004458 analytical method Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000005295 random walk Methods 0.000 description 4
- 238000011524 similarity measure Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 101150021123 msrA gene Proteins 0.000 description 1
- 238000011056 performance test Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种分布式计算图节点相似度的方法,属于计算机数据挖掘领域,包括:采用主从模式搭建分布式计算平台;主计算机读入对象数据,建立图模型并发送给各子计算机;主计算机进行任务划分,并将各子任务分配给各子计算机;各子计算机计算其各任务节点分别传递给图模型中节点对的相似度增量计算值;主计算机计算偏移系数并分别发送给对应的各子计算机;子计算机对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;主计算机对图模型中各节点对的相似度进行整合,最终得到图模型中各个节点对的相似度;该方法相比于传统SimRank计算方法,传输代价低,计算时间短,效率明显提高。
Description
技术领域
本发明属于计算机数据挖掘领域,具体涉及一种分布式计算图节点相似度的方法。
背景技术
随着图结构的广泛应用,计算两节点相似度已经成为一种基本的图操作方法。例如,针对一个社交网络所建立的图模型中,节点代表个人账号,节点之间的边代表个人账号之间的关系,节点相似度可表述成为两个账号的关联程度,其在探测相似人群以及朋友推荐中有重要应用;又如,针对引文网络所建立的图模型中,节点代表文章,节点之间的边代表文章之间的引用关系,而节点相似度可应用于文章分类及相似文章推荐。
目前,已有多种计算节点相似度的方法,其中SimRank方法因具有高准确性而被广泛应用。传统SimRank方法计算复杂性很高,计算方法如下:对于给定的有向图,令s(a,b)表示节点a和b之间的相似性,则这两个节点的SimRank相似度如下:
1)若a=b,则s(a,b)=1;2)若a≠b,则s(a,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+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)如下:
再通过公式(7)计算得到Sco(x,k,y),公式(7)如下:
C.结束;
集合Sco更新完毕后,接下来通过公式(8)计算各个任务节点的偏移系数,
δy为节点y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机。
步骤6.子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;
子计算机根据公式(9)对步骤4求得的本地相似度增量计算值进行修正,即
s(j,j′)=∑ys′y(j,j′)(1-δy) (9)
其中s(j,j′)表示节点对(j,j′)的相似度,sy′(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 i3 2100 3.1GHz CPU,8G内存,500G硬盘,操作***为Red Hat Linux 6.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的相似度增量计算值矩阵SA′,矩阵大小为 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[A,A]=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′)的相似度增量计算值,并将其累加到矩阵SA′中;将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′)的相似度增量计算值,并将其累加到矩阵SA′中;将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)如下:
再通过公式(7)计算得到Sco(x,k,y),公式(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为节点y的偏移系数,其用于对任务节点y的相似度增量计算值进行修正;主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机。如主计算机计算出节点A的偏移系数为:
,并将其发送给第一子计算机;按照此方法,主计算机完成计算δB,δC,δD,δE,δF,δG,如表5所示,并分别将δB发送给第一子计算机,将δC,δD发送给第二子计算机,将δE,δF,δG发送给第三子计算机。
表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′)的相似度,sy′(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)具有较高的执行效率。
虽然以上描述了本发明的具体实施方式,但是本领域内的熟练的技术人员应当理解,这些仅是举例说明,可以对这些实施方式做出多种变更或修改,而不背离本发明的原理和实质。
Claims (3)
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相遇的游历值之和;C为衰减因子,是介于0,1之间的常数;
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,p为在集合Sco和集合Set中同时出现的节点,根据公式(6)计算得到偏差v″x,k(y,y),公式(6)如下:
再通过公式(7)计算得到Sco(x,k,y),公式(7)如下:
C.结束;
集合Sco更新完毕后,接下来通过公式(8)计算各个任务节点的偏移系数,
δy为节点y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应的子计算机;
步骤6.子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算机;
子计算机根据公式(9)对步骤4求得的本地相似度增量计算值进行修正,即
s(j,j′)=∑ys′y(j,j′)(1-δy) (9)
其中s(j,j′)表示节点对(j,j′)的相似度,sy′(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之间的常数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410323742.8A CN104158840B (zh) | 2014-07-09 | 2014-07-09 | 一种分布式计算图节点相似度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410323742.8A CN104158840B (zh) | 2014-07-09 | 2014-07-09 | 一种分布式计算图节点相似度的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104158840A CN104158840A (zh) | 2014-11-19 |
CN104158840B true CN104158840B (zh) | 2017-07-07 |
Family
ID=51884245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410323742.8A Expired - Fee Related CN104158840B (zh) | 2014-07-09 | 2014-07-09 | 一种分布式计算图节点相似度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104158840B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389448B (zh) * | 2015-12-22 | 2019-07-23 | 华侨大学 | 一种用于计算机集群保能度评估的图模型构造方法 |
CN107273412B (zh) * | 2017-05-04 | 2019-09-27 | 北京拓尔思信息技术股份有限公司 | 一种文本数据的聚类方法、装置和*** |
WO2018205246A1 (en) * | 2017-05-12 | 2018-11-15 | Shanghai Putu Technology Partnership (General Partnership) | Parallel computation engine for graph data |
CN110019975B (zh) | 2017-10-10 | 2020-10-16 | 创新先进技术有限公司 | 随机游走、基于集群的随机游走方法、装置以及设备 |
CN109658094B (zh) | 2017-10-10 | 2020-09-18 | 阿里巴巴集团控股有限公司 | 随机游走、基于集群的随机游走方法、装置以及设备 |
CN108196951B (zh) * | 2018-01-30 | 2021-10-15 | 成都信息工程大学 | Gpu流域径流模拟分布式调度***及方法 |
CN109614397B (zh) * | 2018-10-30 | 2023-06-20 | 创新先进技术有限公司 | 基于分布式***获取关系网络的节点序列的方法和装置 |
CN111090783B (zh) * | 2019-12-18 | 2023-10-03 | 北京百度网讯科技有限公司 | 推荐方法、装置和***、图嵌入的游走方法、电子设备 |
CN112115183B (zh) * | 2020-09-18 | 2021-09-21 | 广州锦行网络科技有限公司 | 一种基于图的蜜罐***威胁情报分析方法 |
CN116188239B (zh) * | 2022-12-02 | 2023-09-12 | 上海交通大学 | 多请求并发的gpu图随机游走优化实现方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388024A (zh) * | 2008-10-09 | 2009-03-18 | 浙江大学 | 一种基于复杂网络的压缩空间高效搜索方法 |
CN101561813A (zh) * | 2009-05-27 | 2009-10-21 | 东北大学 | 一种Web环境下的字符串相似度的分析方法 |
CN103761225A (zh) * | 2014-01-23 | 2014-04-30 | 天津大学 | 一种数据驱动的中文词语义相似度计算方法 |
-
2014
- 2014-07-09 CN CN201410323742.8A patent/CN104158840B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101388024A (zh) * | 2008-10-09 | 2009-03-18 | 浙江大学 | 一种基于复杂网络的压缩空间高效搜索方法 |
CN101561813A (zh) * | 2009-05-27 | 2009-10-21 | 东北大学 | 一种Web环境下的字符串相似度的分析方法 |
CN103761225A (zh) * | 2014-01-23 | 2014-04-30 | 天津大学 | 一种数据驱动的中文词语义相似度计算方法 |
Non-Patent Citations (1)
Title |
---|
《基于SimRank的百度百科词条语义相似度计算》;尹坤,尹红风等;《山东大学学报(工学版)》;20140630;第44卷(第3期);第29-34页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104158840A (zh) | 2014-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104158840B (zh) | 一种分布式计算图节点相似度的方法 | |
Samoilenko et al. | Using Data Envelopment Analysis (DEA) for monitoring efficiency-based performance of productivity-driven organizations: Design and implementation of a decision support system | |
Tosun et al. | A robust island parallel genetic algorithm for the quadratic assignment problem | |
Zaker | On dynamic monopolies of graphs with general thresholds | |
CN104636978B (zh) | 一种基于多标签传播的重叠社区检测方法 | |
Wu et al. | A mapreduce based ant colony optimization approach to combinatorial optimization problems | |
Bhatia et al. | A distributed overlapping community detection model for large graphs using autoencoder | |
CN102148717A (zh) | 一种二分网络中社团检测方法及装置 | |
Bae et al. | Scalable flow-based community detection for large-scale network analysis | |
Wan et al. | Identification of important nodes in multilayer heterogeneous networks incorporating multirelational information | |
Collins et al. | Generating empirical core size distributions of hedonic games using a Monte Carlo Method | |
Sapaty | Network Centrality Operations under Spatial Grasp Technology | |
Jeong et al. | A parallel team formation approach using crowd intelligence from social network | |
Raina et al. | Learning to design without prior data: Discovering generalizable design strategies using deep learning and tree search | |
De Florio et al. | Service-oriented communities: Models and concepts towards fractal social organizations | |
Ayzenshtadt et al. | Comparative evaluation of rule-based and case-based retrieval coordination for search of architectural building designs | |
Yang et al. | Structural equivalence in subgraph matching | |
Azizifard | Social network clustering | |
Lamer et al. | Specifications for the routine implementation of federated learning in hospitals networks | |
Zardi et al. | A multi-agent homophily-based approach for community detection in social networks | |
Zhao et al. | Prediction of competitive diffusion on complex networks | |
Мазурок et al. | An incentive system for decentralized DAG-based platforms | |
Lu et al. | A review of concurrent optimisation methods | |
Mou | An efficient ant colony system for solving the new generalized traveling salesman problem | |
Li et al. | Characterizing the importance of nodes with information feedback in multilayer networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20170707 |
|
CF01 | Termination of patent right due to non-payment of annual fee |