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

转载于:https://www.cnblogs.com/yucaodie/p/7282803.html

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

  1. [yzhpdh多读paper]Social network analysis:An overview

    以下为本人在阅读文章中记录的对自身有启发的内容,按照文章发表的顺序记录 Social network analysis也叫SNA,它提出的目的是研究社会角色在社交网络中交互的形式,所以其强调的是关系而 ...

  2. Exploratory Social Network Analysis with Pajek(第三版)8

    八.扩散 扩散是一个重要的社会过程.管理者对信息和意见的传播感兴趣,制造商寻求采用新技术和产品,我们所有人都对不感染传染病有着浓厚的兴趣.传播科学.社会心理学和社会学.公共管理.市场营销和流行病学正在 ...

  3. Exploratory Social Network Analysis with Pajek(第三版)6-1

    第三部分 中介 在很多理论中,社会关系被认为是人与人或组织之间传递信息.服务或商品的渠道.从这个角度来看,社会结构有助于解释信息.商品甚至态度和行为如何在社会系统中扩散.网络分析揭示了社会结构并有助于 ...

  4. Exploratory Social Network Analysis with Pajek(第三版)6-2

    6.4 介数 度和接近中心度是基于一个人在网络中的可达性:信息到达一个人的难易程度.中心度和中心性的第二种方法基于这样一种观点,即如果一个人作为通信网络中的中介更重要,那么他或她就更中心化.一个人对于 ...

  5. Exploratory Social Network Analysis with Pajek(第三版)13

    十三.随机图模型 13.1 简介 社会网络分析的主要目的是检测和解释参与者之间的社会关系模式(第 1 章).如果社会关系模式表达了社会参与者的选择或社会系统对参与者行为和态度的影响,那么它就是有意义的 ...

  6. Exploratory Social Network Analysis with Pajek(第三版)11

    11.家谱和引文 11.1 引言 时间造成了社会关系中一种特殊的不对称,因为它以不可逆转的方式对事件和世代进行排序.社会身份和地位部分地建立在共同的祖先之上,无论是在生物学意义上(出生)还是在智力上: ...

  7. python做社会网络分析_社交网络分析(Social Network Analysis in Python)①

    今天的网络是我们日常生活的一部分. 让我们学习如何使用网络在Python中可视化和理解社交网络 网络无处不在,道路网络,社交媒体上的朋友和关注者网络以及办公室同事网络. 他们在日常生活中发挥着重要作用 ...

  8. Exploratory Social Network Analysis with Pajek(第三版)2-1

    二.属性和关系 2.1 引言 在第 1 章中,我们认为社会网络分析侧重于社会关系.网络由一系列顶点和线构成.顶点和线都具有我们希望在分析中包含的特征(例如,人的性别和他们的关系强度).如第 1 章所述 ...

  9. Exploratory Social Network Analysis with Pajek(第三版)12

    第五部分建模 在​​最后一部分,我们将注意力从纯粹的网络结构探索性描述转移到建模上.介绍了两种类型的建模:块模型(第 12 章)和随机图模型(第 13 章). 内聚性.中介和等级与社会角色相关:成为团 ...

最新文章

  1. 用户不在 sudoers文件中,此事将被报告。
  2. JNI与底层调用-1
  3. “约见”面试官系列之常见面试题之第六十九篇之document.ready和onload的区别(建议收藏)
  4. delphi.指针.应用----应用重要 多看 多练
  5. GL中如何让画的点为圆形
  6. python机器学习库sklearn——决策树
  7. seaborn—seaborn.regplot绘制线性回归拟合图
  8. 计算机网络学习方法和书籍推荐
  9. 服务器装系统认不得硬盘,装系统的时候认不到硬盘的解决方法
  10. 深入理解Magento第五章 – Magento资源配置
  11. java怎么没有jmf包_java JMF
  12. 可以真正实现免驱的WinUSB设备
  13. SpringBoot使用elasticsearch-rest-high-level-client操作ElasticSearch
  14. 2016年4月管理计算机应,2016年4月计算机应用能力题库
  15. 破解校园网锐捷4.44多网卡拨号限制
  16. 苹果发展到计算机,从天堂到地狱 十分钟看懂AIO兴衰存亡
  17. 政企数字化转型的数据治理攻坚战打响
  18. python speed为0但是速度过快_通过并发加速你的 python 程序
  19. K8S学习-高可用集群-多Master节点安装(二)
  20. 雷达阵列天线孔径的概念及其相关意义

热门文章

  1. EditPlus使用技巧(汇总)
  2. Gentle.NET 使用文档
  3. 不想横屏看视频?谷歌开源框架AutoFlip一键截出最精彩竖版视频
  4. OpenCV4.0-alpha发布!新增多个深度学习特性
  5. 获取mysql所有用户权限_查看MYSQL数据库中所有用户及拥有权限
  6. python:就喜欢看你看不惯我又干不掉我的样子
  7. PyTorch Mobile已支持Android!
  8. 博士笔记 | 周志华《机器学习》手推笔记第三章-线性模型
  9. 经验 | 深度学习如何挑选GPU?
  10. 公开课精华 | 无人驾驶中感知的挑战与尝试