社区检测是复杂网络分析的核心任务,旨在识别节点密集连接的子集(社区),为生物网络功能解析、社交网络舆情分析等场景提供支撑。Louvain算法因高效性成为该领域经典工具,但Traag、Waltman与van Eck(2019)的研究揭示其关键缺陷——易生成不良连接或完全断开的社区。为此,研究者提出Leiden算法,通过流程优化实现连通性与性能的双重突破,相关实现已集成于R包leidenbase中,为实际应用提供便捷工具。
Louvain算法:流程与核心缺陷
算法流程
Louvain算法通过两阶段迭代优化质量函数,流程如下(Traag et al., 2019):
初始状态为 singleton 分区,每个节点独立构成一个社区;
局部移动阶段:将单个节点迁移至能最大提升质量函数的社区,形成初步分区;
网络聚合阶段:基于初步分区构建聚合网络,每个社区作为单个节点;
重复局部移动与聚合,直至质量函数无法进一步提升。
核心缺陷:断开社区的产生
Louvain算法的本质局限在于“仅关注单个节点的局部最优移动”,忽略社区整体连通性,导致断开社区——同一社区内部分节点需通过外部节点或边才能与其他节点连通,内部形成孤立子集群(Traag et al., 2019)。
这一缺陷的产生逻辑为:当社区中的“桥节点”(连接内部不同组件的关键节点)被迁移至其他社区时,原社区会分裂为多个孤立子集群;但剩余节点因各自在子集群内满足“局部最优”(内部连接紧密),算法不再调整,最终将分裂的集合误判为完整社区(Traag et al., 2019)。在骗贷团伙挖掘场景中,这类桥节点往往对应贷款中介——他们作为核心枢纽,连接着不同的骗贷参与者(如提供虚假材料的人、实际用款人等),是识别团伙网络结构的关键目标。
实验数据显示,Louvain算法检测的社区中,最高25%为不良连接社区(Amazon网络),最高16%为完全断开社区(DBLP网络),且迭代会加剧该问题,多数网络迭代后断开社区比例升高近10倍(Traag et al., 2019)。
核心质量函数:社区划分的评价标准
社区检测的质量由特定函数量化,主流包括模块化与CPM两种,均支持通过分辨率参数调节社区数量(Traag et al., 2019):
模块化(Modularity)
核心逻辑是最大化社区内实际边数与随机网络中预期边数的差异,公式为:
\(\mathcal{H}=\frac{1}{2\mathrm{m}} \sum_{\mathrm{c}}\left(\mathrm{e}_{\mathrm{c}}-\gamma \frac{\mathrm{K}_{\mathrm{c}}^2}{2\mathrm{m}}\right)\)
其中, \(\mathrm{e}_{\mathrm{c}}\) 为社区 \(\mathrm{c}\) 内实际边数, \(\mathrm{K}_{\mathrm{c}}\) 为社区 \(\mathrm{c}\) 节点度之和, \(\mathrm{m}\) 为网络总边数, \(\gamma>0\) 为分辨率参数(值越高生成社区越多,值越低生成社区越少)。该函数存在分辨率限制,可能将小社区聚类为大社区。
CPM(Constant Potts Model)
克服模块化的分辨率限制,采用阈值逻辑定义社区,公式为:
\(\mathcal{H}=\sum_{\mathrm{c}}\left[\mathrm{e}_{\mathrm{c}}-\gamma\left(\begin{array}{c}\mathrm{n}_{\mathrm{c}} \\ 2\end{array}\right)\right]\)
其中, \(\mathrm{n}_{\mathrm{c}}\) 为社区 \(\mathrm{c}\) 的节点数, \(\gamma\) 为密度阈值——社区内密度需≥ \(\gamma\) ,社区间密度需< \(\gamma\) ,分辨率调节逻辑与模块化一致。
需注意,Louvain算法的缺陷与质量函数无关,即便使用CPM仍会生成断开社区(Traag et al., 2019)。
Leiden算法:改进与理论保证
算法流程优化
Leiden算法在Louvain基础上新增“分区细化”阶段,形成三阶段迭代流程(Traag et al., 2019):
局部移动阶段:采用快速局部移动策略,仅访问邻居社区发生变化的节点,通过队列管理减少无效计算;
分区细化阶段:在局部移动生成的分区内,仅在原社区边界内随机合并节点( \(\theta\) 参数控制随机性,仅保留提升质量函数的合并),拆分内部断开的子集群;
网络聚合阶段:基于细化分区构建聚合网络,以原分区为初始参考,支持迭代优化。
该流程中,分区细化是解决断开社区问题的核心——通过在社区内部拆分孤立子集群,确保最终输出的社区均满足内部连通(Traag et al., 2019)。
理论保证
Leiden算法提供Louvain不具备的多重理论保证(Traag et al., 2019):
每轮迭代后,社区满足 \(\gamma\) -连通性,确保内部节点可通过内部边互相到达;
迭代收敛后,社区达到子集最优(所有子集均局部最优)与均匀 \(\gamma\) -稠密(无任何子集可从社区分离)。
工具实现:leidenbase包
leidenbase(v0.1.9)是Leiden算法的R语言接口,集成了官方leidenalg的核心源码与R语言igraph包的功能,为研究者提供便捷的社区检测工具(cole-trapnell-lab, 2022)。该包支持基础分区求解,提供详细使用示例(参见vignette:https://cran.r-project.org/web/packages/leidenbase/vignettes/leidenbase.html),适用于各类复杂网络数据的社区分析场景(cole-trapnell-lab, 2022)。
实验验证:性能与质量的改进
Traag等人(2019)在6个真实网络(节点数31.7万至3.9亿)与基准网络中验证了Leiden的优越性:
速度:Leiden比Louvain快2-20倍,网络规模越大优势越显著。Web UK网络(3.9亿节点)中,Leiden速度是Louvain的20倍以上;Web of Science网络(981万节点)中,Leiden首轮迭代仅需110-120秒;
质量:所有网络中Leiden的模块度均高于Louvain,例如Live Journal网络模块度从0.7653提升至0.7739,Web of Science网络从0.7911提升至0.7951;
连通性:Leiden完全消除断开社区,迭代后不良连接社区比例持续下降,收敛后无不良连接社区。
结语
Louvain算法的断开社区缺陷限制了其在高精度场景的应用,而Leiden算法通过流程优化与理论保障,实现了连通性、效率与质量的全面超越。leidenbase等工具的推出,进一步降低了Leiden算法的应用门槛。该算法为复杂网络社区检测提供了更可靠的解决方案,后续研究围绕并行化、动态社区追踪等方向的拓展,将推动其在超大规模网络分析中的深度应用。
参考文献
Traag, V. A., Waltman, L., & van Eck, N. J. (2019). From Louvain to Leiden: guaranteeing well-connected communities. Scientific Reports, 9(5233), https://doi.org/10.1038/s41598-019-41695-z
cole-trapnell-lab. (2022). leidenbase v0.1.9 [R package]. https://cran.r-project.org/package=leidenbase