🛡️图计算增强反欺诈风控
type
status
date
slug
summary
tags
category
icon
password
Status

引言:当传统“规则引擎”遭遇瓶颈

想象一个典型的信用卡盗刷场景:一个欺诈团伙通过各种手段获取了大量用户信用卡信息,他们并不直接盗刷,而是通过一系列精心设计的、看似无关的交易,在一级、二级甚至三级商户网络中快速转移资金并最终套现。
对于传统的反欺诈系统,这几乎是一场噩梦。这些系统大多依赖于规则引擎(Rule Engine),通过一系列 IF-THEN 逻辑来判断风险。这种方法的局限性日益凸显:
  1. 规则静态:欺诈手段层出不穷,静态规则库永远在“亡羊补牢”。
  1. 数据孤岛:规则引擎审查的是孤立的个人或单次交易,无法看到隐藏在数据背后的“关系网”。
  1. 易于规避:专业的欺诈团伙早已摸透了这些规则,他们会将大额交易拆分成多笔小额,或利用多个“干净”的中间账户进行跳转,完美绕过监控。
问题的核心在于,我们面对的敌人早已不是“个体作案”,而是高度组织化、网络化的“团伙作案”。要战胜他们,我们的技术思维必须从关注**“规则”,升级到洞察“关系”**。而这,正是图计算技术大放异彩的舞台。

第一部分:图之范式——重塑风险认知的新视角

图计算的核心思想是将世界建模成一个由“点”和“边”构成的网络。
  • 点 (Node):代表业务中的核心实体。在反欺诈场景中,点可以是:
    • 一个用户、一个银行账户
    • 一台设备(手机、电脑)、一个IP地址收货地址
  • 边 (Edge):代表实体之间的具体关系或行为。边可以是:
    • 用户A [转账]-> 账户B
    • 用户C [共享设备]-> 设备D
    • 账户E 和 账户F [共同联系人]-> 用户G
通过这种方式,原本散落在数据库表中的孤立数据点,被编织成了一张巨大且信息丰富的关系网络。欺诈团伙在其中留下的蛛丝马迹,不再是零散的日志,而是结构化的、可被分析的图谱模式。

第二部分:核心方法论——从离线挖掘到实时拦截的飞跃

图计算在反欺诈领域的实践,经历了从离线分析到实时拦截的演进。这两种模式相辅相成,构成了现代风控的纵深防御体系。

2.1 基础:基于批量计算的离线图挖掘

这是图反欺诈的 foundational step,旨在通过对海量历史数据的深度分析,挖掘出潜藏的、宏观的欺诈模式和团伙。
第一步:构建带权重的风险图
图中的“边”并非生而平等。一个母亲给儿子的常规转账,和两个陌生账户之间深夜的快速大额交易,其风险含义截然不同。因此,我们为“边”赋予权重(Weight),也即风险评分。有趣的是,我们并未完全抛弃“风控规则”,而是将其巧妙地“降维使用”——用风控规则来动态计算边的权重
“风控规则其实是用来算权重的。”
举个例子: 用户张三,其信用卡评分较低,每月正常还款额约为400元。现在,他突然向一个陌生账户转账了1万元。我们可以设计一个权重计算函数:

风险权重公式 (示例)

notion image
notion image
下面是一些具体的特征函数 φ_i 的例子:

1. 交易自身特征 (Edge Features)

notion image
notion image
notion image

总结公式

将这些具体的特征代入,我们的风险权重公式就变得非常清晰:
notion image
 
上面公式清晰地展示了,最终边的权重(风险)是综合了交易本身、交易双方、以及双方在整个图谱中的关系结构等多个维度信息后,计算出的一个量化结果。这比简单的 f(...) 更能体现图计算在风控领域的深度和威力。
 
这条边的权重(风险分)会变得非常高。通过这种方式,我们将业务逻辑量化为图上的拓扑属性,构建了一张带权重的有向图(Weighted Directed Graph)。
第二步:用图算法挖掘“欺诈孤岛”
在T+1的批处理窗口,我们可以对这张全量快照图运行复杂的算法,来定位欺诈团伙。
  • 极大连通子图 (Maximal Connected Subgraph):用于圈定所有可能相关的实体,锁定一个大的嫌疑范围。
  • 最小割 (Minimum Cut)——精准“切割”出犯罪团伙:一个成熟的欺诈网络,其内部关联必然是紧密而频繁的,而他们与外部正常用户网络的关联则是稀疏而薄弱的。最小割算法的目标,就是找到并“切断”这些最薄弱的连接边,将一张庞大、混沌的图,精准地切割成数个独立的、高内聚的“欺诈孤岛”。
  • 三角形计算 (Triangle Counting):一个衡量社区紧密度的经典指标。一个网络中的三角形越多,代表其内部成员“抱团”越紧,是典型的高风险团伙特征。
