cluster-analysis - 不同的社区检测算法 - 非常不同的结果
问题描述
我正在做社区级别的网络分析,我正在尝试检测我网络中的社区。我使用了三种不同的算法
(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 个社区)更好。但我真的不确定如何解释这种不同的结果。任何人都可以解释一下吗?非常感谢
解决方案
我不完全确定你在这里问的是什么,但让我大致了解一下。模块化分数反映了特定聚类算法在聚类顶点方面的表现。生成具有较高模块化分数的聚类结构的聚类算法比生成较低模块化分数的聚类算法“更好”。如果您在同一个网络中拥有三种不同的聚类算法,那么具有最高模块化分数的算法将是更好的选择,前提是它具有概念意义。据我了解,igraph 中的聚类算法是这样生成的,它们会生成一个聚类结构,对于所讨论的网络,该算法可能具有最佳的模块化得分。
推荐阅读
- python - 在 Python 中使用大小数解析固定宽度的文件
- python - sys.getsizeof 用于字符串和列表(字符串)
- python - 为原始字符串中的子字符串查找字符串的第一个索引 l?
- c - 如何在 C 中发送差分 UART 信号
- reactjs - 我应该使用克隆道具还是一次性更改道具并使道具进入状态
- laravel - 在 Laravel Collectives 中分配值以选择
- android - 在仍使用 android.support.* 的主机应用程序中使用 AndroidX 依赖库
- spring-boot - 取消 @ComponentScan 时 RestTemplete 组件的依赖关系不满足
- laravel - 为什么作曲家安装不能在cent os6上运行?
- excel - 如何使用 VBA 隐藏 Excel 365 箱线图中的内部点?