关于cluster_optimal()未生成最大模块化分区的技术咨询
关于igraph中cluster_optimal()与模块化结果的疑问解答
核心误解:你混淆了不同分辨率下的模块化计算
cluster_optimal()的目标是最大化标准模块化(对应分辨率参数γ=1的情况),而你调用cluster_louvain()时指定了resolution = 0.5,这时候计算的是调整分辨率后的模块化——二者的目标函数完全不同,不能直接对比数值。验证方法很简单,把louvain的分辨率改回默认的1,再看结果:
louvain_default <- cluster_louvain(karate) modularity(louvain_default)这个值会和cluster_optimal()的结果(0.4449左右)一致或非常接近,因为此时两者优化的是同一个目标。
如何确认GLPK支持情况
在R的igraph中,直接运行以下代码就能检查:igraph::has_glpk()如果返回
TRUE,说明你的igraph编译时包含了GLPK,cluster_optimal()会使用精确算法找到γ=1下的最优分区;如果返回FALSE,cluster_optimal()通常会直接报错(无法运行精确算法),而你的代码能正常运行并得到结果,大概率是已经有GLPK支持了。
额外说明:分辨率参数γ的作用是调整社区划分的粒度——γ越小,越容易形成大社区,此时计算的模块化值可能更高,但这不是cluster_optimal()要优化的“标准模块化”。
内容的提问来源于stack exchange,提问作者Zachary
相关产品推荐
相关产品推荐

