关闭

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

494人阅读 评论(0) 收藏 举报

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

 2299人阅读 评论(0) 收藏 举报
 分类:
 

复杂网络研究中的一个重要部分就是社团发现(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.

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

[python] view plain copy
 在CODE上查看代码片派生到我的代码片
  1. 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做的图:

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:7274次
    • 积分:115
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:23篇
    • 译文:0篇
    • 评论:0条
    文章分类