更改

跳到导航 跳到搜索
添加17,316字节 、 2020年3月26日 (四) 13:05
{{#seo:
|keywords=社团结构 社团检测算法 网络的共同特征
|description= 社团结构 社团检测算法 网络的共同特征 }}

在网络科学研究中,如果某个网络中的节点可以轻易地被划分为若干个内部紧密连接的节点集(集合间可能重合),那么就可以说这个网络具有'''社团结构 Community structure'''。在节点集不重叠的特殊情况下,网络自然地被分成一个个节点集,这些节点集内部连接紧密而节点集与节点集之间连接稀疏(但也存在节点集重叠的情况)。 更广泛的定义基于这样一个原则:即如果节点对都属于同一个社团,则更有可能相互连接;如果它们不属于同一个社团,则更不可能相互连接。 一个相关但不同的问题是社团搜索,其目标是找到某个节点所属的社团。


==属性==


在研究计算机、信息网络、社会网络和生物网络等网络时,经常发现网络具有许多不同的特征,包括'''小世界性 Small-world property'''、'''重尾度分布 Heavy-tailed degree distributions '''和'''聚集性 Clustering '''等。 而网络也具有共同特征——都具有社团结构。社团结构指的是网络中内部连接比其余部分更加密集的节点组。 这种联系的不均匀性表明网络内部存在某种自然的划分。将节点集进行划分,就产生了一个个社团。也就是说,每个节点被放入一个社团中,且该社团唯一,这是一个有用的简化,多数社团检测算法都适用于这种类型的社团结构。 然而,在某些情况下,则是一个节点位于多个社团(即社团具有重叠性 )的社团结构能够更好表示所研究的对象。这可能发生在社交网络中:每个节点代表一个人,而社团代表不同的朋友群体,如: 一个社团代表家庭,另一个社团代表同事,还有一个社团代表来自同一体育俱乐部的朋友等等。 下面所讨论的'''基于团结构的社团检测算法 Clique-based method '''的例子,就属于这种具有重叠性的社团结构。


有些网络可能不具有任何有意义的社团结构。例如许多基本的网络模型,例如'''随机图 Random graph '''和 '''Barabsi-Albert 模型 Barabási–Albert model '''就不具有社团结构。

==重要性==


[[File:iimage.png|500px|thumb|upright=3|一个演示社团结构的小型网络草图,包含三组内部紧密连接的节点,各组之间连接较为稀疏|right]]
社团结构在实际网络中相当常见,社会网络包括基于共同位置、兴趣、职业等的社团团体(实际上是这个术语的起源)。在网络中找到一个潜在的社团结构(如果它存在的话)是很重要的,重要原因有很多:


首先,社团允许我们创建一个大范围的网络地图,因为单个社团就像网络中的元节点,这使得研究更加容易;其次,由于社团通常与系统的功能单元相对应,因此单个社团也能阐明网络所代表的系统功能。如在代谢网络中,这些功能组对应于周期或路径;而在'''蛋白质相互作用网络 Protein interaction network '''中,社团对应于生物细胞内具有类似功能的蛋白质;在引用网络中,社团对应于研究主题。 而识别网络中的子结构,有助于深入了解网络的功能以及拓扑效应之间是如何相互影响的。这种见解对于改进'''谱聚类 Spectral clustering '''等图的数据处理算法有一定的参考价值。


此外,社团的重要性还体现在:它们的属性通常与网络的普遍属性迥异。因此,只关注普遍属性通常会忽略网络内部许多重要且有趣的特性。例如,在一个给定的社交网络中,爱交际的群体和沉默寡言的群体可能同时存在。


其次,社团的存在通常也会影响到传播过程,如在网络上发生的谣言传播或流行病传播。 因此,为了正确理解这些过程,最重要的就是检测社团,并研究它们如何在各种环境下影响传播过程。


最后,社团检测在网络科学中的一个重要应用是预测网络中的缺失链接和识别网络中的错误链接。 在测量过程中,由于多种原因,有些链接可能无法被观察到。 同样,由于测量中的失误,一些链接可能会错误地输入数据。 社团检测算法很好地处理了这两种情况,因为它允许给定节点对之间存在连边。

