首页 > 解决方案 > 不同的社区检测算法 - 非常不同的结果

问题描述

我正在做社区级别的网络分析,我正在尝试检测我网络中的社区。我使用了三种不同的算法

(1)基于边缘介数的社区检测(Newman-Girvan)——检测到:50个社区,模块化0.1

ceb <- cluster_edge_betweenness(net) 
dendPlot(ceb, mode = "hclust")
plot(ceb, net, vertex.label = NA, edge.label = NA)

(2)基于传播标签的社区检测——检测4个社区,模块化0.4

clp <- cluster_label_prop(net)
plot(clp, net, vertex.label = NA, edge.label = NA)

(3)基于模块化贪婪优化的社区检测——检测5个社区,模块化

cfg <- cluster_fast_greedy(as.undirected(net))
plot(cfg, net, vertex.label = NA, edge.label = NA)

在我的数据中,我有在 5 个不同部门工作的员工(节点)。拥有 5 个社区是有意义的,更高的模块化(我认为)表明它比第一个结果(50 个社区)更好。但我真的不确定如何解释这种不同的结果。任何人都可以解释一下吗?非常感谢

标签: cluster-analysisigraphmodularitysnanetwork-analysis

解决方案


我不完全确定你在这里问的是什么,但让我大致了解一下。模块化分数反映了特定聚类算法在聚类顶点方面的表现。生成具有较高模块化分数的聚类结构的聚类算法比生成较低模块化分数的聚类算法“更好”。如果您在同一个网络中拥有三种不同的聚类算法,那么具有最高模块化分数的算法将是更好的选择,前提是它具有概念意义。据我了解,igraph 中的聚类算法是这样生成的,它们会生成一个聚类结构,对于所讨论的网络,该算法可能具有最佳的模块化得分。


推荐阅读