Fast unfolding of communities in large networks 中文翻译

Fast unfolding of communities in large networks 中文翻译

Blondel V D, Guillaume J L, Lambiotte R, et al. Fast unfolding of communities in large networks[J]. Journal of statistical mechanics: theory and experiment, 2008, 2008(10): P10008.

摘要

我们提出了一种简单的方法来提取大型网络的社区结构。 我们的方法是一种基于模块化优化的启发式方法。 在计算时间方面优于所有其他已知的社区检测方法。 此外,通过所谓的模块化衡量,所检测到的社区的质量非常好。 这首先是通过识别比利时260万用户的移动电话网络中的语言社区,并分析由1.18亿个节点和10亿多个链接组成的网络图来显示的。我们的算法的准确性也在自组织模块化网络上得到了验证。

Keywords

Random graphs, networks;Critical phenomena of socio-economic systems; Socio-economic networks
(随机图,网络;社会经济系统的关键现象;社会经济网络)

1 引言

社会、技术和信息系统通常可以用复杂的网络来描述,这些网络具有结合了组织和随机性的互连节点拓扑[1,2]。社交网络服务、移动电话网络或网络等大型网络的典型规模现在以百万计,而不是数十亿个节点,这些规模需要新的方法来从其结构中检索全面的信息。一个有前途的方法是将网络分解为子单元或社区,它们是一组高度互联的节点[3]。识别这些社区至关重要,因为它们可能有助于发现先验未知的功能模块,如信息网络中的主题或社交网络中的网络社区。此外,最终的元网络(其节点是社区)可用于可视化原始网络结构。

社区检测问题需要将网络划分为由密集连接的节点组成的社区,属于不同社区的节点只有稀疏连接。众所周知,这个优化问题的精确公式在计算上是难以处理的。因此,已经提出了几种算法来以相当快的方式找到相当好的分区。近年来,由于大型网络数据集的可用性不断提高以及网络对日常生活的影响,对快速算法的搜索引起了人们的极大兴趣。人们可以区分几种类型的社区检测算法:分裂算法检测社区间的链接并将其从网络中移除[4,5,6],凝聚算法递归地合并相似的节点/社区[7],优化方法基于目标函数的最大化[8,9,10]。由这些方法产生的分区的质量通常由所谓的分区模块化来衡量。分区的模块化是一个介于-1和1之间的标量值,它衡量社区内部的链接密度,而不是社区之间的链接密度[4,11]。在加权网络的情况下(加权网络是指其链路上具有权重的网络,例如两个移动电话用户之间的通信数量),如[12]的定义

Q = 1 2 m ∑ i , j [ A i j − k j k j 2 m ] δ ( c i , c j ) Q=\frac{1}{2m}\sum_{i,j}[A_{ij}-{\frac{k_jk_j}{2m}}]δ(c_i,c_j) Q=2m1i,j[Aij2mkjkj]δ(ci,cj)

其中 A i j A_{ij} Aij表示 i i i j j j 之间的边的权重, k i = ∑ j A i j k_i=\sum_jA_{ij} ki=jAij是附着到顶点 i i i 的边的权重之和, c i c_i ci 是顶点 i i i 被分配到的社区,如果u = v,则 δ δ δ 函数 δ ( u , v ) δ(u,v) δ(uv)为1,否则为0且 m = 1 2 ∑ i j A i j m=\frac12\sum_{ij}A_{ij} m=21ijAij

模块化已被用来比较通过不同方法获得的分区的质量,但也作为优化的目标函数[13]。不幸的是,精确模块化优化是一个计算困难的问题[14],因此在处理大型网络时,近似算法是必要的。Clauset等人[8]提出了在大型网络上优化模块化的最快近似算法。这种方法在于不断合并社区,优化模块化的生产。不幸的是,这种贪婪算法可能产生的模块化值明显低于使用模拟退火(simulated annealing)[15]所能找到的值。此外,文献[8]中提出的方法倾向于产生包含大部分节点的超级社区,即使在没有显著社区结构的合成网络上也是如此。这个人工制品还有一个缺点,就是大大降低了算法的速度,使其不适用于超过一百万个节点的网络。通过引入技巧来平衡被合并的社区的大小,从而加快运行时间,并使处理具有几百万个节点的网络成为可能,从而避免了这种不希望的影响[16]。

