什么是社会网络分析:
社会网络分析方法是由社会学家根据数学方法﹑图论等发展起来的定量分析方法,是社会行动者及其间的关系的集合。一个社会网络是有多个点(社会行动者)和各点之间的连线(行动者之间的关系)组成的集合。用点和线来表达网络,这是社会网络的可视化界定。主要应用在知识管理、人际传播、Web数据分析上。
社会网络分析的工具
Gephi 是一款开源免费跨平台基于JVM的复杂网络分析软件, 其主要用于各种网络和复杂系统,动态和分层图的交互可视化与探测开源工具。可用作:探索性数据分析,链接分析,社交网络分析,生物网络分析等。
Gephi 是一款网络分析领域的数据可视化处理软件,信息数据可视化利器,其目标是成为 “数据可视化领域的 Photoshop”。支持Windows, Mac OS X以及Linux等环境。Gephi中最重要的两个定义是:第一个是节点(NODES),实际上就是关系网中各个孤立的个体;第二个是边缘(EDGES) ,实际上就是关系网中各个个体之间的关系。
gephi的几大功能
【排序功能】:
根据各节点的值(出度/入度、或者其他自定义的一些值)对节点排序,有大小和颜色两种形式;比如度值越大,节点越大或者颜色越深。
【布局功能】:
gephi提供多种布局算法,考虑到节点间的引力和斥力作用,完成自动美化功能,可根据不同的需求选择合适的网络呈现形式。
【统计功能】:
根据内置的算法对节点和边的属性做运算,并把运算结果存入节点或者边的属性中,供分割(小团体)和排序使用。
【分割功能】:
把不同小簇的节点加以区分,也就是小团体分类,不同的团体以不同的颜色标记;(最新版本这部分被合并在“外观”里)。
【过滤功能】:
按照设定的方式筛选合适的节点和边。
gephi支持的数据的格式
?GEXF:
Gephi 推荐格式,基于 XML,冗余的无以复加;
?GDF:
添加了两行 node、edge 头部的 CSV 格式,很紧凑,也可以描述自定义属性;
?GML:
有点类似 CSS,node、edge 等关键字冗余;
?GraphML:
跟 GEXF 类似;
?Pajek NET:
跟 GDF 类似,以空格分隔,不支持自定义属性
?DOT:
Graphviz 用的格式,简单紧凑,但不支持自定义属性
?UCINET DL:
跟 CSV 格式类似,更方便的支持任意值的权重
?Tulip TLP:
node、edge 关键字冗余,不支持属性
?Netdraw VNA:
跟 GDF 类似,以空格分隔,支持自定义属性
?CSV:
只支持定义边,不支持边属性,描述边可以用 "A,B" 表示 A->B,"A,B,C" 表示 A->B, A->C,还有矩阵表达形式,很紧凑。重复定义一条边表示其权重加一。
?Spreadsheet(Excel):
纯文本格式的 CSV 文件(不是上面描述的 CSV 格式),支持自定义属性,任意值的权重,不支持 "A, B, C" 连写形式以及矩阵形式。
gephi工具操作主要步骤
【第一步】导入文件:这里我们就导入最简单的那种只定义了边的csv文件以做示例:
【第二步】查看显示数据信息:你导入文件中所包含的 节点数---边数---图的类型 (有向、无向、混合):
【第三步】显示网络关系图,开始时节点的位置是随机的,所以可能每次导入后看到的样子都会有所不同(这没关系):
【第四步】对图片进行布局设置(软件提供了多种布局算法,选择某一种布局算法,还可以设置相关属性参数进行调整,点击”运行”执行该算法,示例中采取的是“Force Atlas”布局算法)
【第五步】算法执行完后可以看到布局后的新图片
【第六步】对节点进行排序处理(配置节点的大小和节点的颜色,如:节点颜色设置,选择一种渲染方式,这里选择以“度”为参数进行排序处理,度值越大颜色越深,点击“应用”后查看效果。节点大小设置也是类似的,也以度值为例,度值越大,节点大小越大):
【第七步】进行一些统计操作(节点度、模块度、社区划分、PageRank等。这里以计算网络的平均路径长度为例,平均路径长度反应出网络中各节点的紧密程度,这些统计后所得的参数都可作为上面所说的排序处理所要用的参数。)
这里我们得到了统计所得Betweeness Centrality参数,排序时我们可以按这个参数进行排序,得到如下的图:
【第八步】显示节点的标签信息:数据导入进来后,我们看这些节点其实并没有文字标注它们具体谁是谁,这个时候我们需要自己去点击显示出来:
【第九步】对这些数据进行分类,分割出小团体(或小社区)(首先是使用社区探测算法对节点进行模块化处理,得到Modularity class参数,然后在“外观”中选择Modularity class参数,对节点按颜色进分割。)
【第十步】过滤:设置相关条件过滤掉不想要的节点或边,或者选出特定的节点或者边
部分概念解释
度(入读|出度|加权度):
入度值的高低表示该点与其他点的交互状况,通常用来描述该点被其他点的认可和欢迎程度;出度值的高低也表示该点与其他点的交互状况,它用来表明该点与其他点交互的主动性和积极性。加权度(加权入度|出度|平均度)这些都是和边的权重有关。
密度 :
网络密度反映网络的完整性,如果一个复杂关系网络中任意的节点之间都有边连接,那么这个网络的密度为1,这种网络的可到达性是最好的,反之如果网络密度越小,那么网络的完整性越差。
网络直径(GraphDistance):
网络直径是指网络内最长的两个节点之间的连接数(直接连接的两个节点之间的距离为1)。
点度中心性(Point centrality):
某节点与其他很多节点有直接联系,该节点就处于中心地位,朋友节点越多,越重要。可以以节点的入度(度)表示点度中心度。
中介中心性(Betweenness Centrality):
出现在许多其他节点间最短路径上的节点有较高的中介中心性分数。即该节点具有控制其他节点交流的能力,其他节点的交流要通过该节点进行。
接近中心性(整体中心性,closeness centrality):
考察一个节点传播信息不依靠其他节点的程度。当该节点与其他节点越近就表示越不依赖其他节点,非核心节点必须通过其他节点才能交流。值为从一个给定起始节点到其他所有节点的平均距离。
偏心率(Eccentricity):
从一个给定起始点到距离它最远节点的距离。
模块化--小团体分析:
社区检测(community detection)又被称为是社区发现,它是用来揭示网络聚集行为的一种技术。社区检测实际就是一种网络聚类的方法,这里的“社区”在文献中并没有一种严格的定义,我们可以将其理解为一类具有相同特性的节点的集合。复杂网络领域中的大牛Newman提出了一种模块度(modularity)的概念,从而使得网络社区划分的优劣可以有一个明确的评价指标来衡量。所以模块度其实就是指一个网络在某种社区划分下与随机网络的差异,因为随机网络并不具有社区结构,对应的差异越大说明该社区划分越好。有时在划分模块时需要用到边的权重,一般而言对于社区发现来讲的话,边权越大,应该说两个点之间的联系越紧密,越容易被划分到相同的community之中。
具体案例说明
从电影网站爬取数据:里面包括了“电影名”、“演员”、“导演”、“评分”、“类型”等信息:
我们只选取其中的电影名和演员作为实验数据,处理成我们得实验数据:
按之前讲的操作步骤处理,实验结果为:
可以看出“成龙”是连接欧美与中国电影的一个决定性的人物:
可以看出周氏喜剧电影有一个比较固定的演员阵容:
可以知道哪些小团体是比较孤立存在的,远离整个集群的中心。
【其他的一些网上应用】:
1、好友间的人际关系分析
2、一条消息在Twitter几分钟内传播过程
Gephi部分代码实现
总结:
本文只是对gephi做一个简单的介绍。Gephi还有更多更好的功能,人们已经具有或者所能想象到的任何网络基本上都可以用Gephi进行处理。