DEMON:a Local-First Discovery Method for Overlapping Communities

摘要:复杂网络的社团检测是一个有趣的问题,其有很多的应用,特别是在社交网络和信息网络的知识抽取任务上。然而,许多大型网络缺乏一个全局的特定社团组织,在这种情况下,传统的图划分算法在揭示嵌入在模块结构中的隐知识是不奏效的,因为它们给网络施加了一个从上到下的视角。我们在这里提出一个简单的local-first方法来做社团检测,它能够发现真实复杂网络中的模块结构,通过民主地让每一个节点在其全局系统内一定的视角内,给它能看到的、在其附近范围内的社团投票来实现,也就是,在它的自领域内使用标签传播算法,最后,局部社团被合并成一个全局的集合。我们测试了这个想法,与目前达到较高检测水平的重叠社团发现算法和非重叠社团发现算法进行比较,发现我们的新方法在获得高质量的社团上相比其它方法显然更具优势,通过使用抽取出来的社团预测几个真实世界网络的元数据来评估。我们还展示了我们的方法是如何确定的,完全递增的,并且有一个有限的时间复杂度,这样它就可以在大规模的真实网络中使用。


相关定义

定义两个基本的图操作:
1. Ego Network extraction EN:
给定一个图G和一个节点vV,EN(v,G)是子图G(V,E),V是包含节点v和在E中所有v的邻居的集合,EE的子集,包含所有的边(u,v),其中,uVvV
2. Graph-Vertex Difference g(v,G)
g(v,G)G的副本,不包括节点v和所有与v相连的边。
3.EgoMinusEgo(v,G) function:

EgoMinusEgo(v,G)=g(v,EN(v,G))

给定一个图G和一个节点vV,节点v的局部社团C(v)EgoMinusEgo(v,G)中的节点的集合的集合(可能会重叠),其中,每个集合CC(v)是根据节点相似性得到的社团,在C中的每个节点比C中的节点与其它在CC(v)的节点要更相似,最后,定义一个图G的全局社团的集合为:
C=Max(vVc(v))

这里,给定集合的集合S,Max(S)表示由它的最大集组成的子集;也就是说,对于每个SS,没有其它的集合SSSS.

具体算法

该算法比较简单,大体可以分三步:

1.对网络中所有的节点,应用EgoMinusEgo(v.G)函数,得到图e
2.对得到的图e应用标签传播算法,得到该图的社区集合C(v
3.对前一步得到的社区集合进行合并,得到最终的整个网络中的社区集合C
注意:在第一步中主要是抽取每个节点的自网络,但自网络不包含节点本身,原因是文中对局部社团的定义是如果节点与其它节点都相近的话,这些节点就应该放在同一个社区里。很显然,与整个子图中的所有节点都相连的单个节点会使得所有的节点都非常相似,会对算法的结果产生噪声,所以要把该节点移除。
算法的第三步是对第二步得到的社区集合进行合并,对于两个社区C,I,当且仅当较小的那个社区至多有ϵ%部分不被包含在较大的那个社区时,这两个社区应该被合并。

文中给出的算法的伪代码如下:

DEMON:a Local-First Discovery Method for Overlapping Communities
DEMON:a Local-First Discovery Method for Overlapping Communities