用于大规模网络社团检测的近线性时间算法

基于标签传播的局部社区检测算法

原论文题目:Near linear time algorithm to detect community structures in large-scale networks


  • 内容概要:
      文中提出了基于标签传播的局部社区检测算法,每个节点使用唯一的标签进行初始化,在算法的每轮迭代中,统计每个节点的邻居的标签的频数,采纳其邻居的最大频数的标签作为新标签,并随机使用一致的方法打破纽带,在这种方式下,标签在整个网络当中传播,紧密相连的节点组在标签上形成共识,最后,有着一样的标签的节点组成一个社区;可以看出,该算法非常简单高效,使用网络结构指导社团检测过程,不用优化任何关于社团强度的指标,并且,社团数目和社团大小不是作为算法的先验知识,而是由算法结果决定的。

  • 算法思想
      假设节点的邻居是 ,每个节点的标签表明其所属的社团,由其邻居的标签决定其所属的社团,文中假设节点会选择加入其具有最大标签数邻居所属的社团。首先使用唯一的标签初始化每个节点,让标签在整个网络当中传播,随着标签的传播,紧密相连的节点群会迅速以唯一的标签形成共识,当网络当中形成很多这样的密集组时,它们会继续向外扩展,最后,拥有相同标签的节点组成一个社团。

  • 标签更新方式
    同步更新:
      在第i次迭代时,节点 x x 基于其邻居在第i-1次时的标签来更新其标签:
    Cx(t)=f(Cx1(t1),Cx2(t1),...,Cxk(t1)) C x ( t ) = f ( C x 1 ( t − 1 ) , C x 2 ( t − 1 ) , . . . , C x k ( t − 1 ) )

    同步更新的问题是若网络中的子图是二部图或近似二部图的结构会造成标签震荡,在社区以星形的结构出现时尤其如此,因此文中使用异步更新方式。

    异步更新
    Cx(t)=f(Cxi1(t),...,Cxim(t),Cxi(m+1)(t1),...,Cxik(t1)) C x ( t ) = f ( C x i 1 ( t ) , . . . , C x i m ( t ) , C x i ( m + 1 ) ( t − 1 ) , . . . , C x i k ( t − 1 ) )

    其中, xi1,...,xim x i 1 , . . . , x i m x x 在本次迭代中已经更新的邻居节点, xi(m+1),...,xik x i ( m + 1 ) , . . . , x i k 是在本轮迭代中未更新标签 x x 的邻居。
    在迭代时,网络中的n个节点被更新的顺序是被随机选择的。算法的开始有n个不同的标签,标签数会随着迭代进行而减少。结果是只有和社区数一样多的不同标签。
  • 算法停止条件
      理想情况下,迭代过程应该继续直到网络中的n个节点标签不再改变。然而,存在一些网络的节点,其邻居中最大频数的标签的数目有两个或两个以上,其对应标签属于两个或以上的社区。由于算法是在可能的候选中随机地打破纽带的,这种节点的标签可能会随着迭代而改变,即使它的邻居的标签保持不变,因此,文中执行迭代过程直到每一个节点的标签都是其邻居标签频数最多所属的那个社区为止。这样就把网络分成了互不相交的社区,社区中的每个节点至少拥有与它在其它社区中一样多的邻居。如果 C1,...,Cp C 1 , . . . , C p 是网络中当前活跃的标签, dCji d i C j 是节点 i i 的有标签为 Cj C j 的邻居数,算法的停止条件是:
    ifihasCmthendCmi>=dCjij if i has C m then d i C m >= d i C j ∀ j
  • 算法步骤
    1.初始化网络当中的所有节点,对于给定的节点 x x , Cx(0)=x C x ( 0 ) = x
    2.令 t=1 t = 1
    3.给网络中的节点分配随机的顺序,节点集合设为 X X
    4.对于每个以特定顺序被选择的节点 xX x ∈ X ,令
    Cx(t)=f(Cxi1(t),...,Cxim(t),Cxi(m+1)(t1),...,Cxik(t1)) C x ( t ) = f ( C x i 1 ( t ) , . . . , C x i m ( t ) , C x i ( m + 1 ) ( t − 1 ) , . . . , C x i k ( t − 1 ) )

    5.如果达到终止条件,则算法停止,否则,令 t=t+1 t = t + 1 ,回到第三步。

你可能感兴趣的:(论文笔记)