SNA(社会网络分析)——三种中心度总结

一 简介
社会网络分析中,中心度表示点的中心度,中心势表示整个网络的中心度(趋势)。中心度常用的有三种,点度中心度、中间中心度和接近中心度。

二 三种中心度
点度中心度表示与该点直接相连的点的个数,无向图为(n-1),有向图为(入度,出度)。分为绝对和相对。

点度中心势表示网络图的整体中心性。体现整体网的集中程度。星形网络图核心点点度中心度为n-1,其余点为1,中心势为1;完备图每个点中心度都是n-1,中心势为0。

中间中心度表示该点的“中间人”程度,即媒介程度。分为相对和绝对。计算方法为其他任何两点的测地线,以及过该点的测地线数目之比。(测地线表示两点之间的最短距离)

中间中心势表示整个网的中间性。星形网的中间中心势为1,环形网的中间中心势为0。星形网核心点可以控制其他所有点的交往,中间中心度最大。而其余点在网的边缘,无法控制其他点的交往,故中间中心度为0。

接近中心度表示一种对不受他人控制的测度。通俗讲就是一个点和所有其他点的接近性程度。分为绝对和相对。计算方法是该点与其他所有点的测地线距离之和。(绝对)

接近中心势表示整体网的接近集中趋势。同点度中心势类似,星形网接近中心势为1,环形和完备图接近中心势为0。

三 计算公式汇总
度数中心性 中间中心性 接近中心性
绝对点度中心度
相对点度中心度(标准化)
图的中心势
注:以上公式都是针对无向图,如果是有向图则根据定义相应修改公式即可

四 算法实现
这几个中心度的计算中,点度中心度最为简单,就是邻接矩阵的行和列代表出度和入度,然后对每个元素进行计算即可。比较难的是中间中心度和接近中心度,因为涉及测地线的计算。我稍微找了一下网上关于这方面的算法,没有找到,所以就自己想了一下,觉得想出解决方法了。首先我们要知道一个知识点,就是“矩阵之积”在SNA中的含义。

   在SNA中,矩阵的乘法是非常重要的。它可以用来研究图中“途径”的个数。简单来说,邻接矩阵一次方(即邻接矩阵本身)表示一个行动者到另一个行动者之间存在多少条距离为1的途径;同理,邻接矩阵的平方表示。。到。。存在多少条距离为2的途径,以此类推。那么,当一个矩阵的某一个行动者到另一个行动者的途径,第一次由0突变为非0时,就是这两个行动者的“距离”(最短距离,即测地线)的产生!

   那么我们就可以先实现接近中心度的算法:简单描述为计算邻接矩阵的乘积(对角线初始为0,因为一个点到它本身不存在一条距离为1的途径),记录下每次乘后的矩阵以及乘前的矩阵,进行每个元素的比较,如果由0->非0,则在测地线长度矩阵中保存对应位置的值为邻接矩阵的次数,如二次方就记为2,三次方就记为3,表示该位置的两个点的测地线长度为2或3。同时,还要在测地线条数矩阵中保存测地线的条数(求中间中心度需要用到)。直到测地线矩阵中所有的值都求出后停止矩阵相乘。

   利用测地线长度矩阵,我们可以求出绝对接近中心度,即矩阵每一行进行求和,相对中心度和中心势按公式也好求。

   那么如何求中间中心性?这个算法的主要问题就是如何求每条测地线途经的点!我们又没必要使用最短路径算法来计算这样一个有规律的图,而且最短路径算法计算量大,最重要的是这个算法最终给出的是一条路径,如果测地线有多条,那就无法解决这个问题。

   那么问题如何解决?我们可以使用测地线条数矩阵和邻接矩阵来实现!描述如下:遍历测地线条数矩阵,对于每一个点首先可以得到中心度的分母,即测地线的条数。然后以测地线的长度为循环次数,对邻接矩阵进行以下操作:从起点开始,列出为相邻的节点,并保存到向量中,此为一次循环,接下来以相邻节点为起点,继续列出相邻节点,存入向量中,此为二次循环,直到循环结束。循环过程中,如果回到循环的点,则不存入向量,起点本身也排除。这样本质就是列出了所有途径的树。至于这个树怎么实现,我自己想了一个,到时候再发个帖子。感兴趣的朋友可以关注一下。

   这样我们根据树的层数判断距离然后从终点反推到起点,得到路径判断是否经过判断节点即可。统计经过判断节点的数量,就是中间中心度的分子。这样三个中间性指标都可以求出。

   以上是自己今天学习的一些总结和想法,供各位参考。如有错误,请指正!谢谢。

你可能感兴趣的:(java)