3. 图数据基础:节点、边、邻接矩阵、度、路径、连通分量、图神经网络基本概念
在构建 GraphSAGE 团伙识别模型之前,必须牢固掌握图数据的基本构成要素。图(Graph)是一种用于描述实体之间关系的数学结构,它由两个核心集合组成:节点(Vertex/Node)和边(Edge)。本章将系统性地拆解这些基础概念,并引出图神经网络(GNN)的核心思想。
3.1 节点与边:图的基本单元
节点代表现实世界中的实体。在团伙识别场景中,节点可以是一个银行账户、一个手机号、一个设备指纹或一个 IP 地址。边代表实体之间的关联关系,例如转账、通话、同设备登录或共享 IP。
根据边是否具有方向性,图可以分为两类:
| 图类型 | 边特征 | 团伙识别示例 |
|---|---|---|
| 无向图 | 边无方向,关系对等 | 共享同一设备指纹的两个账户 |
| 有向图 | 边有方向,关系非对等 | A 账户向 B 账户转账 |
3.2 邻接矩阵:图的数学表示
邻接矩阵(Adjacency Matrix)是图最直观的数学表达形式。对于一个包含 N 个节点的图,邻接矩阵 A 是一个 N×N 的方阵:
- 如果节点 i 与节点 j 之间存在边,则 A[i][j] = 1(无权图)或权重值(有权图);
- 如果不存在边,则 A[i][j] = 0。
对于无向图,邻接矩阵是对称矩阵;对于有向图,则不一定对称。
# 一个包含4个节点的无向图邻接矩阵示例
# 节点连接关系:0-1, 0-2, 1-2, 2-3
import numpy as np
A = np.array([
[0, 1, 1, 0], # 节点0连接节点1和2
[1, 0, 1, 0], # 节点1连接节点0和2
[1, 1, 0, 1], # 节点2连接节点0、1和3
[0, 0, 1, 0] # 节点3仅连接节点2
])
print("邻接矩阵:\n", A)
3.3 度:节点的重要性指标
度(Degree)是衡量节点连接数量的基本指标。对于无向图,节点的度等于与其相连的边的数量。对于有向图,度分为:
- 出度(Out-degree):从该节点出发的边数;
- 入度(In-degree):指向该节点的边数。
在团伙识别中,度具有重要的业务含义:
| 度特征 | 业务含义 | 可疑程度 |
|---|---|---|
| 高入度 | 大量账户向该节点转账(资金归集) | ⭐⭐⭐ |
| 高出度 | 该节点向大量账户转账(资金分散) | ⭐⭐⭐ |
| 高度数(无向图) | 该设备关联大量账户(设备农场) | ⭐⭐⭐⭐ |
3.4 路径与连通分量
路径(Path)是图中从一个节点到另一个节点经过的边序列。路径长度通常用经过的边数来衡量。在团伙识别中,路径分析用于发现间接关联——例如,A 转账给 B,B 转账给 C,则 A 与 C 之间存在长度为 2 的路径。
连通分量(Connected Component)是图论中极其重要的概念:
- 在无向图中,如果任意两个节点之间都存在路径,则这些节点属于同一个连通分量;
- 在有向图中,分为强连通分量(任意节点双向可达)和弱连通分量(忽略方向后连通)。
3.5 图神经网络基本概念
图神经网络(Graph Neural Network, GNN)是一类专门处理图结构数据的深度学习模型。与传统神经网络不同,GNN 的核心思想是消息传递(Message Passing):每个节点通过聚合其邻居节点的信息来更新自身的特征表示。
GNN 的基本计算流程可以概括为以下三个步骤:
- 消息生成:每个节点根据自身特征生成待发送的消息;
- 消息聚合:目标节点收集所有邻居节点发送的消息,通过聚合函数(如求和、均值、最大值)合并;
- 特征更新:将聚合后的消息与节点自身特征结合,通过非线性变换更新节点表示。
常见的 GNN 变体包括:
| 模型 | 聚合方式 | 特点 |
|---|---|---|
| GCN | 归一化邻接矩阵加权求和 | 简单高效,适合同质图 |
| GAT | 注意力机制加权求和 | 可学习邻居重要性权重 |
| GraphSAGE | 采样邻居 + 可定制聚合函数 | 支持归纳学习,适合大规模图 |
3.6 从图基础到 GraphSAGE
理解上述基础概念后,GraphSAGE 的核心创新点就变得清晰:
- 采样(Sample):固定大小地采样邻居节点,解决真实图中节点度数分布不均的问题;
- 聚合(Aggregate):使用可学习的聚合函数(Mean、LSTM、Pooling)替代简单的求和操作;
- 归纳(Inductive):学习的是聚合函数而非节点嵌入,因此可以泛化到新节点。