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

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

【技术领域】
[0001] 本发明属于计算机数据挖掘领域,具体涉及一种分布式计算图节点相似度的方 法。

【背景技术】
[0002] 随着图结构的广泛应用,计算两节点相似度已经成为一种基本的图操作方法。例 如,针对一个社交网络所建立的图模型中,节点代表个人账号,节点之间的边代表个人账号 之间的关系,节点相似度可表述成为两个账号的关联程度,其在探测相似人群以及朋友推 荐中有重要应用;又如,针对引文网络所建立的图模型中,节点代表文章,节点之间的边代 表文章之间的引用关系,而节点相似度可应用于文章分类及相似文章推荐。
[0003] 目前,已有多种计算节点相似度的方法,其中SimRank方法因具有高准确性而 被广泛应用。传统SimRank方法计算复杂性很高,计算方法如下:对于给定的有向图,令 s (a, b)表示节点a和b之间的相似性,则这两个节点的SimRank相似度如下:
[0004] 1)若a = b,则s (a, b) = 1 ;2)若a尹b,则s (a, b)的计算公式如下:
[0005]

【权利要求】
1. 一种分布式计算图节点相似度的方法,其特征在于:包括如下步骤: 步骤1 :采用主从模式搭建分布式计算平台; 搭建的分布式环境中共有N台计算机,将其中一台计算机作为主计算机,其余N-1台计 算机均作为子计算机; 步骤2:主计算机读入对象数据,建立图模型并发送给分布式计算平台中的每台子计 算机; 主计算机以对象为节点,对象间关系为节点之间的边,建立图模型并将该图模型发送 给分布式环境中每台子计算机; 步骤3 :以该图模型的所有节点为任务划分对象,主计算机进行任务划分,并将划分后 的各子任务及迭代次数分配给各子计算机;子任务由所划分的不同节点构成;子任务中的 不同节点,称作任务节点; 步骤4 :根据接收的任务,子计算机计算其各任务节点分别传递给图模型中的各个节 点对的相似度增量计算值;相似度增量计算值为不考虑所得到的游历是否为首遇游历时, 任务节点传递给对应节点对的相似度增量; 对于单个任务节点m,对应的子计算机首先构建该节点的相似度增量计算值矩阵,大小 为ηΧη,并将其中每个元素初始化为0,该矩阵用于存放该节点传递给各相应节点对的相 似度增量计算值;接下来采用广度优先算法,以该节点m为根节点进行广度优先搜索,将节 点m在每一层所能到达的节点存储在集合List k(m)中,贝1J有 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)根据Listj^Oii)计算得到, Listk(m)中每个元素根据式(3)进行更新,
(3) 根据公式(4)及集合Listk(m),计算该节点m在各层传递给节点对(j, )的相似度 增量计算值ν' m,k(j,j'),其中j'为图中任意节点;任务节点m所对应的子计算机将j' =j时的相似度增量计算值V m,k(j, )发送给主计算机;将尹j时的相似度增量计 算值v m,ka_r )通过公式(5)累加到相似度增量计算值矩阵中;
(4) 其中,v )表示节点m在第k层传递给节点对(j,_T )的相似度增量计算 值,即节点对(j, j ')沿入边方向经过k步游走,在节点m相遇的游历值之和; s' )= W m,k(J·,J·') (5) 其中,s' m(j,_f )表示该任务节点m带给节点对(j,j')的相似度增量计算值; 当迭代k = K次以后,迭代停止,相似度增量计算值矩阵存放的即为节点m传递给各节 点对的相似度增量计算值; 步骤5.主计算机计算各任务节点的偏移系数并分别发送给对应的各子计算机;偏移 系数为用于对各任务节点的相似度增量计算值进行修正的系数; 在所有子计算机完成步骤4后,主计算机根据接收到的每个子计算机发送的其各任务 节点传递给节点对(j, j ' ),= j时的相似度增量计算值V m,k(j, ),建立集合Set = {({x',k',y' },v' )},其中X'和y'均表示任意图节点,ν'表示节点X'在第k' =1,2,"%1(次迭代对节点对(7/,7/)的相似度增量计算值¥/!£^(7 /,7/),并用 Set(x',k',y')表示集合Set对应的元素ν' =v' x,,k,(y',y');构建集合Sco ={({x, k, y},v)},其中x和y均表示任意图节点,v表示以节点x为起点,经过k步游走, 在节点y发生首遇的游历值之和vx, k(y, y),并用Sc〇(x, k, y)表示集合Sco对应的元素v = vx,k(y,y);下面介绍集合Sco的更新方法: 以k = 1,2,…,K为迭代顺序更新集合Sco,在第k-Ι次迭代计算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,kp p)与从集合Set中查找出元素 Set(p,k2,y),且满足1^+1? = k,根据公式(6)计算得到偏差v" x,k(y,y),公式(6)如下:
(6) 再通过公式(7)计算得到Sco (X, k, y),公式(7)如下:
(7) C. 结束; 集合Sco更新完毕后,接下来通过公式(8)计算各个任务节点的偏移系数,
(8) S y为节点y的偏移系数,主计算机依据根节点的对应关系,将该偏移系数发送给相应 的子计算机; 步骤6.子计算机接收到其各任务节点的偏移系数之后对本地各任务节点的相似度增 量计算值进行修正,并将修正后的本地各任务节点的相似度增量进行求和后传送给主计算 机; 子计算机根据公式(9)对步骤4求得的本地相似度增量计算值进行修正,即 s(j,j')= 2ys' y(j,j')(1-δ y) (9) 其中s(j,j')表示节点对(j,j')的相似度,s' y(j,_f )表示节点y传递给节点 对(j,)的相似度增量计算值,其为不考虑所得到的游历是否为首遇游历的计算结果; S y表示任务节点y的偏移系数,其用于对任务节点y的相似度增量计算值进行修正;求和 符号内s' y(j,j' )(l_Sy)整体表示节点y传递给节点对(j,j')的相似度增量,为修 正后的节点y对应矩阵中的记录; 步骤7 :根据从各子计算机接收的各节点的相似度增量,主计算机对图模型中各节点 对的相似度进行整合,最终得到图模型中各个节点对的相似度; 主计算机接收到所有子计算机发送的各节点的相似度增量后,将对应节点对的相似度 增量相加,得到每个节点对的相似度值,再将每个节点与其自身的相似度修正为1. 0。
2.根据权利要求1所述的分布式计算图节点相似度的方法,其特征在于,步骤2所述的 建立图模型并发送给分布式计算平台中的每台子计算机,主计算机及各子计算机对该图模 型进行存储,存储的方法为: 主计算机以对象为节点,对象间关系为节点之间的边,建立图模型;主计算机以文本 形式对该图模型进行存储,每行存储节点tail的所有出邻居及出邻居入度,并为tail建 立索弓丨,存储结构如下:tail, (headn lUheadi) |),…(head|0(tail)|,|l(head|0(tail)|) |),其 中(tail, headz),z = 1, 2, ···, |〇(tail) I均为图中从节点tail到节点headz的有向边, I 0 (tail) I为tail的出度;11 (headz) I表示节点headz的入度;各子计算机将其接收的该 图模型以相同的存储结构存储于本地。
3.根据权利要求1所述的分布式计算图节点相似度的方法,其特征在于,步骤3所述的 主计算机将划分后的各子任务及迭代次数分配给各子计算机,其中迭代次数K根据式(1) 确定, (1) 其中,ε为用户所能容忍的误差大小;C为衰减因子,是介于0,1之间的常数。
【文档编号】H04L29/08GK104158840SQ201410323742
【公开日】2014年11月19日 申请日期:2014年7月9日 优先权日:2014年7月9日
【发明者】申德荣, 冯朔, 寇月, 聂铁铮, 王振华, 于戈 申请人:东北大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1