==社团检测算法==


在任意网络中检测社团可能是一项困难的计算任务。 网络中的社团数目(如果存在的话)通常是未知的,且社团规模和密度往往不同。尽管存在这些困难,一些检测社团的方法已经被发展和应用,并取得了不同程度的成功。

===最小割法===


将网络划分为若干部分的最古老的算法之一是最小割法(以及诸如比率割法和归一化割法等变体)。 此方法可用于并行计算的负载平衡,尽可能减少处理器节点之间的通信。


在最小割法中,网络被分割成预定数量且大小相似的部分,选择这些部分使得节点组之间的边数达到最小。这种算法在许多应用程序中运行良好,但并不适用于检测一般网络中的社团结构,因为不论社团是否隐含在结构中,它只能找到数目固定的社团,而社团的数目通常是未知的。


===层次聚类===


在网络中检测社团结构的另一种方法是'''层次聚类 Hierarchical clustering '''。 在这种算法中,定义了一种'''相似性度量 Similarity measure ''',去量化节点对之间的某些(通常是拓扑的)相似性。 常用的测量方法包括'''余弦距离健康指数 Cosine similarity '''、'''雅卡德指数 Jaccard index ''',以及'''汉明距离健康指数邻接矩阵 Hamming distance between rows of the adjacency matrix '''。 然后根据该算法将相似的节点分组到同一个社团中。


有几种常见的分组方案,其中最简单的两种是单链接聚类和'''完全链接聚类 Complete linkage clustering '''。前者在不同群组中的所有节点对的相似度小于给定的阈值的情况下,将两个群组视为独立的社团; 后者则是在每个群组中的所有节点对的相似度大于给定的阈值的前提之下进行分组。 一个有趣的方法是使用各种相似或不同的测度,通过'''凸和 convex sums '''来改进层次聚类的性能。



===Girvan-Newman 社团检测算法===


另一个常见的社团检测算法是 '''Girvan-Newman 算法 Girvan–Newman algorithm ''':首先识别社群之间连接的边,然后去除这些边,留下的就是社团。 该方法利用图论中的中心性度量来进行识别,当边位于多对节点之间时,给每条边赋予一个较大的数字。


'''Girvan-Newman算法'''返回的结果具有较好的质量,且由于它与许多标准软件包兼容,因此得到广泛应用。但其运行缓慢,在''n''个顶点和''m''条边的网络上耗费时长为''O(m2n)'',导致其并不适用于超过几千个节点的网络。

===模板度最大值===


尽管模板度最大值法有着它众所周知的缺点,但它依然是用于使用最为广泛的社团检测算法之一。 [[模块度 Modularity]]是一种衡量社团划分质量的标准,也是一个利益函数。 模块度最大值法通过搜索一个或多个具有特别高的模块化的网络的可能划分来检测社团。由于对所有可能的划分进行穷举搜索十分困难,所以实际的算法都是基于近似优化方法,如贪婪算法,模拟退火或光谱优化。不同的算法使得检测速度和准确性之间达到不同类型的平衡。 一种流行的模块度最大值法是 '''Louvain 算法 Louvain method ''',该算法迭代地优化本地社团,直到社团状态不再变化、全局模块化不能够再得到改善。 一个利用RenEEL的算法是当前最优良的模块度最大值算法,该算法是一个极值集成学习'''EEL范式 Extremal Ensemble Learning paradigm '''的例子。


模块度优化的有效性是值得怀疑的,因为已经证明模块度优化受分辨率的大小限制,这导致我们往往不能检测到比某个规模更小的集群; 另一方面,由于模块度值表征着具有高模块化的大量分区的简并度,接近绝对最大值,这可能与其他算法非常的不同。

===基于推论统计学的社团检测算法===


