搞懂图论中的中心性

文章目录

  • 0. 前言
  • 1. Degree Centrality
  • 2. Eigenvector Centrality
  • 3. Katz Centrality
  • 4. PageRank
  • 参考资料

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)

搞懂图论中的中心性_第1张图片

图1-1 示例图

这种方法的缺点在于无视了与其相邻的邻居的重要度,这样很容易被造假。比如就网站的重要度而言,如果想要提高自己网站的重要度,只需要设计许多无意义的网站指向需要提高重要度的网站即可。

2. Eigenvector Centrality

特征向量中心性,如果使用转移矩阵,它对重要度的定义就是节点被访问的概率,如果使用邻接矩阵,它对重要度的定义就是邻居的重要度。这里涉及到一个随机游走(Random Walk)的概念,就是随机在图上的每个节点安排几个粒子,将例子所在的位置作为起始点,然后每次随机走过一条边,记录每个节点被访问的概率,将这个概率作为重要度。

举个例子(以转移矩阵为例),图1-1所示的图的转移矩阵可以表示为
搞懂图论中的中心性_第2张图片

图2-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=Txt1(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) (23)可得

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=Txt1=β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=Txt1=λ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=Txt1=λ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为例,图1-2的邻接矩阵可以表示为
M = [ 0 1 1 0 1 0 0 1 1 0 0 1 1 1 1 1 ] (3-1) M = \left[ \begin{matrix} 0 & 1 & 1 & 0 \\ 1 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 1 & 1 & 1 & 1 \end{matrix} \right] \tag{3-1} M= 0111100110010111 (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=Mxt1(3-4)

为了解决这个问题Leo Katz提出了用一个系数 α ∈ ( 0 , 1 ) \alpha \in (0, 1) α(0,1)来惩罚长的路径,其具体定义如下式 ( 3 − 5 ) (3-5) (35)所示。
x t = α M x t − 1 + β (3-5) x_t =\alpha Mx_{t-1} + \beta \tag{3-5} xt=αMxt1+β(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=xt1,那么根据式(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=αMD1xt1+β(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αMD1)1=βD(DαA)1(4-2)

同样地, α \alpha α的取值是有范围的,不能大于 A D − 1 AD^{-1} AD1的最大特征值的倒数。特别地,对于无向图来说,这个值就是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

你可能感兴趣的:(基础算法,图论,katz中心性,度中心性,特征向量中心性,PageRank)