0. 前言
中心性(Centrality)表示的是图(Graph)中,每个节点的重要度。图在越来越多的领域中被应用,甚至在图像小样本分类中,也有了应用,比如2022年的一篇CVPR论文《Learning to Affiliate: Mutual Centralized Learning for Few-shot Classification》就用了中心性来解决小样本分类的问题。
本文就是对目前比较主流的几种求图中心性的方法进行的梳理。
在进行算法的说明之前,首先要搞清楚,什么是“节点的重要度”。不同的方法对其定义也不相同,比如重要度可以是有多少条边从这个节点出发的,可以是有多少边经过了这个节点,也可以是有多少条边到达了这个节点。对于无向图来说,这三者都是一样的。不同的定义,对应着不同的方法,下面会详细展开讲。
1. Degree Centrality
度中心性,这是容易理解的一种中心性。它对重要度的定义是节点的入度。这是非常直观的一种定义,比如一篇论文被引用的数量可以表示其重要度。
如下图中的四个节点的重要度(按ABCD排序)可以表示为
x
=
[
2
,
2
,
2
,
2
]
=
[
0.25
,
0.25
,
0.25
,
0.25
]
(1-1)
x = [2,2,2,2] = [0.25,0.25,0.25,0.25] \tag{1-1}
x=[2,2,2,2]=[0.25,0.25,0.25,0.25](1-1)
这种方法的缺点在于无视了与其相邻的邻居的重要度,这样很容易被造假。比如就网站的重要度而言,如果想要提高自己网站的重要度,只需要设计许多无意义的网站指向需要提高重要度的网站即可。
2. Eigenvector Centrality
特征向量中心性,如果使用转移矩阵,它对重要度的定义就是节点被访问的概率,如果使用邻接矩阵,它对重要度的定义就是邻居的重要度。这里涉及到一个随机游走(Random Walk)的概念,就是随机在图上的每个节点安排几个粒子,将粒子所在的位置作为起始点,然后每次随机走过一条边,记录每个节点被访问的概率,将这个概率作为重要度。
举个例子(以转移矩阵为例),图1-1所示的图的转移矩阵可以表示为
矩阵中的每一列之和为1,表示对应列的节点走到其他节点的概率。假设粒子初始位置在四个节点的概率是相同的,则有初始概率为
[
0.25
,
0.25
,
0.25
,
0.25
]
[0.25, 0.25, 0.25, 0.25]
[0.25,0.25,0.25,0.25]
当经过一次游走之后,例子落在A的概率变为(看A所在的行)
0.25
×
0
+
0.25
×
0.5
+
0.25
×
1
+
0.25
×
0
=
0.375
0.25 \times 0 + 0.25 \times 0.5 + 0.25 \times 1 + 0.25 \times 0 = 0.375
0.25×0+0.25×0.5+0.25×1+0.25×0=0.375
同理,可得此时落在各个节点的概率变为了
[ 3 / 8 , 5 / 24 , 5 / 24 , 5 / 24 ] ] ≈ [ 0.38 , 0.21 , 0.21 , 0.21 ] [3/8, 5/24, 5/24, 5/24] ] \approx [0.38, 0.21, 0.21, 0.21] [3/8,5/24,5/24,5/24]]≈[0.38,0.21,0.21,0.21]
同理,再游走几步可以得到
2
步
:
[
0.31
,
0.23
,
0.23
,
0.23
]
3
步
:
[
0.34
,
0.22
,
0.22
,
0.22
]
4
步
:
[
0.33
,
0.22
,
0.22
,
0.22
]
…
2步: [0.31, 0.23, 0.23, 0.23] \\ 3步: [0.34, 0.22, 0.22, 0.22] \\ 4步: [0.33, 0.22, 0.22, 0.22] \\ \dots
2步:[0.31,0.23,0.23,0.23]3步:[0.34,0.22,0.22,0.22]4步:[0.33,0.22,0.22,0.22]…
可以发现,在这个例子之下,粒子落在每个节点的概率在逐渐收敛。
先说结论,这个最终收敛的概率向量就是邻接矩阵的特征向量,且这个特征向量对应的特征值是所有特征值中最大的。
并不是所有的 n × n n \times n n×n转移矩阵 T T T都是可以收敛的,这里要求转移矩阵是不可约矩阵(irreducible matrix),也就是说该转移矩阵对应的图必须是强连通图,也就是说,图中的任意一个节点都可以到达图中另外一个节点。
根据Perron-Frobenius定理,如果 T T T是不可约的,那么
- T有一个最大特征值 r r r,且 r > 0 r>0 r>0;
- r r r对应的特征向量中的所有元素均为正
这里来证明一下为什么不断游走的过程最终会收敛到转移矩阵 T T T特征值最大的特征向量。
首先,上述游走的过程就是初始概率
x
0
x_0
x0不断左乘邻接矩阵
T
T
T的过程,第
t
t
t步的概率可以表示为
x
t
=
T
t
x
t
=
T
x
t
−
1
(2-1)
x_t = T^tx_t= Tx_{t-1} \tag{2-1}
xt=Ttxt=Txt−1(2-1)
假设 n × n n \times n n×n的转移矩阵 T T T的单位特征向量为 v 1 , v 2 , . . . , v n v_1, v_2, ..., v_n v1,v2,...,vn,对应的特征值为 λ 1 , λ 2 , . . . , λ n \lambda_1, \lambda_2,...,\lambda_n λ1,λ2,...,λn。这里为了最终表示方便令特征值是降序排列的,即 λ 1 > λ 2 > ⋯ > λ n \lambda_1 > \lambda_2 > \dots > \lambda_n λ1>λ2>⋯>λn。由于单位特征向量直接线性不相关,所以任意一个 x t x_t xt都可以表示为其线性组合
x t = β 1 v 1 + β 2 v 2 + ⋯ + β n v n (2-2) x_t = \beta_1 v_1 + \beta_2 v_2 + \dots + \beta_n v_n \tag{2-2} xt=β1v1+β2v2+⋯+βnvn(2-2)
那么就有
x 1 = T x 0 = β 1 T v 1 + β 2 T v 2 + ⋯ + β n T v n (2-3) x_1 = Tx_0 = \beta_1 Tv_1 + \beta_2 Tv_2 + \dots + \beta_n Tv_n \tag{2-3} x1=Tx0=β1Tv1+β2Tv2+⋯+βnTvn(2-3)
根据特征值的性质有 T v 1 = λ 1 v 1 Tv_1 = \lambda_1 v_1 Tv1=λ1v1,带入 ( 2 − 3 ) (2-3) (2−3)可得
x 1 = T x 0 = β 1 λ 1 v 1 + β 2 λ 2 v 2 + ⋯ + β n λ n v n (2-4) x_1 = Tx_0 = \beta_1 \lambda_1 v_1 + \beta_2 \lambda_2 v_2 + \dots + \beta_n \lambda_n v_n \tag{2-4} x1=Tx0=β1λ1v1+β2λ2v2+⋯+βnλnvn(2-4)
同理可以推得
x
t
=
T
x
t
−
1
=
β
1
λ
1
t
v
1
+
β
2
λ
2
t
v
2
+
⋯
+
β
n
λ
n
t
v
n
(2-5)
x_t = Tx_{t-1} = \beta_1 \lambda_1^{t}v_1 + \beta_2 \lambda_2^{t}v_2 + \dots + \beta_n \lambda_n^{t}v_n \tag{2-5}
xt=Txt−1=β1λ1tv1+β2λ2tv2+⋯+βnλntvn(2-5)
将最大的特征值提取出来,有
x
t
=
T
x
t
−
1
=
λ
1
t
(
β
1
v
1
+
β
2
(
λ
2
λ
1
)
t
v
2
+
⋯
+
β
n
(
λ
n
λ
1
)
t
v
n
)
(2-6)
x_t = Tx_{t-1} = \lambda_1^{t}(\beta_1 v_1 + \beta_2 (\frac{\lambda_2}{\lambda_1})^tv_2 + \dots + \beta_n (\frac{\lambda_n}{\lambda_1})^tv_n) \tag{2-6}
xt=Txt−1=λ1t(β1v1+β2(λ1λ2)tv2+⋯+βn(λ1λn)tvn)(2-6)
我们之前已经假设了
λ
1
>
λ
2
>
⋯
>
λ
n
\lambda_1 > \lambda_2 > \dots > \lambda_n
λ1>λ2>⋯>λn,故有
l
i
m
t
→
+
∞
(
λ
n
λ
1
)
t
=
0
(2-7)
lim_{t \rightarrow +\infty} (\frac{\lambda_n}{\lambda_1})^t = 0 \tag{2-7}
limt→+∞(λ1λn)t=0(2-7)
则经过无穷多次迭代之后,就有
x t = T x t − 1 = λ 1 t β 1 v 1 (2-8) x_t = Tx_{t-1} = \lambda_1^{t} \beta_1v_1 \tag{2-8} xt=Txt−1=λ1tβ1v1(2-8)
λ 1 t β 1 \lambda_1^{t} \beta_1 λ1tβ1是个常数,也就是说,最后收敛得到的就是转移矩阵 T T T特征值最大的对应的特征向量。
当然最终要能收敛还有一些约束条件,因为最大的特征值可能是负的之类的情况:
- 图中没有dead ends,也就是没有只进不出的向量,这会导致最终收敛到0;
- 图中没有spider traps,也就是没有cyclic structure
其实,这就是说矩阵要是不可约矩阵。
3. Katz Centrality
Katz中心性对重要度的定义和特征向量中心性的定义是一致的,一般使用邻接矩阵,那也就表示了邻居的重要度。
在讲之前,先来看一下邻接矩阵,还是以图1-1为例,图2-1的邻接矩阵可以表示为
M
=
[
0
1
1
0
1
0
0
1
1
0
0
1
1
1
0
0
]
(3-1)
M = \left[ \begin{matrix} 0 & 1 & 1 & 0 \\ 1 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 1 & 0 & 0 \end{matrix} \right] \tag{3-1}
M=
0111100110000110
(3-1)
这个矩阵表示了图的结构,如果两个节点相连,那么对应的矩阵位置 i j ij ij就是1。特征向量中心性也是可以用邻接矩阵来算的。
我们令两个邻接矩阵相乘可以得到
M 2 = [ 2 0 0 2 1 2 1 0 1 2 1 0 1 1 1 1 ] (3-2) M^2 = \left[ \begin{matrix} 2 & 0 & 0 & 2 \\ 1 & 2 & 1 & 0 \\ 1 & 2 & 1 & 0 \\ 1 & 1 & 1 & 1 \end{matrix} \right] \tag{3-2} M2= 2111022101112001 (3-2)
令三个邻接矩阵相乘可以得到
M 3 = [ 2 4 2 0 3 1 1 3 3 1 1 3 3 2 1 2 ] (3-3) M^3 = \left[ \begin{matrix} 2 & 4 & 2 & 0 \\ 3 & 1 & 1 & 3 \\ 3 & 1 & 1 & 3 \\ 3 & 2 & 1 & 2 \end{matrix} \right] \tag{3-3} M3= 2333411221110332 (3-3)
仔细观察可以发现, M t M^t Mt中的位置 i j ij ij表示从 i i i走到 j j j,长度为t的不同路径的数量。比如 M 2 [ 1 , 0 ] = 1 M^2[1, 0] = 1 M2[1,0]=1表示从A到B,长度为2的路径只有1条,观察图1-1可以发现,确实只有1条,为【A->D->B】。这就是邻接矩阵累乘的实际意义。
目前和特征向量中心性的做法是一样的,直接累乘还是会遇到"dead ends"和"spider traps"。
x
t
=
M
t
x
0
=
M
x
t
−
1
(3-4)
x_t = M^tx_0 = Mx_{t-1} \tag{3-4}
xt=Mtx0=Mxt−1(3-4)
为了解决这个问题Leo Katz提出了用一个系数
α
∈
(
0
,
1
)
\alpha \in (0, 1)
α∈(0,1)来惩罚长的路径,其具体定义如下式
(
3
−
5
)
(3-5)
(3−5)所示。
x
t
=
α
M
x
t
−
1
+
β
(3-5)
x_t =\alpha Mx_{t-1} + \beta \tag{3-5}
xt=αMxt−1+β(3-5)
α \alpha α和 β \beta β都是常数。 β \beta β是初始化的中心性,这个其实无所谓,取度中心性就可以,取1取0也是有的。惩罚因子 α \alpha α就比较重要了, α \alpha α不能太大,大了,比如取1,就相当于是特征向量中心性了,一般 α < 1 / ∣ r ∣ \alpha < 1 / |r| α<1/∣r∣, r r r是 M M M的最大特征值; α \alpha α也不能太小,小了,比如取0,就变成度中心性了。
假设最终可以收敛,令
x
t
=
x
t
−
1
x_t = x_{t-1}
xt=xt−1,那么根据式(3-5)就有
x
t
=
β
(
I
−
α
M
)
−
1
(3-6)
x_t = \beta (I - \alpha M)^{-1} \tag{3-6}
xt=β(I−αM)−1(3-6)
这就是计算katz中心性的式子。
4. PageRank
PageRank对重要度的定义和特征向量中心性的定义是一致的,也就是邻居的重要度。Katz中心性的问题是,一个高中心性的节点,会把其影响传播给其他的节点,比如google链接了无数的网站,google的中心性很高,这就会使得google指向的网站中心性都很高,这是我们不希望的。PageRank通过**出度(out-degree)**将中心性进行了稀释。
PageRank的定义为
x t = α M D − 1 x t − 1 + β (4-1) x_t = \alpha MD^{-1}x_{t-1} + \beta\tag{4-1} xt=αMD−1xt−1+β(4-1)
其中 D D D是一个对角矩阵, d i i = m a x ( r i o u t , 1 ) d_{ii} = max(r_{i}^{out}, 1) dii=max(riout,1),对于没有出度的,令 d i i = 1 d_{ii} = 1 dii=1,相当于中心性除以了出度。
同样的,上式可以表示为
x t = β ( I − α M D − 1 ) − 1 = β D ( D − α A ) − 1 (4-2) x_t = \beta (I - \alpha MD^{-1})^{-1} = \beta D(D - \alpha A)^{-1} \tag{4-2} xt=β(I−αMD−1)−1=βD(D−αA)−1(4-2)
同样地, α \alpha α的取值是有范围的,不能大于 A D − 1 AD^{-1} AD−1的最大特征值的倒数。特别地,对于无向图来说,这个值就是1。
参考资料
[1] 【特征向量中心性】
[2] NetSci 04-2 Eigenvector Centrality
[3] NetSci 04-3 Katz Centrality
[4] Centrality Measures and their use in Knowledge Graphs
[5] Katz Centrality and PageRank
[6] PageRank與社交網路模型評估
[7] Centrality Measures