图谱变量衍生概述:从原始数据到衍生特征
做反欺诈图谱,最痛苦的事是什么?不是算法选得不对,也不是参数调不好——而是你手里一堆原始节点和边,却不知道怎么变成能吃进模型的特征。说白了,变量衍生这个环节,直接决定了你的模型是“火眼金睛”还是“睁眼瞎”。
我入行头两年就栽过跟头。一个电商支付场景,我直接把用户ID、设备ID、IP地址扔进XGBoost,结果AUC才0.62。同事用了一套图谱衍生特征,同样的模型直接干到0.89。差距在哪?就在这些衍生变量上。
今天这一章,咱们就从头捋一遍:图谱变量衍生到底在干什么,有哪些固定套路,又有哪些坑绝对不能踩。
节点属性衍生:最基础也最容易被忽略
先聊聊最简单的——节点属性。每个节点(用户、设备、IP)本来就有一些字段,比如注册时长、设备型号、IP的地理位置。但这些原始字段直接丢进去,模型根本学不到图谱特有的信息。
我个人的习惯是,先做三件事:
- 统计型衍生:比如节点拥有的联系人个数、设备关联的账户数、IP出现的订单数。注意:不能只统计全局,要分时间窗口(近1小时、近24小时、近7天)。
- 比例型衍生:比如“该节点关联的高风险用户占比”。“绝对数量容易受业务量波动影响,比例反而更鲁棒。”我在一个贷前场景里,光加了一个“近1周新增关联风险账户数/总关联账户数”的比率,模型KS就涨了0.05。
- 离散型编码:设备类型、操作系统这类categorical变量,不要简单one-hot。我建议用目标编码或频数编码(结合图谱内同类型节点的平均风险率)。
边关系统计:别只数个数
边关系是图谱的精髓。两个节点之间有一笔交易、一个登录、一次通话……这些边的数量、方向、频率、时间间隔,全都是宝藏。
举个例子,我们经常需要统计“某用户近期关联设备数”。但如果你只统计个数,那就太粗糙了。
| 变量名 | 定义 | 业务含义 |
|---|---|---|
| cnt_device_1h | 过去1小时关联的设备数 | 短时间内换多个设备,异常 |
| cnt_device_24h | 过去24小时关联的设备数 | 日维度聚合,看是否超常 |
| uniq_ip_7d | 过去7天使用的不同IP数 | IP分布广,可能是代理 |
| avg_time_between_logins | 两次登录间的平均间隔(分钟) | 用户行为节奏,异常短或异常长 |
你想想看,正常用户一天登录一两次,极少数电商重度用户会刷10次。但一个欺诈团伙可能在一小时内登录20个账号,每个账号只登录一次。这个“平均登录间隔”就会特别短。这就是边关系统计的力量。
子图与社区特征:群体行为刻画
单个节点的变量再丰富,也看不穿整个团伙。这时候就需要子图特征了。说白了,就是把一个节点所在的“小圈子”拿出来算指标。
常用的子图特征包括:
- 连通子图大小:该节点所属的连通分量里有多少个节点。欺诈团伙往往形成密集团伙,连通子图比正常用户大很多。
- 子图密度:实际边数 / 完全图边数。团伙内部通常相互关联,密度高;正常用户之间关联稀疏。
- 核心节点距离:该节点到子图中心节点的最短路径长度。离核心越近,可能是团伙骨干。
时序窗口与滑动统计:把时间维度加进来
图谱不是静止的。用户今天的行为和昨天的行为,对风控来说意义完全不同。我最常用的是滑动窗口统计,窗口大小通常取1小时、6小时、24小时、7天、30天。
具体怎么做?
- 确定一个时间点(比如当前订单的创建时间)。
- 往前回溯1小时,统计该用户所有关联事件(登录、支付、注册等)的个数、失败比例、异常类型分布。
- 把1小时、6小时、24小时的统计结果作为三个独立的特征。
- 有些场景还需要对比窗口差异,比如“最近1小时的活动量 / 过去24小时平均每小时活动量”。比值远大于1,可能是在短时间内集中操作。
全局图指标:从整个图看异常
最后一种衍生方向是全局图指标。这类特征不针对单个节点,而是整个图谱的宏观统计量。常见的包括:
- 图的平均聚集系数:整体图结构的紧密程度。欺诈场景下,全局聚集系数往往偏高。
- 图的直径:最长最短路径长度。团伙内部往往直径小。
- PageRank变异系数:所有节点PageRank值的标准差/均值。如果少数节点PageRank极高,可能是聚集中心。
不过要注意,这类特征通常只作为全局上下文,不能单独依赖。我在一个项目里尝试把全局聚集系数作为唯一特征,结果模型完全不会泛化——因为不同批次的图结构差异太大。
避坑总结:变量衍生常见的5个错误
| 错误编号 | 错误描述 | 我的建议 |
|---|---|---|
| 1 | 把所有衍生特征一股脑全丢进去 | 先用单变量分析筛选,保留区分度大于0.1的特征 |
| 2 | 忽略时间窗口对齐 | 每个样本只使用其历史时间窗口内的数据 |
| 3 | 百分比和绝对量混用不归一 | 尽量使用比例、差值、排名等标准化特征 |
| 4 | 子图特征不进行图连通性校验 | 孤立节点的子图大小为1,要单独处理 |
| 5 | 全局图指标作为模型主要特征 | 只用于横向对比,不要做决策依据 |