第2章:反欺诈图谱基础——图谱构建与节点特征

做反欺诈的人,手里没张图谱,就好像上战场没带地图。我个人觉得,图谱这东西,说白了就是把散落在各个角落的数据点,用关系串起来。你今天转账给谁,谁又转给了谁,这些动作在表格里只是一行行冰冷的记录,但在图里,它就是活生生的网络。

我刚开始带团队时,有人问我:“我们不就是做规则模型吗?搞这么复杂干嘛?”结果翻车了——团伙欺诈,单看每个账户都没问题,一拉图谱,全是关联。从那以后,图谱就成了我们反欺诈的标配。

这一章,咱们聊聊图谱怎么建,节点特征怎么提炼。别急,都是干货。

核心观点:图谱的本质是把“单点判断”升级为“网络研判”。没有高质量的节点特征,再漂亮的图也是空中楼阁。

2.1 图谱的骨架——实体与关系

构建图谱的第一步,是确定节点和边。你想想看,欺诈场景里,什么是核心实体?

  • 自然人:身份证号、手机号、设备ID、IP地址……这些都是人的化身。
  • 账户:银行卡号、支付账号、虚拟钱包。
  • 事件:交易记录、登录行为、修改密码请求。

有了实体,再来定义关系。我习惯用“行为”和“属性”两类来划分子:

关系类型 举例 重要性
行为关系 A向B转账、A使用设备C登录 最直接,时间敏感
属性关系 A和B共用同一手机号、同一IP 识别共用身份、团伙
衍生关系 A是B的担保人、A是B的手机联系人 深度挖掘,易被忽略

别小看属性关系。我曾经遇到过一个案例,两个账户看起来毫无交易往来,但注册手机号只差最后一位。图谱一渲染,共用同一个WiFi IP……嘿,同一个团伙。

2.2 节点特征的“三驾马车”

节点不是空壳,得附上信息才能干活。这些信息就是节点特征。我把它们分成三类,咱们挨个看。

2.2.1 属性特征——你是谁

静态的、不怎么变的数据。比如:

  • 账户注册时间、是否实名、注册渠道。
  • 设备型号、系统版本、是否root。
  • IP归属地、是否代理IP。

这类特征好理解,但容易造假。我建议:不要轻信设备指纹中的“是否模拟器”标签,很多最新模拟器能绕过检测。

2.2.2 统计特征——你做了什么

对节点关联的所有事件做聚合计算。常用的有:

  • 过去1小时、1天、7天的交易次数和金额。
  • 交易对手数量、设备切换次数。
  • 操作时间的分布(是不是总在凌晨活跃)。
小技巧:时间窗口的选择很关键。我习惯按业务节奏来定——如果是借贷,用30天的历史;如果是支付,重点关注过去24小时。

2.2.3 图拓扑特征——你在网络中的位置

这是图谱特有的优势。常见的指标:

  • 度(Degree):节点关联边的数量。关联越多,越可疑或越重要。
  • PageRank:衡量节点在网络中的“影响力”。欺诈节点往往聚在一起,PageRank会异常高或异常低。
  • 聚类系数:衡量节点的邻居之间是否互相连接。高密度小团伙就是这个指标高。
  • 介数中心性:节点充当“桥梁”的程度。中间人洗钱账户的这个值通常很高。
我曾经踩过的坑:有次做特征工程,我把度特征直接丢进模型,结果团伙首脑因为“关联少”被判为清白。后来加了“二阶度”,也就是“朋友的关联数”,才把它揪出来。记住,只看本节点关系,容易错过大鱼。

2.3 时间戳建模——让图“动”起来

图谱不能是静态的快照。欺诈行为有很强的时效性——今天和你交易的IP,后天可能就成了黑产。我建议每个节点和边都带上时间戳集合。

怎么用?举个例子:

  • 计算最近一次交易的距今时间。间隔越短,行为越“热”。
  • 统计历史上的“断连”模式。比如某设备连续3个月没活动,突然激活进行大额交易。
  • 构建“时间衰减权重”。老关系的权重低,新关系的权重高。
# 伪代码:计算节点最近活跃时间
def last_active_hours(node_id, current_time, graph):
    events = graph.get_node_events(node_id)
    # 只取最近500条,避免内存爆炸
    recent = sorted(events, key=lambda x: x['timestamp'], reverse=True)[:500]
    if not recent:
        return 999999  # 极大值代表长期沉默
    delta = (current_time - recent[0]['timestamp']).total_seconds() / 3600
    return delta

嗯,要注意时间衰减的粒度。按我经验,小时级窗口用于检测爆发式攻击,天级窗口适合发现缓慢渗透的团伙。

2.4 图谱快照与增量更新——别卡死在“重建”上

线上一套图谱,每天交易量上亿条。你全部重算?不行,太慢了。我建议做分层处理:

层级 更新频率 典型做法
全量快照 每天/每周一次 离线ETL,基于全量数据重建图谱
增量图 分钟/实时 仅处理新增的交易和变化的关系
实时子图 毫秒级 基于当前请求,提取目标节点的2-3度邻居
我的建议:全量快照用于离线特征工程和模型训练;增量图用于线上实时推理。千万别拿离线代码去跑线上流,你的集群会哭。

有人会问:“快照和增量两张图,特征能对齐吗?”能,但得小心。增量图由于数据不完整,度的计算会偏小。解决办法是在增量图上使用“相对特征”,比如“当前节点的度是快照时的多少百分比”,而不是直接用绝对值。

这一章就聊到这儿。图谱构建是地基,节点特征是砖石。下一节里,咱们再深入变量衍生的细节——怎么把图谱特征变成能吃进模型的好“菜”。

反欺诈图谱构建与节点特征流程 原始行为数据 实体识别 & 关系抽取 自然人 | 账户 | 设备 | 交易事件 属性特征 你是谁 统计特征 你做了什么 拓扑特征 你是什么位置 时间戳建模 & 衰减权重 让图动起来 图谱快照 + 增量更新策略 全量快照(离线) | 增量图(实时) | 实时子图