Skip to content

10.4 网络中心性

网络中心性衡量节点在拓扑结构中的重要性——在金融网络中,中心性最高的节点就是"系统性重要金融机构"(SIFI),它们的倒闭可能引发整个系统的连锁反应。


中心性指标

度中心性(Degree Centrality)

节点 vv 的度中心性就是它的度数(标准化后):

CD(v)=deg(v)V1C_D(v) = \frac{\text{deg}(v)}{|V| - 1}

  • 金融含义:"这家银行与多少家银行有交易?"
  • 计算简单,但只反映局部重要性

中介中心性(Betweenness Centrality)

节点 vv 位于多少对节点之间最短路径上的比例:

CB(v)=svtσst(v)σstC_B(v) = \sum_{s \neq v \neq t} \frac{\sigma_{st}(v)}{\sigma_{st}}

其中 σst\sigma_{st}sstt 的最短路径总数,σst(v)\sigma_{st}(v) 是通过 vv 的数量。

  • 金融含义:"如果该银行违约,有多少支付路径被切断?"
  • 捕捉节点的桥梁作用

特征向量中心性(Eigenvector Centrality)

节点的重要性取决于它连接到的节点的重要性——这是递归定义

λx=Ax\lambda \mathbf{x} = A \mathbf{x}

其中 AA 是邻接矩阵,x\mathbf{x} 是特征向量,λ\lambda 是对应的特征值。通常取主特征向量(最大特征值对应的特征向量)。

  • 金融含义:"该机构在系统重要性银行排名中的位置"——和重要机构交易的机构自身也重要
  • PageRank 是特征向量中心性的一个变体

手算实例:3 节点图的特征向量中心性

考虑一个简单的无向无权三角形图:

 (1)──(2)
   \  /
    (3)

邻接矩阵:

A=(011101110)A = \begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix}

求解 Ax=λxA \mathbf{x} = \lambda \mathbf{x}

(011101110)(x1x2x3)=λ(x1x2x3)\begin{pmatrix} 0 & 1 & 1 \\ 1 & 0 & 1 \\ 1 & 1 & 0 \end{pmatrix} \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix} = \lambda \begin{pmatrix} x_1 \\ x_2 \\ x_3 \end{pmatrix}

展开方程:

x2+x3=λx1x1+x3=λx2x1+x2=λx3\begin{aligned} x_2 + x_3 &= \lambda x_1 \\ x_1 + x_3 &= \lambda x_2 \\ x_1 + x_2 &= \lambda x_3 \end{aligned}

由对称性,x1=x2=x3x_1 = x_2 = x_3。代入第一式:2x1=λx12x_1 = \lambda x_1,得 λ=2\lambda = 2

主特征向量(归一化):

x=(1/31/31/3)\mathbf{x} = \begin{pmatrix} 1/\sqrt{3} \\ 1/\sqrt{3} \\ 1/\sqrt{3} \end{pmatrix}

结果:三个节点的特征向量中心性相等——在完全三角形中,每个节点都同等重要。

对比:如果图中节点 2 还连接到其他 10 个节点,则 x2x_2 的特征向量中心性会更高——因为它连接了更多节点,并且这些节点也连接了它。


Python 示例

python
import networkx as nx

# 构建 5 节点图
G = nx.Graph()
edges = [
    (1, 2, 2),
    (1, 3, 4),
    (1, 4, 3),
    (2, 4, 1),
    (3, 4, 1),
    (4, 5, 5)
]
G.add_weighted_edges_from(edges)

# 中心性计算
print("节点中心性:")
bc = nx.betweenness_centrality(G)
for node, val in sorted(bc.items()):
    print(f"  节点 {node}: 中介中心性 = {val:.3f}")

# 特征向量中心性
ec = nx.eigenvector_centrality(G, weight='weight')
print("\n特征向量中心性:")
for node, val in sorted(ec.items()):
    print(f"  节点 {node}: {val:.4f}")

# --- 输出 ---
# 节点中心性:
#   节点 1: 中介中心性 = 0.000
#   节点 2: 中介中心性 = 0.000
#   节点 3: 中介中心性 = 0.000
#   节点 4: 中介中心性 = 0.500  ← 节点 4 是关键的"桥梁"
#   节点 5: 中介中心性 = 0.000

关键发现:节点 4 的中介中心性最高(0.500),因为到节点 5 的唯一路径必须经过它——这在金融网络中代表**"核心中介银行"**。


中心性定义金融含义
度中心性节点的连接数"这家银行与多少家银行有交易?"
中介中心性节点位于多少最短路径上"如果该银行违约,有多少支付路径被切断?"
特征向量中心性连接的节点越重要,自身越重要"该机构在系统重要性银行排名中的位置"

系统性风险网络

2008 年雷曼兄弟倒闭后,监管机构开始用网络模型分析系统性风险。核心思想:每个银行 ii 违约会导致相邻银行 jj 的资产减值 wijw_{ij},如果减值后 jj 也资不抵债,则产生级联违约(default cascade)。图论中的 k-core 分解用于识别最核心的风险传播层。k-core 是图中满足"每个节点至少有 kk 个邻居也在同一子图中"的最大子图。方法:反复移除度数小于 kk 的节点,剩下的就是 k-core。kk 越大,节点越核心。例如,金融网络中 10-core 的节点比 3-core 的节点在风险传播中扮演更关键的角色。

区块链交易图谱

在加密货币分析中,交易网络是有向加权图——顶点是钱包地址,边是转账金额。聚类分析(如 Louvain 算法——一种基于模块度优化的社区发现算法。模块度(Modularity)衡量社区划分质量:社区内部的边密度与随机图的期望密度之差,值域 [0.5,1][-0.5, 1],越大说明社区结构越明显。Louvain 算法分两阶段迭代:①将每个节点视为独立社区,尝试将节点移动到邻居社区中,选择使模块度增量最大的移动;②将发现的社区合并为新节点,重复第一阶段。Louvain 算法时间复杂度接近线性,能处理数百万节点的大规模图)用于识别关联钱包集群,而 PageRank(特征向量中心性的变体)用于发现最活跃的交易节点。

实际监管应用:金融稳定委员会(FSB)和各国央行使用网络中心性指标作为全球系统重要性银行(G-SIB)评估框架的一部分,与规模、互联性、可替代性等传统指标互补。 \n> 下一步回到本章概述

Built with VitePress