图谱变量衍生概述:从原始数据到衍生特征

做反欺诈图谱,最痛苦的事是什么?不是算法选得不对,也不是参数调不好——而是你手里一堆原始节点和边,却不知道怎么变成能吃进模型的特征。说白了,变量衍生这个环节,直接决定了你的模型是“火眼金睛”还是“睁眼瞎”。

我入行头两年就栽过跟头。一个电商支付场景,我直接把用户ID、设备ID、IP地址扔进XGBoost,结果AUC才0.62。同事用了一套图谱衍生特征,同样的模型直接干到0.89。差距在哪?就在这些衍生变量上。

今天这一章,咱们就从头捋一遍:图谱变量衍生到底在干什么,有哪些固定套路,又有哪些坑绝对不能踩。

从原始数据到衍生特征:图谱变量衍生流程 原始图谱数据 节点属性提取 边关系统计 子图/社区特征 时序窗口统计 全局图指标 最终衍生特征集 分组说明:原始数据 → 多维度并行衍生 → 聚合为最终特征集

节点属性衍生:最基础也最容易被忽略

先聊聊最简单的——节点属性。每个节点(用户、设备、IP)本来就有一些字段,比如注册时长、设备型号、IP的地理位置。但这些原始字段直接丢进去,模型根本学不到图谱特有的信息。

我个人的习惯是,先做三件事:

  • 统计型衍生:比如节点拥有的联系人个数、设备关联的账户数、IP出现的订单数。注意:不能只统计全局,要分时间窗口(近1小时、近24小时、近7天)。
  • 比例型衍生:比如“该节点关联的高风险用户占比”。“绝对数量容易受业务量波动影响,比例反而更鲁棒。”我在一个贷前场景里,光加了一个“近1周新增关联风险账户数/总关联账户数”的比率,模型KS就涨了0.05。
  • 离散型编码:设备类型、操作系统这类categorical变量,不要简单one-hot。我建议用目标编码或频数编码(结合图谱内同类型节点的平均风险率)。
我曾经踩过的坑:把所有节点属性一股脑全衍生,结果特征维度从30维直接爆到2000维,模型过拟合得一塌糊涂。后来我只保留那些在图谱内区分度明显的衍生字段——比如账户关联设备数>5时,欺诈率翻3倍。没有区分度的字段,删!

边关系统计:别只数个数

边关系是图谱的精髓。两个节点之间有一笔交易、一个登录、一次通话……这些边的数量、方向、频率、时间间隔,全都是宝藏。

举个例子,我们经常需要统计“某用户近期关联设备数”。但如果你只统计个数,那就太粗糙了。

变量名 定义 业务含义
cnt_device_1h 过去1小时关联的设备数 短时间内换多个设备,异常
cnt_device_24h 过去24小时关联的设备数 日维度聚合,看是否超常
uniq_ip_7d 过去7天使用的不同IP数 IP分布广,可能是代理
avg_time_between_logins 两次登录间的平均间隔(分钟) 用户行为节奏,异常短或异常长

你想想看,正常用户一天登录一两次,极少数电商重度用户会刷10次。但一个欺诈团伙可能在一小时内登录20个账号,每个账号只登录一次。这个“平均登录间隔”就会特别短。这就是边关系统计的力量。

子图与社区特征:群体行为刻画

单个节点的变量再丰富,也看不穿整个团伙。这时候就需要子图特征了。说白了,就是把一个节点所在的“小圈子”拿出来算指标。

常用的子图特征包括:

  • 连通子图大小:该节点所属的连通分量里有多少个节点。欺诈团伙往往形成密集团伙,连通子图比正常用户大很多。
  • 子图密度:实际边数 / 完全图边数。团伙内部通常相互关联,密度高;正常用户之间关联稀疏。
  • 核心节点距离:该节点到子图中心节点的最短路径长度。离核心越近,可能是团伙骨干。
一个实用的技巧:计算子图特征时,记得做归一化。比如子图密度除以该子图的理论最大密度,得到0~1之间的值。不然不同规模子图的密度无法直接比较。

时序窗口与滑动统计:把时间维度加进来

图谱不是静止的。用户今天的行为和昨天的行为,对风控来说意义完全不同。我最常用的是滑动窗口统计,窗口大小通常取1小时、6小时、24小时、7天、30天。

具体怎么做?

  1. 确定一个时间点(比如当前订单的创建时间)。
  2. 往前回溯1小时,统计该用户所有关联事件(登录、支付、注册等)的个数、失败比例、异常类型分布。
  3. 把1小时、6小时、24小时的统计结果作为三个独立的特征。
  4. 有些场景还需要对比窗口差异,比如“最近1小时的活动量 / 过去24小时平均每小时活动量”。比值远大于1,可能是在短时间内集中操作。
这里有个关键点:滑动窗口的起始时间必须基于样本自身的上下文时间,不能简单用系统时间。否则会导致未来信息泄露——你用未来数据预测过去事件,模型在训练集上表现极好,一到线上就崩。这个问题我吃过亏,线上AUC从0.87掉到0.55,查了两天才发现是时间窗口没用对。

全局图指标:从整个图看异常

最后一种衍生方向是全局图指标。这类特征不针对单个节点,而是整个图谱的宏观统计量。常见的包括:

  • 图的平均聚集系数:整体图结构的紧密程度。欺诈场景下,全局聚集系数往往偏高。
  • 图的直径:最长最短路径长度。团伙内部往往直径小。
  • PageRank变异系数:所有节点PageRank值的标准差/均值。如果少数节点PageRank极高,可能是聚集中心。

不过要注意,这类特征通常只作为全局上下文,不能单独依赖。我在一个项目里尝试把全局聚集系数作为唯一特征,结果模型完全不会泛化——因为不同批次的图结构差异太大。

避坑总结:变量衍生常见的5个错误

错误编号 错误描述 我的建议
1 把所有衍生特征一股脑全丢进去 先用单变量分析筛选,保留区分度大于0.1的特征
2 忽略时间窗口对齐 每个样本只使用其历史时间窗口内的数据
3 百分比和绝对量混用不归一 尽量使用比例、差值、排名等标准化特征
4 子图特征不进行图连通性校验 孤立节点的子图大小为1,要单独处理
5 全局图指标作为模型主要特征 只用于横向对比,不要做决策依据