这种离线挖掘模式非常强大,但它的天生缺陷是时效性差,无法对正在发生的欺诈行为做出反应。

2.2 演进:拥抱实时流计算以实现即时拦截

要实现“事中拦截”,技术范式必须再次革新。
理论之跃:从“全量重算”到“增量更新”
特性
批量图计算 (Batch)
流式图计算 (Streaming)
数据
有界的、静态的数据集 (Snapshot)
无界的、连续的数据流 (Event Stream)
模式
全量重算 (Re-computation)
增量更新 (Incremental Update)
核心
在T+1加载完整数据,运行算法,输出结果
持续维护一个状态 (State),对每个新事件进行局部更新
时效性
小时级 / 天级
毫秒级 / 秒级
流式计算的核心是 增量计算 (Incremental Computation)有状态流处理 (Stateful Stream Processing)。当一个新的事件(如一笔转账)发生时,系统不会重新计算整张图的风险,它只会计算这个事件直接或间接影响的局部区域。其背后的“状态”,就是整张图。
架构蓝图:一个准实时的图反欺诈系统
  1. 事件注入层 (Ingestion Layer):Apache Kafka 等消息队列接收来自业务系统的实时事件流。
  1. 流处理/计算层 (Processing Layer):Apache Flink 等流处理引擎作为系统大脑,订阅事件并执行计算。
  1. 图状态存储层 (Graph State Storage):TuGraph 或其他支持高频读写的图数据库,持久化存储整张图的“活”状态。
  1. 结果缓存/服务层 (Serving Layer):Redis 等内存数据库存放最终的实时风险评分,供下游高速查询。
  1. 应用/API层 (Application Layer):提供低延迟API接口,供业务系统在交易中同步调用。
核心流程:一笔交易的实时风险计算之旅
让我们跟随一笔从账户A到账户B的转账,看看它在系统中的毫秒级旅程:
  1. 事件产生: 交易系统向 Kafka 发送一条消息。
  1. Flink作业消费: Flink 作业消费消息,解析出 (A)-[转账]->(B)
  1. 图的局部更新: Flink 程序向图数据库发起请求,创建这条新的边并更新AB的出入度。
  1. 触发增量计算(核心):
      • 定义计算范围: 设定一个范围,如2跳邻居(2-hop neighborhood),避免计算在全图蔓延。
      • 提取局部子图: Flink 从图数据库中,拉取AB及其一、二度邻居的属性到内存。
      • 执行计算逻辑: 在这个局部子图上,实时计算新风险。例如,A的邻居平均风险分是多少?B是否连接了其他“骡子账户”?AB是否属于同一个已知的欺诈社区?
      • 汇总新风险: 通过加权模型(可以是简单的线性归因,也可以是预训练好的GNN模型),计算出AB新风险总分
  1. 结果传播与输出: 计算出的新风险分被写回图数据库,并同步到Redis缓存中,覆盖旧值。
  1. 应用调用: 业务系统通过API从Redis查询,在几毫秒内就能得到最新的风险分并做出决策。
挑战与权衡
  • 延迟 vs. 准确度: 增量计算的范围(跳数)越大,分析得越准,但耗时也越长,这是一个核心的业务权衡。
  • “热点”问题: 超级节点(如大型商户账户)会产生计算瓶颈,需要通过图拆分、异步处理等手段优化。
  • 一致性: 大多数系统选择**最终一致性(Eventual Consistency)**来换取高性能,这对于反欺诈这种概率性判断场景通常可以接受。

第三部分:技术与实践

3.1 演进中的技术栈

  • 离线分析平台: 以 NebulaGraph 为代表的分布式图数据库,拥有强大的存储和批量计算能力,非常适合T+1的深度、全局模式挖掘。
  • 实时计算平台: 以 TuGraph 为代表的支持流图计算架构的系统,能更好地支撑我们第二部分2.2节描述的实时架构,实现准实时的风险识别。

3.2 实践一瞥:Cypher查询示例

无论后台多么复杂,分析师与图交互的语言却可以非常直观。例如,使用Cypher查询“与已知欺诈犯共享设备,且最近一小时内有过高风险交易的用户”:
广告链路梳理复杂业务模型抽象架构
Loading...