基于'''推论统计学 statistical inference ''' 的算法试图将'''生成模型数据 generative model '''和能对社团结构进行编码的网络数据相匹配。 与其他办法相比,这种办法的总体优势在于其原则性更强,而且有能力从根本上解决具有统计意义的问题。 文献中的算法大多是基于'''随机块模型 The stochastic block model '''以及混合隶属度、程度校正、层次结构等变量。 模型选择可以使用一些有原则的算法,例如最小描述长度(或贝叶斯模型选择)和似然比检定。 目前有许多算法可以对随机块模型进行有效的推理,包括置信传播和凝聚蒙特卡罗算法。与尝试给定目标函数对网络进行聚类的算法不同,这类算法是基于生成模型的。生成模型不仅可以描述网络的大规模结构,而且可以用来归纳数据和发现网络中的缺失或虚假链路。

===基于团结构的社团检测算法===


团就是一个无向图的完全子图,团中的每个节点都与团中的其他节点相连。 由于节点之间的联系不可能比这更紧密,所以在网络中产生了很多基于团结构的社团检测算法,由此还可以分析具有重叠性的社团结构。在这些算法中,一个节点可以同时属于多个社团,从而形成一个“重叠的社团结构”。


如果一个团不被其他任一团所包含,即它不是其他任一团的真子集,则称该团为图的'''极大团 maximal clique''' 。基于团的社团检测算法其中的一种方法就是找到“极大团” 。(其简单思想是:生成原始图的所有子图(可能有2n-1个子图,n表示节点个数)→判断这些子图是不是团→删除非极大团的其他团)其中, '''Bron-Kerbosch 算法 The Bron–Kerbosch algorithm ''' 是找到极大团的经典算法之一。 最简单的方法是只考虑大于最小尺寸(节点数)的极大团。 这些团体的联合被定义为一个子图,其组件(断开的部分)被定义为社团。 这些算法通常在诸如 UCInet 这样的'''社交网络分析软件 social network analysis software '''中实现。


另一种方法是使用固定大小的团体,设大小为''k''。 这些图的重叠可以用来定义一类 ''k''- 正则超图或一种团图(线图的一种推广,此时''k''=2)。团图的节点表示原始图中的团,而团图的边则记录原始图中团的重叠。将以前的社团检测算法(将每个节点分配给社团)应用到团图,然后将每个团图分配给社团,进而可以使用它来确定派系中节点间的关系。同样,由于节点可能处于多个小团体中,所以它可以是多个社团的成员。例如,'''团渗透算法 clique percolation '''将社团定义为 ''k''-clique的渗透集群。 为了做到这一点,需找到一个网络中的所有 ''k'' 派系,即所有完整子图的 ''k'' 个节点。然后定义两个共享 ''k-1''个节点的 '''''k''-cliques ''k'' -团 '''为相邻的 ''k''-cliques,即用于定义团图中的边。然后将社团定义为''k''-clique的最大并集,其中任意 ''k''-clique 可以通过一系列''k''-clique邻接,从任意''k''-clique 到达其他''k''-clique 。 也就是说,社团只是团图中的连通组件。 由于一个节点可以同时属于几个不同的''k''-clique渗透簇,故社团之间可以相互重叠。

==社团检测算法的评价标准==


如何对算法进行评价以判断哪些能够更好地检测到社团结构仍悬而未决,必须基于对已知结构的网络的分析。 一个典型的例子是”四组”测试,在这种测试中,一个网络被分成四个大小相等的组(通常每组32个节点) ,由于组内和组间连接的概率各不相同,导致出现了一些具有挑战性的社团结构,这为社团检测制造了一定难度。这样的基准图是康德 Condon 和 卡帕 Karp 的'''种植 l-分区模型 The planted l-partition model '''的特例,或者也是'''“随机块模型” Stochastic block models '''(一类包含社团结构的随机网络模型)更一般的情形。此外,还提出了其他更灵活的基准测试,允许不同的组大小和非平凡度分布。例如 '''LFR 基准测试 LFR benchmark ''' ,它是四组基准测试的扩展,包括节点度和社团大小的不同分布,能够更加严格地评价社团检测算法。


常用的计算机生成基准测试从定义良好的社团网络开始。这种结构由于重新布线或删除链接而退化,使得算法越来越难以检测到原始分区。最后,网络到达一个随机点。这种基准可以称为是“开放的”。这些基准的性能是通过'''标准化互信息 Normalized mutual information ''' 或'''信息变化 Variation of information '''等度量来评估的。 他们将算法得到的解与原来的社团结构进行比较,评估两个分区的相似性。

