1、Degree Centrality(度中心性)
1.1 定义
度中心性(Degree Centrality)是在网络分析中刻画节点中心性(Centrality)的最直接度量指标。一个节点的节点度越大就意味着这个节点的度中心性越高,该节点在网络中就越重要。
1.2 计算方法
在无向图(Undirected Graph)中,度中心性测量网络中一个节点与所有其它节点相联系的程度。对于一个拥有g个节点的无向图,节点
i
i
i的度中心性是
i
i
i与其它
g
−
1
g-1
g−1个节点的直接联系总数,用矩阵表示如下:
C
D
(
N
i
)
=
∑
J
=
1
g
x
i
j
(
i
≠
j
)
C_{D}\left(N_{i}\right)=\sum_{J=1}^{g} x_{i j}(i \neq j)
CD(Ni)=J=1∑gxij(i=j)
其中 C D ( N i ) C_{D}\left(N_{i}\right) CD(Ni)表示节点 i i i的度中心度, 用于计算节点 i i i与其它g-1个j节点 ( i ≠ j ) (i\neq j) (i=j),排除i与自身的联系;也就是说,主对角线的值可以忽略)之间的直接联系的数量。 C D ( N i ) C_{D}\left(N_{i}\right) CD(Ni)的计算就是简单地将节点i在网络矩阵中对应的行或列所在的单元格值加总。(因为无向关系构成一个对称性数据矩阵,因此行和列相同的单元格的值相同)。
2、 Closeness Centrality(近性中心性)
2.1 定义
一个点的近性中心度较高,说明该点到网络中其他各点的距离总体来说较近,反之则较远。假如一个物流仓库网络需要选某个仓库作为核心中转站,需要它到其他仓库的距离总体来说最近,那么一种方法就是找到近性中心度最高的那个仓库。
2.2 计算方法
一个点的近性中心度是到其他所有结点距离的平均值。
C
v
=
∣
V
∣
−
1
∑
i
≠
v
d
v
i
C_{v}=\frac{|V|-1}{\sum_{i \neq v} d_{v i}}
Cv=∑i=vdvi∣V∣−1
其中 C v C_{v} Cv表示节点 i i i的近性中心度, 用于计算节点 i i i与其它节点( i ≠ v i≠v i=v,排除 i i i与自身的联系;也就是说,主对角线的值可以忽略)之间的直接联系的数量。 ∑ i ≠ v d v i {\sum_{i \neq v} d_{v i}} ∑i=vdvi的计算就是简单地将节点i在网络矩阵中对应的行或列所在的单元格值加总。(因为无向关系构成一个对称性数据矩阵,因此行和列相同的单元格的值相同)。
3、betweenness(介性中心性)
3.1 定义
以经过某个节点的最短路径数目来刻画节点重要性的指标,中介中心性指的是一个结点担任其它两个结点之间最短路的桥梁的次数。一个结点充当“中介”的次数越高,它的中介中心度就越大。如果要考虑标准化的问题,可以用一个结点承担最短路桥梁的次数除以所有的路径数量。一个点的介性中心度较高,说明其他点之间的最短路径很多甚至全部都必须经过它中转。假如这个点消失了,那么其他点之间的交流会变得困难,甚至可能断开(因为原来的最短路径断开了)。
3.2 计算方法
C B ( v ) = ∑ s ≠ v ≠ t ∈ V σ s t ( v ) σ s t C_{B}(v)=\sum_{s \neq v \neq t \in V} \frac{\sigma_{s t}(v)}{\sigma_{s t}} CB(v)=s=v=t∈V∑σstσst(v)
其中 σ s t ( v ) σst(v) σst(v)表示经过节点v的 s → t s→t s→t的最短路径条数, σ s t σst σst表示 s → t s→t s→t的最短路径条数。具体计算过程请看https://blog.csdn.net/betarun/article/details/51168259
4、Eigenvector Centrality(特征向量中心度)
4.1 定义
特征向量中心度衡量节点的重要性,同时考虑其邻居的重要性。例如,在Facebook上拥有300个相对不受欢迎的朋友的节点比拥有300个非常受欢迎的朋友(例如巴拉克·奥巴马)的人具有较低的特征向量中心性。特征向量中心度算法是一个用来度量节点之间的传递影响和连通性的算法,在特征向量中心度算法中,其认为与具有高得分的节点相连接比与具有低得分的节点相连接所得的贡献更大。
其主要原理是,来自重要节点的链接(通过Degree Centrality来衡量)比不重要节点的链接更有价值。所有节点的起点都相等,但是随着计算的进行,边缘更多的节点开始变得越来越重要。它们的重要性传播到它们所连接的节点。经过多次重新计算后,这些值稳定下来,从而得出了特征向量中心性的最终值。
4.2 计算方法
令
A
=
(
a
i
,
j
)
A =(a_ {i,j})
A=(ai,j)为图的邻接矩阵。则有
x
i
=
1
λ
∑
k
a
k
i
x
k
x_i = \frac {1} {\lambda} \sum_k a_ {ki} \ x_k
xi=λ1k∑aki xk
其中
λ
≠
0
\lambda \neq 0
λ=0是一个常数。以矩阵形式,我们有:
λ
x
=
x
A
\lambda x = x A
λx=xA
因此,中心向量
x
x
x是与特征值
λ
\lambda
λ相关联的邻接矩阵
A
A
A 的左侧特征向量。选择
λ
\lambda
λ作为矩阵
A
A
A的绝对值中最大的特征值。
5、各中心度python代码
# 需要导入模块: import networkx [as 别名]
# 或者: from networkx import eigenvector_centrality [as 别名]
def CentralityMeasures(G):
# Betweenness centrality
bet_cen = nx.betweenness_centrality(G)
# Closeness centrality
clo_cen = nx.closeness_centrality(G)
# Eigenvector centrality
eig_cen = nx.eigenvector_centrality(G)
# Degree centrality
deg_cen = nx.degree_centrality(G)
#print bet_cen, clo_cen, eig_cen
print "# Betweenness centrality:" + str(bet_cen)
print "# Closeness centrality:" + str(clo_cen)
print "# Eigenvector centrality:" + str(eig_cen)
print "# Degree centrality:" + str(deg_cen)
#main function
>>> import networkx as nx
>>> G = nx.path_graph(4)
>>> centrality = CentralityMeasures(G)