开源复杂网络分析软件中社团发现算法总结

复杂网络研究中的一个重要部分就是社团发现(Community Detection)算法的研究,密歇根大学物理学系教授Mark Newman就主要在社团发现方面做出了很多贡献。今天简单总结一下几个开源复杂网络分析软件中的社团发现算法:

首先是NetworkX,这个软件非常好用,功能强大,文档清晰。我也写过多篇日志介绍。遗憾的是NetworkX的社团发现算法很简单,按照这里的介绍,其主要实现了下面这个算法:

G. Palla, I. Derényi, I. Farkas, and T. Vicsek, “Uncovering the overlapping community structure of complex networks in nature and society,” Nature, vol. 435, pp. 814-818, 2005.

而且在运行算法的时候需要指定需要输出的社团的最小规模,如:

c = list(nx.k_clique_communities(G, 4))

这样c中包含了所有社团大小大于等于4的所有社团。

其次是Gephi,这个软件在很多方面也很强大,例如复杂网络可视化等。但是社团发现算法也比较单一,打开其界面后,点击右侧的“模块化”,就可以使用下面的算法进行分析:

V. D. Blondel, J. Guillaume, R. Lambiotte, and E. Lefebvre, “Fast unfolding of communities in large networks,” Journal of Statistical Mechanics: Theory and Experiment, vol. 2008, p. P10008, 2008.

Gephi支持相应的模块度(Modularity)的计算,也支持社团划分结果的输出。

上面两个软件的功能都比较单一,经过查阅文献,我们发现有些论文用到了igraph这个软件包,这个包支持R,C语言和Python,如果之前使用NetworkX,可以无缝地和这个软件整合起来,igraph实现了较多的社团划分算法,可以参考其Reference Manual查找。例如下列算法其都实现了:

M. E. Newman and M. Girvan, “Finding and evaluating community structure in networks,” Physical review E, vol. 69, p. 026113, 2004.

A. Clauset, M. E. Newman and C. Moore, “Finding community structure in very large networks,” Physical review E, vol. 70, p. 066111, 2004.

U. N. Raghavan, R. Albert and S. Kumara, “Near linear time algorithm to detect community structures in large-scale networks,” Physical Review E, vol. 76, p. 036106, 2007.

总体上来讲,igraph实现的Community Detection算法最多,而且可以通过Python和NetworkX无缝衔接,至于NetworkX和Gephi,我之前有一篇日志,介绍了两者的网络数据可以如何转化。就总结这么多。最后附上一张我在论文里用Gephi做的图:


  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值