1. 程式人生 > >開源複雜網路分析軟體中社團發現演算法總結

開源複雜網路分析軟體中社團發現演算法總結

複雜網路研究中的一個重要部分就是社團發現(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.

而且在執行演算法的時候需要指定需要輸出的社團的最小規模,如:

  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做的圖: