3. 反欺诈图谱数据准备:用户设备、IP、手机号、交易等实体关系抽取与特征工程

反欺诈图谱的构建质量直接决定 GraphSAGE 模型的上限。本节聚焦从原始日志到图结构的全流程:实体识别、关系抽取、属性特征工程与图拓扑特征构造。数据源涵盖用户设备指纹、IP 地址、手机号、交易流水等核心反欺诈字段。

3.1 实体定义与抽取

在反欺诈场景中,实体(Node)是图谱的基本单元。每个实体需具备唯一标识(ID)和类型标签。以下为常见实体类型及其抽取逻辑:

实体类型 实体标识(ID) 抽取来源 示例
用户(User) user_id 注册/登录日志 U100234
设备(Device) device_fingerprint SDK 采集、UA 解析 DF_ABC123XYZ
IP 地址(IP) ip_address 请求头、网络日志 203.0.113.45
手机号(Phone) phone_number 注册/绑卡信息 138****5678
交易(Transaction) transaction_id 交易流水表 TXN_987654
银行卡(Card) card_hash 绑卡/支付信息 HASH_4A3B2C
实操要点:设备指纹需做归一化处理(如去除空格、统一大小写);IP 地址建议同时保留 IPv4 和 IPv6 格式;手机号应脱敏后存储,仅保留前三位和后四位用于关联。

3.2 关系抽取与边构建

关系(Edge)定义了实体之间的交互行为。在反欺诈图谱中,关系通常带有时间戳、频次、金额等属性。以下为关键关系类型及其抽取规则:

  • 用户 → 设备:登录/操作日志中 user_id 与 device_fingerprint 的绑定关系。边属性:首次绑定时间、最近绑定时间、绑定次数。
  • 用户 → IP:每次请求的源 IP。边属性:IP 归属地(国家/城市)、ISP、使用时段分布。
  • 用户 → 手机号:注册或修改手机号记录。边属性:绑定时间、是否主手机号。
  • 用户 → 交易:用户发起的每笔交易。边属性:交易金额、交易类型(转账/消费/提现)、交易时间、交易状态。
  • 设备 → IP:设备通过某个 IP 发起请求。边属性:首次出现时间、累计请求次数。
  • 手机号 → 交易:手机号作为交易验证或通知渠道。边属性:验证成功/失败次数。
关系抽取核心原则:每条边必须包含时间维度(timestamp),以便后续进行时序图分析和快照采样。缺失时间戳的关系应标记为“未知”,并降低其在模型训练中的权重。

3.3 实体属性特征工程

实体特征分为静态属性(如注册时间)和动态统计属性(如过去 24 小时登录次数)。以下为各实体的典型特征工程清单:

实体 特征类别 特征示例 计算方式
用户 基础属性 注册时长(天)、账户等级、是否实名 直接映射
行为统计 近 7 天登录次数、平均交易金额、设备更换频率 滑动窗口聚合
设备 硬件属性 操作系统版本、屏幕分辨率、是否模拟器 SDK 上报解析
风险画像 关联用户数、关联 IP 数、黑名单命中次数 图遍历计数
IP 地理属性 国家、城市、经纬度、ASN 编号 IP 库查询
行为属性 过去 1 小时请求量、代理/VPN 标记、数据中心标记 流式统计 + 第三方情报
交易 金额属性 交易金额、金额与历史均值偏差 Z-score 计算
时序属性 交易时间(小时/星期)、距上一笔交易间隔 时间差计算

3.4 图拓扑特征构造

GraphSAGE 模型不仅依赖节点自身属性,更依赖邻居结构信息。以下为在特征工程阶段可预先计算的拓扑特征:

  • 节点度(Degree):每个实体的直接邻居数量。例如,一个设备关联了 50 个用户,则其度数为 50。高度数设备可能是共享设备或代理节点。
  • 局部聚类系数(Local Clustering Coefficient):衡量节点邻居之间的连接紧密程度。欺诈团伙中节点往往形成高密度子图。
  • PageRank 值:通过迭代计算节点在图中的重要性。高风险节点通常具有异常的 PageRank 分布。
  • K-core 值:节点所属的最大 k-core 层级。欺诈团伙核心成员通常位于高 k-core 区域。
  • 邻居异质性(Neighbor Heterogeneity):节点邻居的类型分布熵。例如,一个用户同时关联多个设备、多个 IP 和多个手机号,异质性高,可能为异常。
注意:拓扑特征计算需在每次图更新后重新执行。对于大规模图(节点数 > 1 亿),建议使用分布式图计算框架(如 Spark GraphX、TigerGraph)进行离线批处理,避免单机 OOM。

3.5 数据准备流程总览

以下 SVG 图展示了从原始日志到 GraphSAGE 输入特征的完整数据准备流水线:

反欺诈图谱数据准备流程 原始日志 设备指纹库 第三方情报 实体抽取与归一化 用户 ID | 设备指纹 | IP 地址 | 手机号 | 交易 ID | 银行卡 Hash 关系抽取与边构建 用户-设备 | 用户-IP | 用户-手机号 | 用户-交易 | 设备-IP | 手机号-交易 特征工程 实体属性特征 + 图拓扑特征(Degree / PageRank / K-core / 聚类系数) GraphSAGE 模型输入(节点特征 + 邻接表)

3.6 特征存储与版本管理

完成特征工程后,需将特征数据组织为 GraphSAGE 可消费的格式。推荐使用以下存储方案:

数据组件 存储格式 说明
节点特征表 Parquet / ORC 每行一个节点,列包含 node_id、node_type、所有特征字段
边表 Parquet / CSV 每行一条边,列包含 src_id、dst_id、edge_type、timestamp、边属性
特征元数据 JSON / YAML 记录特征名称、类型、缺失值处理策略、归一化参数
版本快照 时间戳目录 每日/每小时生成一份快照,支持模型回滚和对比实验
工程建议:使用特征存储平台(如 Feast、Tecton)管理在线/离线特征一致性。GraphSAGE 训练时使用离线特征,推理时通过特征服务平台提供实时特征,避免训练/推理特征不一致导致的模型效果衰减。

3.7 数据质量校验

在数据进入模型之前,必须通过以下质量检查:

  • 完整性检查:节点 ID 无空值,边表无悬挂边(即边引用的节点 ID 在节点表中存在)。
  • 唯一性检查:同一实体类型下无重复 ID。
  • 时效性检查:边的时间戳在合理时间范围内(如不早于 1970 年,不晚于当前时间 + 1 小时)。
  • 分布检查:数值型特征无异常离群值(如交易金额为负数),类别型特征无未注册类别。
  • 图连通性检查:孤立节点(无边连接)占比不应超过 5%,否则需排查数据源是否遗漏关系。
常见踩坑:设备指纹因采集 SDK 版本不同导致同一设备生成多个指纹,需做指纹合并(Merge)逻辑。建议在实体抽取阶段维护一个“设备指纹映射表”,记录指纹之间的等价关系。