==可探测性==


近年来,在对各种社团的研究中,我们得到一个相当惊人的结果——社团检测问题存在阶段性转变,这表明随着社团内部和社团之间连接的密度越来越接近或两者都变得越来越小(由于社团结构变得太弱或网络变得太稀疏) ,社团就会突然变得无法检测。


从某种意义上说,社团本身仍然存在,因为边的存在和缺失仍然与其节点的社团成员关系密切;但是,从理论上讲,如果没有社团结构,就不可能更好地标记节点,甚至不可能将图与由'''Erdos-Renyi模型 Erdos–Renyi model '''等空模型生成的图区分开来。这种转换与用于检测社团的算法类型无关,这意味着我们在网络中检测社团的能力存在根本的限制,即使我们使用最优的贝叶斯推理(而不考虑我们的计算资源)。


考虑一个具有 ''n'' 个节点,''q''=2 的相同组的随机块模型,并且设[[File:Putin_(1).png|30px]][[File:putout.png|40px]]分别是组内和组间的连接概率。


如果[[File:ppppinpout.png|90px]],由于社团内部的链接密度大于群体之间的链接密度,网络将具有群体结构。


在稀疏情况下,[[File:Putin_(1).png|30px]]和[[File:putout.png|40px]]都以[[File:O_n.png|50px]]为比例,所以平均温度是恒定的,则有:

[[File:Pin_n.png|120px]]和[[File:Pppinot_N.png|140px]]



然后就不可能在下列情况检测到这些社团:
[[File:Cin_Cout.png|220px]]

==进一步阅读==

*[https://en.wikipedia.org/wiki/Complex_network 复杂网络]
*[https://en.wikipedia.org/wiki/Hierarchy 层次结构]
*[https://en.wikipedia.org/wiki/Network_theory 网络理论]
*[https://en.wikipedia.org/wiki/Percolation_theory 逾渗理论]



==相关链接==

*[http://digitalinterface.blogspot.it/2013/05/community-detection-in-graphs.html 图中的社团检测——介绍]
*[https://stackoverflow.com/questions/5822265/are-there-implementations-of-algorithms-for-community-detection-in-graphs 是否有图形社团检测算法的实现?-堆栈溢出]
*[https://stackoverflow.com/questions/9471906/what-are-the-differences-between-community-detection-algorithms-in-igraph 在 igraph 中,社团检测算法之间有什么不同?-]

==编者推荐==

[[File:shetuanjiegou.png|300px|thumb|upright=3|[http://campus.swarma.org/play/user/record?type=4 复杂网络课程中详细介绍了社团结构的定义、划分方法、空间结构 ]|right]]
下是关于集智俱乐部关于社团结构的一些文章
*[https://mp.weixin.qq.com/s/Rb8urqGtcGtgjVleYQmrSA 如何检测社团内的嵌套结构]
*[https://mp.weixin.qq.com/s/ZOI-ItIstrqTCHs1QKWUUg Nature通讯:科学家兴趣转移愈发频繁,但对科研生涯可能不利] 中利用快速展开算法识别科学家的每个共引网络的社团
*[https://mp.weixin.qq.com/s/A9HUh-sCU57EvKQBjDiecw 复杂性文摘翻译 | 集智开新专栏啦! 中第五点欧洲议会的推特转发网络:社团结构评估]
*[https://mp.weixin.qq.com/s/qUpUTEbsDrztSiU3IB-kMQ 论文解读:网络社团划分算法居然还能解决区域划分争端?]
若还想再进一步了解社团结构
*[https://kns.cnki.net/kns/detail/detail.aspx? 复杂网络中的社团结构分析算法研究综述]
*[https://kns.cnki.net/kns/detail/detail.aspx? 复杂网络中的社团结构]
*[http://arxiv.org/abs/1912.11420 基于生成性概率方法的带 节点特征的网络社区结构检测]

本中文词条由趣木木用户参与编译,刘佩佩用户审校,[[用户:Meng莫|Meng莫]]编辑,欢迎在讨论页面留言


'''本词条内容源自wikipedia及公开资料,遵守 CC3.0协议。'''
504

个编辑

导航菜单