You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于igraph中Leiden算法生成社区数量过多的技术问询

igraph实现的Leiden算法社区数量过多的原因及解决方法
  • 核心差异在于目标函数的默认设置:

    • igraph的cluster_leiden()默认使用**CPM(Constant Potts Model)**作为目标函数,分辨率参数resolution_parameter对应CPM的γ值,该参数的尺度与Modularity的分辨率完全不同,即使调低γ值,也可能生成更多社区。
    • leidenAlg包的find_partition_with_rep()默认使用Modularity作为目标函数,这与Louvain算法的优化目标一致,因此社区划分结果更接近Louvain。
  • 解决方法:在igraph的cluster_leiden()中显式指定目标函数为"modularity",并调整对应分辨率参数(默认值为1),即可得到与leidenAlg、Louvain相近的社区数量。

修改后的测试代码:

library(igraph)
library(leidenAlg)
G <- graph_from_literal(1-2:3-4:5-6:7-8:9-10:11-12-13-14:15-16,1-7,10:8-13)
clLouv <- cluster_louvain(G)
# 使用Modularity目标函数的Leiden
clLeid_mod <- cluster_leiden(G, objective_function = "modularity", resolution_parameter = 1, seed = 123)
cl_Leid_r <- find_partition_with_rep(G, edge_weights=E(G), seed = 123)

# 对比结果
clLouv$membership
clLeid_mod$membership
cl_Leid_r
  • 额外说明:Leiden算法是随机化算法,设置seed参数可固定随机初始状态,确保多次运行结果一致,便于对比不同实现的差异。

内容的提问来源于stack exchange,提问作者Sebastián

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:37:21