在这里插入图片描述

图1 算法步骤的可视化。每一关都由两个阶段组成:一个阶段通过只允许社区的局部变化来优化模块化;一种是聚集已发现的社区,以建立一个新的社区网络。迭代地重复这些过程,直到模块性不可能增加为止。

迄今为止,文献中涉及的最大的网络是一个由30739个节点组成的蛋白质相互作用网络[17],一个由一家大型在线零售商网站上销售的约40万件商品组成的网络[8],以及一个拥有约550万用户的日本社交网络系统[16]。这些尺寸仍有很大的改进空间。[18]考虑到截至今日,社交网络服务Facebook拥有约6400万活跃用户,移动网络运营商Vodaphone拥有约2亿客户,谷歌索引了数十亿个网页。让我们也注意到,在大多数大型网络中,例如上面列出的那些网络,有几个自然的组织层次——社区将自己分成子社区——因此希望获得揭示这种层次结构的社区检测方法[19]。

2 方法

我们现在介绍我们的算法,该算法可以在短时间内找到大型网络的高模块化分区,并为网络展现完整的分层社区结构,从而获得不同的社区检测分辨率。与所有其他社区检测算法相反,我们的算法面临的网络大小限制是由于存储容量有限,而不是计算时间有限:在1.18亿节点的网络中识别社区只需152分钟[20]。

我们的算法分为重复迭代的两个阶段。假设我们从N个节点的加权网络开始。
首先,我们为网络的每个节点分配一个不同的社区。因此,在这个初始分区中,有多少个节点就有多少个社区。然后,对于每个节点 i i i,我们考虑 i i i的邻居 j j j,并评估模块化的增益,这将通过将I从其社区中移除并将其放置在j的社区中来实现。然后,节点 i i i被放置在该增益最大的社区中(在平局的情况下,我们使用打破规则),但前提是该增益为正。如果没有积极的收获, i i i会留在原来的社区。这个过程对所有节点重复和顺序地应用,直到不能实现进一步的改进,然后第一阶段完成。让我们坚持这样一个事实,即一个节点可能被考虑多次,并且经常被考虑多次。当模块化达到局部最大值时,即当没有单独的移动可以提高模块化时,第一阶段停止。还应该注意,算法的输出取决于考虑节点的顺序。几个测试案例的初步结果似乎表明,节点的顺序对获得的模块化没有显著影响。然而,排序会影响计算时间。因此,选择顺序的问题是值得研究的,因为它可以提供很好的启发来提高计算时间。

算法效率的一部分源于这样一个事实,即通过将一个孤立的节点 i i i移动到一个社区 C C C中而获得的模块化增益 ∆ Q ∆Q Q可以很容易地计算出来:

∆ Q = [ ∑ i n + k i , i n 2 m − ( ∑ t o t + k i 2 m ) ] 2 − [ ∑ i n 2 m − ( ∑ t o t 2 m ) 2 − ( k i 2 m ) 2 ] ∆Q=[\frac{\sum_{in}+k_{i,in}}{2m}-(\frac{\sum_{tot}+k_i}{2m})]^2-[\frac{\sum_{in}}{2m}-(\frac{\sum_{tot}}{2m})^2-(\frac{k_i}{2m})^2] Q=[2min+ki,in(2mtot+ki)]2[2min(2mtot)2(2mki)2]

其中 ∑ i n \sum_{in} in是社区 C C C内链路权重之和, ∑ t o t \sum_{tot} tot C C C中节点的链路权重之和, k i k_i ki是节点 i i i的链路权重之和, k i , i n k_{i,in} ki,in是从 i i i C C C中节点的链路权重之和, m m m是网络中所有链路的权重之和。当节点 i i i从它的社区中移除时,一个相似的表达被用来评估模块化的变化。因此,在实践中,人们通过将 i i i从它的社区中移除,然后将它移到邻近的社区来评估模块化的变化。$$$$$$$$

