2. 图论基础:图的定义、节点与边、有向图与无向图、度与邻接矩阵
图论是图神经网络(GNN)的数学基石。在团伙识别场景中,我们将每个实体(如账户、设备、IP)抽象为节点,将实体之间的关联(如转账、同设备登录、同IP)抽象为边。理解图的基本概念,是后续构建GraphSAGE模型的前提。
2.1 图的定义
一个图 G 由两个集合构成:G = (V, E)。其中:
- V(Vertex Set):节点集合,每个节点代表一个实体。
- E(Edge Set):边集合,每条边代表两个实体之间存在某种关系。
例如,在金融反欺诈团伙识别中:
- V = {账户A, 账户B, 账户C, 设备X, 设备Y}
- E = {(A→B), (A→C), (B→C), (A→X), (C→Y)}
💡 实战提示: 在团伙识别项目中,节点通常包含特征向量(如交易金额均值、登录频次),边可以携带权重(如转账次数)或类型(如“亲属关系”“设备共享”)。这些信息将作为GraphSAGE的输入。
2.2 节点与边
| 元素 | 符号 | 描述 | 团伙识别示例 |
|---|---|---|---|
| 节点 | v ∈ V | 图中的基本实体 | 银行账户、手机号、设备ID、IP地址 |
| 边 | e = (u, v) ∈ E | 节点之间的连接关系 | 转账交易、同设备登录、同IP注册 |
| 节点特征 | xv | 附着在节点上的属性向量 | 交易金额、注册时长、设备型号编码 |
| 边特征 | euv | 附着在边上的属性向量 | 转账金额、时间戳、关系类型 |
2.3 有向图与无向图
根据边是否具有方向性,图分为两种基本类型:
- 无向图(Undirected Graph):边没有方向,表示对称关系。例如“设备共享”关系——如果账户A和设备X共享,那么设备X也必然与账户A共享。
- 有向图(Directed Graph):边具有方向,表示非对称关系。例如“转账”关系——A向B转账,并不代表B向A转账。
📊 团伙识别中的选择: 大多数团伙识别场景使用无向图或双向有向图。例如,将“A转账给B”视为一条无向边,可以捕获资金往来关系;但如果需要区分资金流向(如洗钱场景),则必须使用有向图。
2.4 度(Degree)
节点的度是衡量其连接数量的重要指标:
- 无向图:节点 v 的度 d(v) = 与 v 相连的边的数量。
- 有向图:分为入度(in-degree)和出度(out-degree)。
- 入度 din(v) = 指向 v 的边的数量。
- 出度 dout(v) = 从 v 出发的边的数量。
⚠️ 团伙识别关键点: 在欺诈团伙中,核心节点的度往往异常高(如一个设备关联数百个账户),而普通节点的度通常较低。度分布是团伙检测的重要统计特征之一。
2.5 邻接矩阵(Adjacency Matrix)
邻接矩阵是图的代数表示,它将图结构转化为矩阵形式,便于计算机处理和数学运算。
对于一个包含 n 个节点的图,邻接矩阵 A 是一个 n × n 的方阵:
- 无向图:如果节点 i 和 j 之间有边,则 Aij = Aji = 1;否则为 0。矩阵是对称的。
- 有向图:如果存在从 i 指向 j 的边,则 Aij = 1;否则为 0。矩阵不一定对称。
- 加权图:Aij 可以取边的权重值(如转账金额),而非仅 0/1。
2.6 实战:用Python构建图与邻接矩阵
在Python中,我们通常使用 NetworkX 库来构建和操作图结构。以下是一个简单的示例:
import networkx as nx
import numpy as np
# 1. 创建一个无向图
G = nx.Graph()
# 2. 添加节点
G.add_nodes_from([1, 2, 3, 4])
# 3. 添加边
G.add_edges_from([(1, 2), (1, 3), (2, 4), (3, 4)])
# 4. 获取邻接矩阵(返回NumPy数组)
adj_matrix = nx.to_numpy_array(G, nodelist=sorted(G.nodes()))
print("邻接矩阵:\n", adj_matrix)
# 5. 计算每个节点的度
degrees = dict(G.degree())
print("节点度:", degrees)
# 输出:
# 邻接矩阵:
# [[0. 1. 1. 0.]
# [1. 0. 0. 1.]
# [1. 0. 0. 1.]
# [0. 1. 1. 0.]]
# 节点度: {1: 2, 2: 2, 3: 2, 4: 2}
🔧 实战扩展: 在团伙识别项目中,我们通常使用
nx.from_pandas_edgelist() 从CSV文件直接构建图。例如,从交易记录表(sender, receiver, amount)中构建有向加权图,边的权重为交易总金额。
2.7 本章小结
| 概念 | 定义 | 团伙识别意义 |
|---|---|---|
| 图 | G = (V, E),节点与边的集合 | 将实体与关系建模为图结构 |
| 节点 | 图中的实体 | 账户、设备、IP等 |
| 边 | 实体间的关联 | 转账、登录、注册等 |
| 度 | 节点的连接数量 | 识别核心节点(高团伙嫌疑) |
| 邻接矩阵 | 图的矩阵表示 | 作为GNN的输入特征之一 |