想象一幅巨大的社交地图:每个人是一个点,认识的人之间连一条线。如果你把这张地图放大来看,你会发现它并不是均匀分布的——人们天然地聚成一个个”部落”,有的以地域为界,有的以兴趣相连,有的因职业而集结。这种现象在互联网、大脑神经网络、蛋白质互作网络、乃至金融系统中普遍存在。
这就是社区发现(Community Detection)要解决的核心问题:如何让计算机自动在网络中找出这些”部落”?
听起来直觉上很简单,实则暗藏玄机。你马上会发现:“部落”到底是什么,取决于你怎么定义它。而这一问题的答案,在过去几十年里催生了一整个充满争论与惊喜的研究领域。[1][2]
📑 本文目录
一、网络里的部落:究竟在找什么?
在网络科学中,”社区”并不是一个精确定义的数学对象,而是一种直觉上合理、数学上有多种表达方式的结构。[1][2] 不同路线对应了截然不同的问题逻辑:
- 密度型:社区内的节点之间的连接,比它们与外部节点的连接更密集。这是最直觉的定义,也是模块度方法的出发点。
- 信息流型:如果在网络上随机游走,你的路径容易被”困”在某些区域——这些区域就是社区。惜词如金的 Infomap 算法用的就是这个思路。
- 生成模型型:假设整个网络是由若干”节点群体”按照不同的连接规则生成出来的,社区就是这些生成规则相同的节点集合。随机块模型(SBM)是典型代表。
这不是说哪种定义更”正确”——而是每种定义都在回答一个不同的问题。[1] 正如 Rosvall 等人在综述中指出的:
—— Rosvall et al., 2019 [1]
这个认识本身就很重要:下次当两种算法在同一张网络上给出不同答案,你不必困惑哪个”错了”——它们可能都是正确的,只是在回答不同的问题。
二、最流行的尺子:模块度与它的陷阱
在所有社区发现方法中,模块度(Modularity)是被引用最广泛的指标,也是最多算法试图最大化的目标函数。[2] 它的核心思想是:好的社区划分,应该使得”社区内部实际连接数”比”随机情况下预期连接数”多得多。
- m:网络中的边总数
- Aij:邻接矩阵,节点 i 和 j 之间是否有连接
- ki:节点 i 的度(有多少条连线)
- δ(ci, cj):如果 i 和 j 属于同一社区则为 1,否则为 0
翻译成人话:Q 值越高,说明网络里的”部落感”越强——同部落内部的连接,远比随机乱连要密得多。Q 的取值范围大致在 0 到 1 之间,实际应用中 Q > 0.3 通常被认为有较明显的社区结构。
然而,模块度最大化并不像看起来那么美好。研究者发现了两个根本性的缺陷:
缺陷一:分辨率极限
2007 年,Fortunato 和 Barthélemy 提出了一个令人不安的发现:当网络足够大时,模块度最大化会系统性地”看不见”真实存在的小社区——它会把它们错误地合并进大社区里去。[5]
就像卫星地图有最小分辨率——缩到足够小的时候,小村庄会被周围的城市”吞并”,在地图上消失。模块度同样有一个内置的”分辨率尺”:社区尺寸如果比这把尺短,它就识别不出来。这个问题随网络规模增大而恶化。[5][6]
缺陷二:模块度景观的”平原问题”
更麻烦的问题来自 Good、de Montjoye 和 Clauset 的分析:模块度的”得分景观”极其平坦——大量彼此差异很大的划分,都能拿到几乎相同的高分。[7]
研究者对真实网络进行分析,发现模块度最高分附近存在指数级数量的”次优解”,且这些解与最优解的社区结构可能差异显著。[7] 这意味着:即便你找到了”得分最高的划分”,也不能保证它就是最能反映真实结构的那个。
不一定。一次优化运行拿到的高分划分,可能只是众多同样高分划分中的随机一个。不同随机初始化可能给出完全不同的答案。稳妥的做法是多次运行、比较一致性,而不是迷信单次结果。[7][19]
模块度的变体层出不穷——有基于全局/局部差异的版本[8],有用 Z-Score 做统计显著性修正的版本[9]——但有研究者指出,引入多分辨率参数并不能从根本上解决这些问题,结果仍然强烈依赖网络规模与结构。[6]
三、Louvain 与 Leiden:两个拼图者的故事
知道了模块度是个好用但有缺陷的尺子,接下来的问题是:怎么高效地找到让模块度最高的划分? 对于大型网络,这是 NP-hard 问题,所以必须靠启发式算法。
Louvain:速度至上的贪心者
Louvain 算法是目前最广泛使用的社区发现算法之一。它的逻辑是贪心的:每次把一个节点移到让模块度增加最多的邻居社区,反复迭代直到无法提升为止,然后把每个社区压缩成一个”超级节点”,在新层级上重复。[4]
它的优势是极快——在数百万节点的网络上也能在秒级内给出结果。但问题是,快速贪心的代价是牺牲了结构质量检查。
Traag 等人证明,Louvain 算法可能产生内部不连通的社区——即所谓”社区”内部,有些节点之间根本没有路径可以不经过社区外部而互相到达。[3] 这在网络分析中相当于宣布:你找到的”部落”其实是两个互不相识的群体被强行放在一起。
Leiden:修补匠的反击
为了解决这些问题,Traag、Waltman 和 van Eck 在 2019 年提出了 Leiden 算法。[3] 关键改进是在贪心移动之外,增加了一个 精炼阶段(refinement phase):在合并社区之前,先把每个社区内部重新打散成子集,检查它们是否真的内部连通,再决定怎么合并。
| 维度 | Louvain | Leiden |
|---|---|---|
| 速度 | 极快 | 稍慢(增加精炼步骤) |
| 内部连通性 | 不保证(可能产生不连通社区) | 有保证 |
| 划分质量 | 启发式,无质量下界 | 通常更优或等优 |
| 适用规模 | 百万级节点可用 | 同级别可用 |
后续也有研究尝试对 Louvain 的不连通社区问题进行修补,但在新项目中直接选 Leiden 通常是更明智的默认选择。
更深的教训是:启发式方法的流行往往是因为速度,而非正确性。2023 年的一项系统评测发现,常见的模块度最大化启发式算法,往往既达不到理论上的全局最优,也可能离最优结构相差甚远。[19]
四、换一种问法:随机块模型
到目前为止,我们一直在谈”找边更密的团块”。但还有一条完全不同的路:不要去”测量”社区,而是去”推断”它们是怎么产生的。
这正是随机块模型(Stochastic Block Model, SBM)的思路。[10]
假设网络是这样生成的:每个节点属于某个”块”(block),块与块之间的连接概率是固定的(同一块内部可能很高,也可能不高)。给定一张网络,我们想反推:节点最可能是按哪种”块结构”生成出来的?
- θi:节点 i 的”连接倾向”参数(解释了为何有的人认识很多人,有的认识很少)
- ωcicj:节点 i 所在块与节点 j 所在块之间的连接强度参数
翻译成人话:节点 i 和 j 之间会不会有连接,取决于两件事:他们各自有多”爱社交”(θ 参数),以及他们所在的两个社区之间关系亲不亲密(ω 参数)。把这两件事分开考虑,比普通 SBM 更符合真实网络中”大 V 连接很多人”的现实。
Karrer 和 Newman 于 2011 年提出的度校正 SBM(degree-corrected SBM)[10],解决了标准 SBM 难以处理真实网络中”度分布高度不均匀”问题的根本缺陷。
SBM 路线有几个重要优势:
当然,SBM 的代价是计算开销:精确的贝叶斯推断在大网络上代价高昂。实用化方向包括正则化 SBM[13]、高效 MCMC 推断[11]等。
五、真实的部落:重叠、层级与多重归属
到目前为止,我们一直在讨论”每个节点恰好属于一个社区”的情形。但现实是:真实世界中的节点,往往同时隶属于多个群体。
你既是家庭成员,又是工作同事,又是羽毛球爱好者——这三个圈子里的你,在社交网络中不可能被干净地归入单一社区。[15]
重叠社区:节点的多重身份
重叠社区检测的系统综述[15](比较了 14 类算法)指出,允许重叠的方法在社会网络、生物网络等”天然重叠”的场景中表现更好,但计算复杂度通常也更高。
很多经典重叠社区方法只处理无权图(连接要么有要么没有)。但真实网络中边的强度往往大不相同——亲密朋友和点头之交在图中都只是”一条连线”,这显然不合理。Qing(2022)等人专门针对加权网络的重叠社区检测提出了新框架,更贴近真实应用场景。[17]
Cohen 等人(2017)展示了如何把 Louvain 风格的局部搜索逻辑推广到重叠场景——允许每个节点在局部移动过程中探索多社区归属,而不只是”选边站”。[16]
层级社区:部落中的部落
真实网络的另一个重要特征是层级性:部落内部有亚部落,亚部落内部还有更小的群体。Schaub 等人(2023)的研究专门建立了层级社区结构的理论框架[18],指出平面分区是对现实的过度简化。
国家 → 省 → 市 → 区 → 街道——这种层级本身就是有意义的信息,不同层级揭示不同粒度的社区结构。真实网络中的社区往往也有类似的”套娃”结构,而 Louvain 这样的算法只给你看一个固定粒度的切割。[18]
把重叠、层级、时间演化和多层关系放在一起,就会发现:任何单一算法都只能照亮真实网络结构的某一个侧面。[1] 这不是算法的失败,而是”社区”本身就是一个多维度概念的体现。
六、前沿:从优化到学习
社区发现领域最近十年最显著的趋势之一,是从”人工设计目标函数 → 贪心优化”转向”神经网络学习网络结构表示”。
Kojaku 等人(2024)在 Nature Communications 上发表了基于神经嵌入的社区发现方法。[20] 核心思路是:先用神经网络把每个节点映射到一个低维连续空间(嵌入向量),使得结构相似的节点在嵌入空间中距离近;然后在这个空间中做聚类,找到社区。
这类方法的优势在于:它可以同时利用网络的拓扑结构和节点属性信息,而不只是看”谁和谁有边”。这对知识图谱、学术引用网络等场景尤其有价值。
传统社区发现只看连接关系——谁认识谁。但如果每个节点还有属性(年龄、职业、兴趣),是否应该把这些信息纳入考量?纯图结构方法给不出答案;神经嵌入方法天然地为这个扩展提供了框架。当然,随之而来的问题是:到底是在发现”真实社区”,还是在发现”信息相似的群体”?这两者未必相同。
与此同时,传统统计推断路线也在持续进化:从固定 SBM 到正则化/鲁棒化版本[13],再到可以处理二部网络[14]等特殊结构的扩展,SBM 家族的边界在不断扩大。
领域的整体趋势可以用一句话概括:从”找答案”到”问对问题”。 不再满足于”给我一个划分”,而是更关注:这个划分稳定吗?能反映真实机制吗?不同方法的结果为什么不一致?
🧭 混沌笔记点评
- 社区没有唯一正确答案:不同方法优化不同目标,它们的分歧不是错误,而是对”社区”定义本身分歧的映射。[1][2]
- 模块度是把双刃剑:直觉合理、应用广泛,但有分辨率极限[5]和退化景观[7]两大根本缺陷,不能盲目信任单次最优结果。
- Leiden 比 Louvain 更可靠:在有足够计算资源时,优先选 Leiden,它对连通性有保证,整体质量更稳定。[3]
- SBM 是更诚实的框架:它明确地问”这张网是怎么产生的”,而不只是”边密不密”,适合需要可解释性的科学分析场景。[10]
- 真实网络是重叠且层级的:任何平面非重叠划分都是对现实的简化,在解读结果时要保持清醒。[15][18]
- 实践黄金法则:多种方法对比、多次运行检查稳定性、结合领域知识解读,比迷信某一个算法更重要。[19]
📚 参考文献
- Rosvall M, Dall J, Lancichinetti A, Larremore DB, Fortunato S. Different approaches to community detection. 2019. DOI: 10.1002/9781119483298.ch4 | arXiv
- Fortunato S. Community detection in graphs. Physics Reports. 2010. DOI: 10.1016/j.physrep.2009.11.002
- Traag VA, Waltman L, van Eck NJ. From Louvain to Leiden: guaranteeing well-connected communities. Scientific Reports. 2019. DOI: 10.1038/s41598-019-41695-z | PubMed
- Traag VA. Faster unfolding of communities: speeding up the Louvain algorithm. Physical Review E. 2015. DOI: 10.1103/PhysRevE.92.032801 | arXiv
- Fortunato S, Barthélemy M. Resolution limit in community detection. PNAS. 2007. DOI: 10.1073/pnas.0605965104
- Lancichinetti A, Radicchi F, Ramasco JJ, Fortunato S. Limits of modularity maximization in community detection. Physical Review E. 2011. DOI: 10.1103/PhysRevE.84.066122 | arXiv
- Good BH, de Montjoye YA, Clauset A. The performance of modularity maximization in practical contexts. Physical Review E. 2010. DOI: 10.1103/PhysRevE.81.046106 | arXiv
- Chen S, et al. Global vs local modularity for network community detection. PLOS ONE. 2018. DOI: 10.1371/journal.pone.0205284 | PubMed
- Miyauchi A, Kawase Y. Z-Score-Based Modularity for Community Detection in Networks. PLOS ONE. 2016. DOI: 10.1371/journal.pone.0147805 | PubMed
- Karrer B, Newman MEJ. Stochastic blockmodels and community structure in networks. Physical Review E. 2011. DOI: 10.1103/PhysRevE.83.016107
- McDaid AF, Greene D, Hurley N. Clustering in networks with the collapsed Stochastic Block Model. Statistical Analysis and Data Mining. 2013. arXiv
- Lei J, Rinaldo A. Consistency of spectral clustering in stochastic block models. Annals of Statistics. 2015. DOI: 10.1214/14-AOS1274 | arXiv
- Lu X, et al. A Regularized Stochastic Block Model for the robust community detection in complex networks. Scientific Reports. 2019. DOI: 10.1038/s41598-019-49580-5 | PubMed
- Yen T, et al. Community detection in bipartite networks with stochastic block models. Physical Review E. 2020. DOI: 10.1103/PhysRevE.102.032309 | PubMed
- Xie J, Kelley S, Szymanski BK. Overlapping Community Detection in Networks: the State of the Art and Comparative Study. ACM Computing Surveys. 2013. DOI: 10.1145/2501654.2501657 | arXiv
- Cohen Y, et al. Node-Centric Detection of Overlapping Communities in Social Networks. 2017. arXiv
- Qing H. Overlapping community detection in weighted networks. 2022. DOI: 10.1007/s00362-025-01758-y | arXiv
- Schaub MT, et al. Hierarchical community structure in networks. Physical Review E. 2023. DOI: 10.1103/PhysRevE.107.054305 | PubMed
- Aref S, et al. Heuristic Modularity Maximization Algorithms for Community Detection Rarely Return an Optimal Partition or Anything Similar. 2023. arXiv
- Kojaku S, et al. Network community detection via neural embeddings. Nature Communications. 2024. DOI: 10.1038/s41467-024-52355-w | PubMed