AI 风控实战:为什么你的反欺诈模型总在「抓坏人」和「误杀好人」之间反复横跳
反欺诈是 AI 落地最成熟的场景之一,也是最容易被做坏的一个。本文拆解支付风控的真实工程约束:样本极端不平衡、欺诈模式的对抗性漂移、误杀成本的不对称,并给出一套从规则引擎到在线学习的渐进升级路线。
一个做跨境支付的朋友找我复盘:他们的风控模型上线半年,坏账率下降了 40%,但客服投诉量涨了三倍,商户流失率创了新高。翻完他们三个月的数据,问题很清楚——模型在优化一个错误的指标。
这是反欺诈领域最常见的陷阱。下面把三个工程约束讲透。
一、约束一:样本不平衡不是 1:100,是 1:10000
公开数据集里的欺诈样本占比通常在 0.1% 到 1%,好用来做 demo。真实支付场景里,做得还行的风控系统能见到的欺诈比例往往是万分之几。这意味着一个全部预测为「正常」的模型,准确率 99.99%,比绝大多数调好的模型都高。
所以准确率、AUC 这些指标在反欺诈里基本没有决策价值。真正该盯的是:
- 在固定误杀率下,能拦住多少金额(而不是多少笔)
- 单笔欺诈的平均损失 vs 单笔正常交易的预期利润(成本矩阵)
- Top 1% 高风险名单的命中率(因为人工审核资源只够看这么多)
把指标从「笔数」换成「金额」,很多模型的排序会彻底改变。欺诈者最爱用大额单,而你原来的模型可能因为小额欺诈频率高而忽略了它们。
二、约束二:这是一场对抗,不是一次分类
传统机器学习假设数据分布稳定。反欺诈不成立——你在优化的同时,对手在适应你。我们观察到过很典型的循环:
- 模型开始拦截「新设备 + 大额 + 深夜」
- 欺诈团伙改为「老设备 + 中额 + 白天」,规避了规则
- 模型性能下滑,召回率从 65% 掉到 38%
- 重新训练,新规则又被绕过
这就是为什么纯离线训练的模型在风控场景衰减极快,通常 4 到 8 周就需要一次重训。
应对方式不是「训练更强的模型」,而是建立漂移监测 + 快速迭代闭环:
- 按周监控特征分布偏移(PSI),偏移超过 0.1 的特征进重训队列
- 保留最近 30 天的样本权重加倍,让模型更关注当下模式
- 关键规则的生效时间做 A/B,避免全量上线后才发现误杀
三、约束三:误杀的成本被系统性低估
误杀一个正常用户的代价,不是「少赚一笔手续费」,而是:
- 客服工单成本(通常 3-8 元/单)
- 用户流失(一次误杀的流失概率文中位数约 12%)
- 商户侧的信任损失(B 端客户被误杀后往往直接换支付通道)
- 品牌口碑的复利效应
我们把这几项折算进成本矩阵后发现:一笔误杀的期望成本,是一笔小额欺诈损失的 2 到 4 倍。这直接决定了模型阈值应该大幅右移——宁可漏掉一些小额欺诈。
朋友那家公司的模型之所以投诉暴涨,就是因为训练目标用的是「最小化欺诈金额」,没有建模误杀成本。
四、渐进升级路线
别一上来就做深度学习。我们验证过的四阶段路线更稳:
第二阶段:规则引擎兜底。黑名单、设备指纹、IP 归属、金额区间、频次限制。规则覆盖 60% 的明显欺诈,且完全可解释,出了事能快速下线。
第三阶段:GBDT + 特征工程。LightGBM 或 XGBoost 在表格化的交易数据上依然是最优解,可解释性好(SHAP 能直接给客服看),训练快,两周能迭代一版。
第四阶段:图模型抓团伙。单人欺诈好抓,难抓的是团伙——共用设备、共用银行卡、资金在同几个账户间循环。图神经网络能显著提升团伙识别,但工程复杂度高,建议等前三阶段稳定后再上。
第五阶段:在线学习 + 人机协同。人工审核的结论回流成标注,持续喂给模型;高风险单走人工复核,低风险单自动放行。关键是审核员的决策也要被记录和评估,否则噪声标注入会污染模型。
五、三个容易被忽略的细节
特征时效性。「过去 90 天交易笔数」这个特征在离线训练时是全量的,线上计算时往往只用了部分历史,导致训练/线上不一致(training-serving skew),模型线上表现比离线差一大截。上线前必须做特征一致性校验。
标签延迟。欺诈的确认往往要 30 到 90 天(等持卡人拒付),这期间样本标签是「未知」而非「正常」。如果把未知当正常训练,模型会被污染。正确做法是排除近 90 天的样本,或者用样本加权。
可解释性是合规要求。用户被拒绝交易时有权知道原因,很多地区已经立法。SHAP 值转成人话的规则表是必须准备的,不是加分项。
风控不是追求「零欺诈」,那不可能。风控是在给定成本结构下,找到让整体效益最大化的那个阈值。把成本矩阵算清楚,比换十个模型都管用。