2. 反欺诈图谱基础:图数据结构与典型构建

在反欺诈场景中,图结构是描述复杂关联关系的核心工具。本章将系统讲解图数据的基本构成单元、同构与异构图的区别,以及如何在反欺诈业务中构建有效的图谱。理解这些基础是后续使用 GraphSAGE 进行回放验证的前提。

2.1 图数据结构三要素:节点、边、属性

图由三个基本元素构成,它们共同定义了反欺诈图谱的语义和计算边界:

元素 反欺诈中的典型含义 示例
节点 (Node/Vertex) 业务实体,如用户、设备、手机号、银行卡、IP 地址 用户 A、设备 IMEI_123、银行卡 6222****
边 (Edge) 实体之间的交互或归属关系 登录、转账、绑定、同设备使用
属性 (Feature) 节点或边的特征向量,用于描述其状态 用户注册时间、交易金额、设备型号
关键认知:反欺诈图谱的威力在于“边”。单看一个用户可能无异常,但通过边连接到的多个高风险设备或黑名单手机号,就能发现团伙欺诈模式。

下图展示了一个包含 3 个节点、2 条边和若干属性的简单反欺诈图谱片段:

图数据结构三要素示例 用户 U001 注册时间: 2024-01-15 设备 D001 型号: iPhone 14 手机号 M001 运营商: 中国移动 登录 绑定 属性说明 • 节点属性:注册时间、型号 • 边属性:登录时间、IP • 边类型:登录、绑定

2.2 同构图与异构图

根据节点和边的类型数量,图结构分为同构图和异构图。反欺诈场景中,异构图是主流,因为它能更真实地反映多类型实体间的复杂交互。

类型 节点类型数 边类型数 反欺诈适用性 典型例子
同构图 1 种 1 种 低(过于简化) 用户-用户转账网络
异构图 ≥ 2 种 ≥ 2 种 高(贴近真实业务) 用户-设备-手机号-银行卡
实战建议:在构建反欺诈图谱时,优先采用异构图。即使初期数据有限,也应预留多种节点类型(如用户、设备、IP)的扩展空间,以便后续接入更多数据源时无需重构图谱。

下图对比了同构图与异构图的视觉差异:

同构图与异构图对比 同构图(用户-用户转账) 用户A 用户B 用户C 转账 转账 异构图(多类型实体) 用户 设备 手机号 登录 绑定

2.3 反欺诈场景下的典型图谱构建

在反欺诈业务中,图谱构建通常遵循“实体识别 → 关系抽取 → 属性填充 → 图存储”的流程。以下是一个针对信贷申请反欺诈的典型图谱构建案例:

2.3.1 实体与关系定义

实体类型 节点标识 关键属性
申请人 user_id 年龄、收入、学历、历史逾期次数
设备 device_fp 设备指纹、操作系统、是否模拟器
手机号 phone 运营商、入网时长、是否虚拟号段
银行卡 card_hash 发卡行、卡类型、绑定时间
IP 地址 ip_addr 地理位置、ASN、代理检测标签
关系类型 起点 → 终点 边属性示例
登录 申请人 → 设备 登录时间、登录结果(成功/失败)
绑定 申请人 → 手机号 绑定时间、是否主卡
转账 申请人 → 银行卡 交易金额、交易时间、交易对手
同设备 设备 → 设备 共享时间窗口、共享 IP

2.3.2 图谱构建流程

  1. 数据接入:从业务数据库、埋点日志、第三方风控数据源抽取原始数据。
  2. 实体对齐:通过设备指纹、手机号、身份证号等唯一标识进行实体去重与合并。
  3. 关系建边:根据时间窗口内的交互行为(如 24 小时内同一设备登录多个用户)建立边。
  4. 属性编码:将离散属性(如运营商)转为 one-hot 或 embedding,连续属性(如交易金额)进行归一化。
  5. 图存储:将构建好的图数据写入图数据库(如 Neo4j)或分布式图存储系统。
常见陷阱:不要将所有历史数据一次性建边。反欺诈图谱应设置合理的时间衰减窗口(如 90 天),避免过时关系引入噪声。同时,边属性(如时间戳)必须保留,以便后续进行时序回放验证。

2.3.3 图谱构建示例(伪代码)

# 伪代码:反欺诈图谱构建核心逻辑
def build_fraud_graph(transactions, devices, phones):
    graph = HeteroGraph()
    # 1. 添加节点
    for user in transactions['user_id'].unique():
        graph.add_node(node_id=user, node_type='user',
                       features={'age': user_age, 'income': user_income})
    for device in devices['device_fp'].unique():
        graph.add_node(node_id=device, node_type='device',
                       features={'os': device_os, 'is_emulator': is_emu})
    # 2. 添加边(基于时间窗口)
    for _, row in transactions.iterrows():
        if within_time_window(row['timestamp'], window_days=90):
            graph.add_edge(src=row['user_id'], dst=row['device_fp'],
                           edge_type='login',
                           features={'timestamp': row['timestamp'],
                                     'ip': row['ip_addr']})
    return graph

2.4 本章小结

  • 图数据结构由节点、边、属性三要素构成,反欺诈场景中边的关系语义至关重要。
  • 异构图比同构图更适合反欺诈,因为它能建模多类型实体间的复杂交互。
  • 典型反欺诈图谱构建包括实体定义、关系抽取、属性编码、图存储四个步骤,需注意时间窗口和边属性的保留。