2. 图论基础:图的定义与表示、有向图与无向图、度、邻接矩阵与邻接表

在构建反欺诈图谱之前,必须理解图(Graph)这一核心数据结构。图由节点(Vertex/Node)和边(Edge)组成,用于描述实体之间的复杂关系。在反欺诈场景中,节点可以是用户、设备、IP地址、订单等,边则代表它们之间的交互行为(如登录、转账、共享设备)。

2.1 图的定义与基本要素

图 G 可以形式化定义为 G = (V, E),其中:

  • V:非空节点集合,V = {v₁, v₂, ..., vₙ}。
  • E:边集合,E ⊆ V × V,每条边连接两个节点。
反欺诈视角: 在反欺诈图谱中,节点通常代表实体(如用户账号、手机号、设备指纹),边代表关联行为(如同一设备登录多个账号、同一手机号注册多个用户)。这种结构天然适合检测团伙欺诈。

2.2 有向图与无向图

根据边是否具有方向性,图分为两种基本类型:

类型 定义 边表示 反欺诈应用示例
无向图 边没有方向,表示对称关系 (u, v) 与 (v, u) 等价 共享同一设备、共用同一IP
有向图 边有方向,表示非对称关系 u → v 与 v → u 不同 转账行为(A→B)、关注关系
关键区别: 无向图适用于“共同持有”类关系(如共用设备),有向图适用于“单向行为”类关系(如资金流向)。在GraphSAGE建模时,有向图通常需要转化为无向图或保留双向边特征。
有向图 vs 无向图 对比 无向图(对称关系) A B C 有向图(非对称关系) A B C 无向边:A-B 表示双向关系 有向边:A→B 表示单向关系

2.3 度(Degree)

度是衡量节点连接数量的重要指标,在不同图类型中有不同定义:

  • 无向图:节点 v 的度 deg(v) = 与该节点相连的边的数量。
  • 有向图:
    • 出度(Out-degree):从该节点出发的边数。
    • 入度(In-degree):指向该节点的边数。
反欺诈应用: 在欺诈检测中,异常节点的度往往呈现极端分布。例如,一个设备关联了数百个用户账号(高入度),或一个账号向大量陌生账户转账(高出度),这些都是典型的欺诈信号。

2.4 图的表示方法:邻接矩阵与邻接表

在计算机中存储图结构,最常用的两种方式是邻接矩阵和邻接表。选择哪种方式直接影响图神经网络的训练效率和内存占用。

表示方法 存储结构 空间复杂度 查询边 (u,v) 时间复杂度 适用场景
邻接矩阵 |V| × |V| 二维数组 O(|V|²) O(1) 稠密图、小规模图
邻接表 每个节点维护一个邻居列表 O(|V| + |E|) O(deg(v)) 稀疏图、大规模图(反欺诈图谱常用)

2.4.1 邻接矩阵示例

对于包含 4 个节点的无向图,邻接矩阵是一个 4×4 的对称矩阵:

# 节点: [A, B, C, D]
# 边: A-B, A-C, B-C, C-D
邻接矩阵:
    A  B  C  D
A  [0, 1, 1, 0]
B  [1, 0, 1, 0]
C  [1, 1, 0, 1]
D  [0, 0, 1, 0]

2.4.2 邻接表示例

同样的图,使用邻接表存储:

邻接表:
A -> [B, C]
B -> [A, C]
C -> [A, B, D]
D -> [C]
GraphSAGE 选择: 反欺诈图谱通常包含数百万节点和数亿条边,属于典型的稀疏图。GraphSAGE 的邻居采样机制天然适配邻接表结构——只需根据节点 ID 快速获取其邻居列表,无需遍历整个矩阵。因此,在课程后续的模型实现中,我们将统一使用邻接表作为图的存储格式。
邻接矩阵 vs 邻接表 存储对比 邻接矩阵 空间: O(|V|²) A B C D A B C D 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 邻接表 空间: O(|V| + |E|) A → [B, C] B → [A, C] C → [A, B, D] D → [C] 反欺诈图谱通常包含数百万节点,邻接表比邻接矩阵节省大量内存 GraphSAGE 基于邻接表实现高效的邻居采样

2.5 反欺诈图谱构建实战要点

在开始 GraphSAGE 模型训练前,需要将原始数据转换为图结构。以下是关键步骤:

  1. 节点定义:确定哪些实体作为节点(用户、设备、IP、手机号等)。
  2. 边定义:根据业务规则建立关联(如“同一设备登录”建立设备-用户边)。
  3. 图存储:使用邻接表存储,便于后续邻居采样。
  4. 特征工程:为每个节点准备初始特征向量(如用户行为统计、设备属性)。
实践建议: 在反欺诈场景中,建议将有向边(如转账)转化为双向无向边,同时保留方向作为边特征。这样既能利用无向图的对称性简化模型,又能保留行为方向信息用于欺诈判定。