2. 欺诈团伙建模基础

在进入 GNNExplainer 的模型解释实战之前,必须先回答一个更基础的问题:我们到底在建模什么?如果对“团伙欺诈”的业务定义、图结构表达方式和数据特点理解不清,后续的解释结果就很容易变成“看起来合理但无法落地”的噪声。本节围绕四个核心问题展开:团伙欺诈如何定义、如何用图结构表示、节点与边分别承载什么语义、以及典型业务场景下的数据特点与建模难点。

一、核心原理:团伙欺诈的定义与图建模动机

团伙欺诈(Fraud Ring / Collusive Fraud)指两个或两个以上的主体,通过共享身份、设备、资金、通讯或行为模式,协同实施欺诈以获取非法利益的行为。它与单点欺诈的本质区别在于:欺诈信号分散在多个主体之间的关联关系上,而非集中在单个主体的属性里。例如,一个手机号单独看可能完全正常,但它同时绑定了 30 个新注册账户、与另外 5 个已被处罚的设备共用 IP,这种“关系模式”才是风险的核心。

传统表格模型(如逻辑回归、XGBoost)把每个样本当作独立个体,只能使用该主体自身的属性特征,难以直接表达“A 与 B 共用设备”“C 是 D 的收款上家”这类关系。图结构天然适合表达这类问题:把主体建模为节点,把主体间的关系建模为边,欺诈识别就转化为图上的节点分类、边预测或子图异常检测问题。

一句话理解:单点欺诈看“这个人像不像坏人”,团伙欺诈看“这群人之间的关系像不像一个团伙”。GNN 的价值在于把邻居信息聚合进节点表示,从而捕捉这种群体性风险。

二、图结构表示:节点、边与图的构建流程

构建一张欺诈团伙图,通常遵循“实体抽取 → 关系抽取 → 图构建 → 特征附加”的流程。下面给出一个可运行的构图伪代码,帮助理解节点与边是如何从业务数据中产生的。

# 构图流程示意(伪代码)
nodes = []
edges = []

# 1. 实体抽取:从业务表中抽取主体
for user in users_table:
    nodes.append({"id": user.id, "type": "user", "features": user.features})

for device in devices_table:
    nodes.append({"id": device.id, "type": "device", "features": device.features})

# 2. 关系抽取:从行为日志中抽取关联
for log in login_logs:
    edges.append({"src": log.user_id, "dst": log.device_id,
                  "type": "login_on", "timestamp": log.ts})

for tx in transactions:
    edges.append({"src": tx.from_user, "dst": tx.to_user,
                  "type": "transfer_to", "amount": tx.amount})

# 3. 图构建:合并为异构图
G = HeteroGraph(nodes=nodes, edges=edges)

# 4. 特征附加:节点特征 + 边特征
G.attach_node_features()
G.attach_edge_features()

在实际工程中,图通常不是单一同构图,而是包含多种节点类型(用户、设备、银行卡、IP、商户)和多种边类型(登录、转账、绑定、共用)的异构图。异构图的表达能力更强,但也对模型设计和解释方法提出了更高要求。

三、节点与边语义:谁在图中代表什么

理解节点与边的语义,是后续解释 GNN 预测结果的前提。下表总结了欺诈团伙图中常见的节点类型、边类型及其业务含义。

元素类型具体类型业务语义典型特征
节点用户注册账户主体注册时长、实名状态、历史风险分
节点设备手机、电脑等终端设备指纹、机型、是否模拟器
节点银行卡/支付账户资金流转载体开户行、卡龄、绑定账户数
节点IP/网络访问来源IP 归属地、代理标记、共用人数
边登录用户使用设备登录频次、时间间隔
边转账资金流向金额、笔数、时间集中度
边共用多主体共享同一资源共享设备数、共享 IP 数

建模提示:边不是“可有可无的连接”,边本身携带强风险信号。例如“同一设备在 10 分钟内登录 20 个新账户”这条边序列,往往比节点属性更能揭示团伙行为。因此在特征工程中,边特征与节点特征同等重要。

四、典型业务场景与数据特点

团伙欺诈在不同业务场景下表现不同,但数据层面有一些共性特点,直接影响建模与解释策略。

  • 场景一:营销薅羊毛。大量新注册账户通过同一设备或 IP 领取优惠券,节点间通过“共用设备”形成密集子图。
  • 场景二:信贷申请欺诈。多个申请人共享联系人、住址或工作单位,形成申请团伙,边以“共用信息”为主。
  • 场景三:电诈资金归集。资金从多个受害账户流向少数归集账户,形成明显的“多对一”资金流子图。
  • 场景四:刷单炒信。商户与刷手之间形成高频、低金额、循环转账的交易网络。

这些场景的数据特点可以归纳为三点:

  1. 类别极度不平衡。欺诈节点占比通常低于 1%,正负样本比例可能达到 1:1000 甚至更低,模型容易偏向多数类。
  2. 关系稀疏且噪声大。真实团伙关系只占全部边的一小部分,大量边是正常业务行为,形成“大海捞针”式的信号分布。
  3. 时间动态性强。团伙会快速更换设备、IP 和账户,图结构随时间演化,静态图模型可能迅速失效。

常见误区:把“关联多”直接等同于“欺诈”。高活跃正常用户同样可能关联大量设备和 IP。建模时必须结合边的时间、频率、金额等上下文特征,避免把正常的高连接度误判为团伙风险。

五、复盘:从业务定义到图建模的关键检查点

在进入 GNN 建模之前,建议用以下清单自查图构建是否合理:

  • 节点类型是否覆盖了业务中所有关键主体?是否遗漏了“商户”“代理商”等中间角色?
  • 边类型是否表达了真正的风险传导路径?例如“共用设备”是否比“同城”更有区分度?
  • 节点和边的特征是否包含时间维度?是否会导致标签泄漏?
  • 训练集、验证集、测试集是否按时间切分?随机切分可能高估模型效果。
  • 是否存在“未来信息”被提前引入特征?例如用事后确认的欺诈标签构造边特征。

只有把团伙欺诈的业务定义、图结构语义和数据特点梳理清楚,后续 GNNExplainer 给出的解释(例如“哪些邻居节点和边对预测贡献最大”)才能被业务方正确理解和采纳。否则,解释结果再精确,也无法转化为可执行的风控策略。