Social Network Analysis的Centrality總結,以及networkx實現EigenCentrality,PageRank和KatzCentrality的對比

來源:互聯網
上載者:User

標籤:影響   get   label   ted   oci   archive   env   analysis   開啟   

本文主要總結近期學習的Social Network Analysis(SNA)中的各種Centrality度量,我暫且翻譯為中心度。本文主要是實戰,理論方面幾乎沒有,因為對於龐大的SNA,我可能連門都沒有入,但是我覺得這不影響我理解原理後使用他們。

本文為原創,如有不小心侵權的問題出現,請聯絡本人刪除。本文不允許任何形式的轉載!!!

 

一、Centrality的定義

在SNA領域的centrality是用于衡量圖中節點的重要度,不同的centrlity演算法會對同一節點給出差異很大的centrality。如Wikipedia中的這幅圖。

圖片連結:https://en.wikipedia.org/wiki/Centrality

 

 二、Centrality的相關資源

1. wiki: https://en.wikipedia.org/wiki/Centrality

2. ttang pageRank networkx: http://www.cnblogs.com/fstang/archive/2013/06/01/3113352.html

3. 講network的一個網站:https://www.sci.unich.it/~francesc/teaching/network/

4. 各種語言的centrality代碼資源集合: http://www.centiserver.org/?q1=software

 

三、Networkx中的EigenCentrality, PageRank和KatzCentrality的對比

 本文主要考察的是EigenCentrality, PageRank和KatzCentrality之間的區別和聯絡。PageRank廣為人知,是Google對網頁排序的基礎方法之一。其實Google的PageRank和KatzCentrality都是EigenCentrality的變形。

EigenCentrality的基本思想跟google是一樣的,都是認為與得分(centrality)高的點相連的點更加重要。EigenCentrality就是用圖的鄰接矩陣來計算EigenCentrality(engenvector centrality,  特徵向量中心度)。具體的公式和推到可以參考上面給出的維基百科連結,代碼實現可以參考networkx,還有https://www.sci.unich.it/~francesc/teaching/network/,但是我開啟頁面,裡面的公式顯示有問題,這個網站的解釋非常的簡潔明了,適合入門,還有R代碼和相應的圖示範。

 

參考ttang的部落格,我做了EigenCentrality, PageRank和KatzCentrality的對比,在此表示由衷的感謝。ttang的pageRank實現代碼參考連結:

http://www.cnblogs.com/fstang/archive/2013/06/01/3113352.html

下面是本文的代碼實現:

 1 import matplotlib.pyplot as plt 2 import networkx as nx 3  4 G=nx.binomial_graph(10, 0.3, directed=True) #the graph 5 G.add_node(10); # add a sole node 6 layout = nx.spring_layout(G) 7  8 plt.figure("source graph") 9 nx.draw(G, pos=layout, node_color=‘y‘)10 11 plt.figure("eigenCentrality without personalization")12 pr=nx.eigenvector_centrality(G)13 print("eigenCentrality without personalization" ,pr)14 nx.draw(G, pos=layout, node_size=[x * 6000 for x in pr.values()],node_color=‘m‘,with_labels=True)15 16 plt.figure("eigenCentrality with personalization")17 pr=nx.eigenvector_centrality(G, nstart={0:1, 1:1, 2:10, 3:1, 4:1, 5:1, 6:1, 7:1, 8:1, 9:1, 10:1})18 print("eigenCentrality with personalization" ,pr)19 nx.draw(G, pos=layout, node_size=[x * 6000 for x in pr.values()],node_color=‘m‘,with_labels=True)20 21 plt.figure("pageRank without personalization")22 pr=nx.pagerank(G,alpha=0.85)23 print("pageRank without personallization", pr)24 nx.draw(G, pos=layout, node_size=[x * 6000 for x in pr.values()],node_color=‘m‘,with_labels=True)25 26 plt.figure("pageRank with personalization ")27 pr=nx.pagerank(G,alpha=0.85, personalization={0:1, 1:1, 2:10, 3:1, 4:1, 5:1, 6:1, 7:1, 8:1, 9:1, 10:1})28 print("pageRank with personalization" , pr)29 nx.draw(G, pos=layout, node_size=[x * 6000 for x in pr.values()],node_color=‘m‘,with_labels=True)30 31 plt.figure("katzcentrality without personalization")32 pr=nx.katz_centrality(G, alpha=0.3);33 print("katzcentrality without personallization ", pr)34 nx.draw(G, pos=layout, node_size=[x * 6000 for x in pr.values()],node_color=‘m‘,with_labels=True)35 36 plt.figure("katzcentrality with personalization")37 pr=nx.katz_centrality(G,alpha=0.3, nstart={0:1, 1:1, 2:10, 3:1, 4:1, 5:1, 6:1, 7:1, 8:1, 9:1, 10:1})38 print("katzcentrality with personalization" , pr)39 nx.draw(G, pos=layout, node_size=[x * 6000 for x in pr.values()],node_color=‘m‘,with_labels=True)40 plt.show()

這是畫出來的圖,自己跑一下看得清楚寫,這裡貼出來的圖只是示意。

最左邊一列是pageRank有無personalization,也就是節點預先設定的重要度的對比情況;

中間一列是eigenCentrality有無personalization的對比;

右邊一列是katzCentrality有無personalization的對比。

上次我看這個圖的時候,覺得節點預設重要度對pageRank演算法的影響很小,對katzCentrality的影響比較大,不過今天看,感覺好像都差不多。

由於節點10沒有邊與其它節點相連,有沒有pageRank的轉移機率,有沒有katzCentrality的beta,因此節點10在eigenCentrality裡centrality為0.

 

Social Network Analysis的Centrality總結,以及networkx實現EigenCentrality,PageRank和KatzCentrality的對比

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。