该算法的第二阶段包括建立一个新的网络,其节点现在是在第一阶段发现的社区。为此,链接新节点之间的权重由相应两个社区中节点之间的链接权重之和给出[21]。同一社区的节点之间的链接会导致该社区在新网络中的自循环。一旦第二阶段完成,就有可能将算法的第一阶段重新应用于最终的加权网络并进行迭代。让我们用 p a s s pass pass来表示这两个阶段的组合。通过构造,元社区的数量在每次通过时减少,因此大部分计算时间在第一次通过时使用。迭代这些过程(见图1),直到不再有变化,并达到最大的模块化。该算法让人想起复杂网络的自相似性[22]自然地包含了等级观念,因为社区的社区是在这个过程中建立的。所构建的层次结构的高度由通过的次数决定,并且通常是一个小数目,这将在下面的一些示例中显示。

这个简单的算法有几个优点。第一,它的步骤直观,容易实现,结果无人监督。此外,该算法非常快,即在大型自组织模块化网络上的计算机模拟表明,其复杂性在典型和稀疏数据上是线性的。这是因为模块化的可能收益很容易用上面的公式计算,并且社区的数量在经过几次后急剧减少,因此大部分运行时间集中在第一次迭代上。由于我们算法的内在多层次特性,模块化的所谓分辨率限制问题似乎也被规避了。事实上,众所周知[23],模块化优化无法识别小于特定规模的社区,从而导致对纯模块化优化方法检测到的社区的分辨率限制。这一观察在我们的案例中只是部分相关,因为我们算法的第一阶段涉及单个节点从一个社区到另一个社区的位移。因此,通过逐个移动节点可以合并两个不同社区的概率非常低。在节点块被聚集之后,这些社区可能在以后的过程中被合并。然而,我们的算法为不同层次的组织提供了网络到社区的分解。例如,当应用于在[23]中提出的小团体网络时,小团体确实在最后的划分中被合并,但是它们在第一遍之后是不同的(见图2)。这一结果表明,我们的算法找到的中间解决方案也可能是有意义的,并且未覆盖的分层结构可能允许终端用户放大网络并以期望的分辨率观察其结构。

在这里插入图片描述

图2 我们已经将我们的方法应用于[23]中讨论的30个小组。小组由5个节点组成,通过单个链接相互连接。该算法的第一步是找到网络的自然分区。第二遍找到了模块化的全局最大值,其中派系被组合成两个一组。

在这里插入图片描述

图3。从比利时移动电话网络提取的社区网络的图形表示。这个网络上有大约20,000名2M客户.节点的大小与相应社区中的个体数量成比例,它在红绿标度上的颜色代表社区中使用的主要语言(红色代表法语,绿色代表荷兰语)。只绘制了由100多个客户组成的社区。请注意两个主要语言群之间的混合颜色中间社区。以更高的分辨率放大显示,它是由几个语言分离不太明显的子社区组成的。

在这里插入图片描述

图4。对于比利时移动电话网络中最大的社区,我们代表了社区的规模和使用社区主要语言的客户比例。除了一个拥有10000多名成员的社区外,所有社区的85%以上的成员都使用主要语言。

3 应用于大型网络

为了验证我们的算法的有效性,我们将其应用于许多通常用于效率比较的测试用例网络,并将其与其他三种社区检测算法进行了比较(见表1)。我们考虑的网络包括一个小型社交网络[24],一个由9000篇科学论文和引用的网络,一个因特网子网和一个由几十万个网页组成的网页网络(nd.edu公司域,见[27])。在所有情况下,我们可以观察到得到的模块化的快速性和大值。我们的方法优于所有其他方法。我们还将我们的方法应用于两个规模空前的网络:一个.uk域的子网,拥有3900万个节点和7.83亿个链接[28],以及一个由斯坦福网络爬虫程序获得的1.18亿个节点和10亿个链接的网络[28,29]。即使对于这些非常大的网络,计算时间也很短(分别为12分钟和152分钟),使得更大规模的网络(可能是10亿个节点)可以进行计算分析。值得注意的是,通过的次数通常很小。以空手道俱乐部[24]为例,只有3个pass:在第一个pass期间,网络的34个节点被划分为6个社区;第二个社区之后,只剩下4个社区;在第三个社区中,什么也没有发生,算法因此停止。在上面的例子中,传递的次数总是小于5。
在这里插入图片描述
表1 数值结果汇总。下表给出了Clauset,Newman and Moore[8],Pons and Latapy[7],Wakita and tsurmi[16]算法的性能,以及我们在不同规模网络中的社区检测算法的性能。对于每种方法/网络,该表显示了所实现的模块化和计算时间。空单元格对应于超过24小时的计算时间。我们的方法显然在计算机时间和模块化方面表现得更好。值得注意的是,WT发现移动电话网络的Q值很小。这种不好的模块化结果可能源于他们的启发式算法,即创建平衡的社区,而我们的方法在这个特定的网络中给出了不平衡的社区。

我们还通过在具有已知社区结构的自组织网络上应用来测试我们的算法的敏感性。为此,我们使用了由128个节点组成的网络,这些节点被分成4个社区,每个社区有32个节点[30]。属于同一社区的节点对用概率 p i n p_{in} pin链接,而属于不同社区的节点对用概率 p o u t p_{out} pout链接。通过测量正确识别的节点的比例和归一化互信息来评估该方法的准确性。在[30]中提出的基准中,对于 z o u t = 8 z_{out}=8 zout=8,正确识别的节点的分数为0.67,对于 z o u t = 7 z_{out}=7 zout=7,正确识别的节点的分数为0.92,对于 z o u t = 6 z_{out}=6 zout=6,正确识别的节点的分数为0.98,即,与Pons和Latapy [7]的算法以及Reichardt和Bornholdt [31]的算法的精度相似。据我们所知,只有两种算法比我们的精度更高,杜赫和阿里纳斯[32]的算法和[15]中首次提出的模拟退火方法,但它们的计算成本限制了它们对比这里考虑的网络小得多的网络的适用性。我们的算法也已经在其他基准上成功地进行了测试,例如在[19,33]中提出的那些基准。例如,在[33]提出的基准中,对于混合参数 k 3 k_3 k3高达35的宏社区,归一化互信息接近1。当达到0.5时,混合参数约为55。

为了验证所获得的社区,我们还将我们的算法应用于一个大型网络,该网络是根据一家比利时移动电话公司的记录构建的。这个网络在[34]中有详细的描述,它展示了社交网络的典型特征,如高聚类系数和厚尾度分布。该网络由260万客户组成,他们之间的加权链接占他们在6个月期间的电话总数。每个客户都由一个代理键来标识,代理键与几个条目相关联,例如他的年龄、性别、语言和他居住的地方的邮政编码。由于比利时的特殊情况,这个庞大的社会网络是非常特殊的,在比利时,两个主要的语言群体(法语和荷兰语)共存,这提供了一个通过观察社区的语言同质性来测试我们的社区检测方法的有效性的绝佳方式[35]。从更社会学的角度来看,突出社区的语言、宗教或种族同质性的可能性为描述一个国家的社会凝聚力和潜在脆弱性打开了视角[36]。

