Social Network Analysis的Centrality总结,以及networkx实现EigenCentrality,PageRank和KatzCentrality的对比

本文主要总结近期学习的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.

时间: 2024-12-17 10:11:11

Social Network Analysis的Centrality总结,以及networkx实现EigenCentrality,PageRank和KatzCentrality的对比的相关文章

IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 Industry Track Call for Papers

IEEE/ACM International Conference on Advances in Social Network Analysis and Mining (ASONAM) 2014 Industry Track Call for Papers Beijing China August 17-20, 2014Home Page: www.asonam2014.org Full paper/short paper/extended abstract submission deadlin

Complex social network Partition for Balanced Subnetworks---Hao Lan Zhang,Jiming Liu,Chunyu Feng,Chaoyi Pang,Tongliang Li,Jing He阅读

摘要:Abstract-Complex social network analysis methods have been applied extensively in various domains including online social media, biological complex networks, etc. Complex social networks are facing the challenge of information overload. The demand

Social Network 社交网络分析

Social Network 社交网络分析 一:什么是SNA-社交网络分析 社交网络分析的威力何在?我想几个案例来说明. 案例1:对一个毫无了解的组织(这个组织可以是一个公司,亦或是一个组织),如果能够拿到这个组织成员之间的信息流动记录(例如通话记录/或邮件记录),那么通过SNA可以分析出谁是这个组织的实际控制者(要知道有必要加上实际二字),谁是这些成员中有影响力的人,那些成员更倾向于聚集在一起.对上述问题的回答可以用来做公关-把精力用在对的人身上:用来处理组织架构:用来游说获得支持--关系紧密

HDU 4039 The Social Network bfs

算了下复杂度好像是n^3 就感觉不大好做.结果n^31a... #include <cstdio> #include <algorithm> #include <iostream> #include <string.h> #include <map> #include <vector> #include <string> #include <queue> using namespace std; #define

[CareerCup] 10.2 Data Structures for Large Social Network 大型社交网站的数据结构

10.2 How would you design the data structures for a very large social network like Facebook or Linkedln? Describe how you would design an algorithm to show the connection, or path, between two people (e.g., Me -> Bob -> Susan -> Jason -> You).

Xamarin.Forms Layout Challenges – Social Network App(转载)

Xamarin.Forms Layout Challenges – Social Network App(转载) 布局示例(一) 原文链接:http://www.kymphillpotts.com/social-network-app-layout-design-in-xamarin-forms/ GitHub链接:https://github.com/kphillpotts/XamarinFormsLayoutChallenges Youtube视频(英文)在这里:https://www.yo

[Network Analysis] 复杂网络分析总结

在我们的现实生活中,许多复杂系统都可以建模成一种复杂网络进行分析,比如常见的电力网络.航空网络.交通网络.计算机网络以及社交网络等等.复杂网络不仅是一种数据的表现形式,它同样也是一种科学研究的手段.复杂网络方面的研究目前受到了广泛的关注和研究,尤其是随着各种在线社交平台的蓬勃发展,各领域对于在线社交网络的研究也越来越火.研究生期间,本人的研究方向也是一直与复杂网络打交道,现在马上就要毕业了,写一篇博文简单介绍一下复杂网络特点以及一些有关复杂网络研究内容的介绍,希望感兴趣的博友可以一起讨论,一起学

【map+字典序】hdu 4039 The Social Network

[map+字典序]hdu 4039 The Social Network 题目链接:hdu 4039 The Social Network 题目大意 模拟一个社交网络系统,先给你n个朋友关系,对每个人,系统会推荐给他一些人给他交朋友,系统推荐的是:他朋友的朋友且与他不是朋友,而且只推荐他最多共同朋友的朋友,如果会推荐多个,按照字典序从小到大输出,如果一个也不推荐输出"-" 熟练map映射:字典序本身map容器里的关键字就是按照字典序存储的,所以最后只要遍历一遍容器,把满足题意的字符串输

《Toward an SDN-Enabled Big Data Platform for Social TV Analysis》--2015--Han Hu

<面向应用于社会TV分析的应用了SDN的大数据平台> Abstract social TV analytics 是什么,就是说很多TV观众在微博.微信和推特等这些地方分享他们的观感时,然后有人就对这个进行挖掘分析,这就被称作social TV analytics.不仅如此,这些人还将大数据研究运用进TV中.想要发展一个研究social TV的平台,但是面临很多挑战,于是作者就提出在SDN的support下来搭建一个cloud-centric 平台,来提供按需虚拟机和可重构网络.这套系统的架构主