在这个特定的网络上,我们的社区检测算法已经确定了六个层次。在底层,每个客户都是自己的社区,而在顶层,有261个社区拥有100多个客户。这些社区约占所有客户的75%。我们对这261个社区进行了语言分析(见图3)。一个社区的同质性的特征是说该社区主要语言的人所占的百分比;当社区倾向于单语时,该数量为1。我们的分析表明,网络是高度隔离的,大多数社区几乎只讲一种语言。有36个社区拥有超过10000名客户,除了两个语言集群之间的一个社区之外,所有这些社区都有超过85%的成员说同一种语言(完整分布见图4)。更仔细地分析唯一一个语言分布更均衡的社区是很有意思的。我们的层次揭示算法允许我们通过考虑较低层算法提供的子社区来做到这一点。如图4所示,这些子社区彼此紧密相连,它们本身由不同的人群组成。在这些群体中,语言不再是一个歧视因素,他们可能对国家的融合和社区之间达成共识发挥关键作用[37]。人们可能真的想知道,如果图3中两个语言集群之间的接口社区被移除,会发生什么。

另一个有趣的观察与其他语言的存在有关。对于该特定移动电话运营商的客户,实际上有四种可能的语言声明:法语、荷兰语、英语或德语。有趣的是,尽管说英语的客户在所有社区中分布相当均匀,但超过60%的说德语的客户仅集中在一个社区。这大概是因为说德语的人主要集中在靠近德国的一个小区域,而说英语的人遍布全国。让我们最后观察一下,如图3所示,法语社区比荷兰语社区的联系更加紧密:平均而言,法语社区之间的联系比荷兰语社区之间的联系强54%。这两个子网络之间的结构差异似乎表明,这两个语言社区的特点是不同的社会行为,因此建议为社区寻找其他拓扑特征。

4 结论和讨论

我们引入了一种优化模块化的算法,可以研究前所未有的网络规模。我们进行实验的方法的限制是将网络存储在主存储器中,而不是计算时间。这种规模的变化,即从以前方法的约500万个节点到我们案例中的1亿多个节点,打开了令人兴奋的前景,因为复杂系统的模块化结构,如整个国家或互联网的巨大部分,现在可以被解开。我们的方法的准确性也已经在特定的模块化网络上进行了测试,并且与其他(慢得多的)社区检测方法相比表现出色。有趣的是,我们的算法的速度仍然可以通过使用一些简单的试探法来显著提高,例如,当模块性的增益低于给定的阈值时,停止我们的算法的第一阶段,或者从原始网络中移除1度(叶子)的节点,并在社区计算之后将它们添加回来。应该进一步研究这些启发式算法对网络最终划分的影响,以及在算法的第一阶段中节点排序所起的作用。

通过构造,我们的算法为网络展现了一个完整的分层社区结构,每一层都是由每次通过时找到的中间分区给出的。然而,在本文中,我们只验证了这个层次的顶层的准确性,即由我们的算法找到的最终分区,中间分区的准确性仍有待显示。然而,有几点表明,这些中间分区是有意义的。首先,中间分区对应于模块化的局部最大值,最大值是指不可能通过将一个单一“实体”从一个社区移动到相邻社区来增加模块化。在算法的第一遍中,这些实体是节点,但是在随后的遍中,它们对应于越来越大的节点集。因此,中间分区可被视为不同规模的模块化的局部最大值。在算法的第二阶段,节点的聚集允许发现越来越大的社区,从而利用许多复杂网络的自相似结构。第二,我们的算法找到的最终分区对于大范围的系统大小具有非常高的模块化值(例如,如表1所示,我们的算法在模块化方面的表现优于克劳塞特、纽曼和摩尔[8]、庞斯和拉塔皮[7]以及瓦基塔和楚鲁米的算法[16])。最后,考虑在我们算法的最后一遍找到的社区C是有启发性的。为了测试倒数第二遍发现的子社区的有效性,人们很容易将社区C视为一个新的网络,从而忽略了从C到网络其余部分的链接。通过在孤立的社区C上重新应用我们的算法,人们期望找到非常相似的子社区,因为每一步都涉及到局部优化。然而,这些都是非常定性的论据,我们的算法的多分辨率只有在详细查看具有已知层次结构或没有社区结构的adhoc网络中发现的层次结构(例如Erdos-Renyi随机图)或与其他包含可调的方法进行比较后才能得到确认决议[33,38,39]。

引用

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值