返回金融系统设计
高频与风险科学 · 章节

反欺诈科学

06-hft-risk-science/05-fraud-detection.md

反欺诈科学

定位:反欺诈背后的数学模型、算法和工程方法 关联:与 W3 风控引擎设计互补——W3 是"怎么建系统",本篇是"系统里跑的科学"


一、核心概念与直觉

欺诈检测 vs 信用风险

维度欺诈检测信用风险
本质识别故意的恶意行为评估能力不足的违约风险
对手会主动适应和规避不会刻意对抗模型
样本极度不平衡(0.01%-0.1%)相对平衡(1%-5%)
时效毫秒级实时决策可以批量T+1
标签延迟确认(可能数周后才知道)相对明确(逾期=违约)

反欺诈的本质

反欺诈 = 异常检测 + 模式识别 + 对抗博弈

                 ┌─ 统计异常(Z-Score/IQR/Benford)
异常检测 ────────┼─ 机器学习(Isolation Forest/AutoEncoder)
                 └─ 图分析(社区发现/GNN)

                 ┌─ 规则匹配(专家经验→if-else)
模式识别 ────────┼─ 序列建模(HMM/LSTM/Transformer)
                 └─ 用户画像(行为基线→偏离检测)

                 ┌─ 概念漂移(欺诈模式持续演化)
对抗博弈 ────────┼─ 对抗训练(GAN增强鲁棒性)
                 └─ 在线学习(持续适应新模式)

二、统计异常检测方法

2.1 Z-Score

原理:衡量一个数据点偏离均值多少个标准差。

Z = (x - μ) / σ

判断标准:
  |Z| > 2  → 轻度异常(约5%概率)
  |Z| > 3  → 重度异常(约0.3%概率)

在线更新(Welford算法)

// 不需要存储所有历史数据,O(1)空间
count += 1
delta = x - mean
mean += delta / count
M2 += delta * (x - mean)
variance = M2 / (count - 1)

实际计算示例

某用户过去30天日均交易额 μ = ¥2,000,标准差 σ = ¥500
今天交易额 x = ¥5,200

Z = (5200 - 2000) / 500 = 6.4  → 严重异常!

决策:
  Z = 2.5 → 轻度告警(加入监控列表)
  Z = 4.0 → 中度告警(限制大额交易)
  Z = 6.4 → 高度告警(冻结账户+人审)

优点:简单、快速、可解释 缺点:假设正态分布,对偏态数据效果差(交易金额通常右偏) 适用:交易金额异常、登录频率异常 改进:对偏态数据先做log变换再算Z-Score

2.2 IQR(四分位距)

IQR = Q3 - Q1
轻度异常: x < Q1 - 1.5×IQR  或  x > Q3 + 1.5×IQR
重度异常: x < Q1 - 3×IQR    或  x > Q3 + 3×IQR

优势:对偏态分布更鲁棒(不假设正态),不受极端值影响

2.3 Benford定律

自然产生的数据中,首位数字的分布不均匀:

P(d) = log₁₀(1 + 1/d)

d  | 1     2     3     4     5     6     7     8     9
P  | 30.1% 17.6% 12.5% 9.7%  7.9%  6.7%  5.8%  5.1%  4.6%

应用场景

  • 发票金额造假检测(人为编造的数字不服从Benford)
  • 财务数据审计
  • 交易金额真实性验证

完整计算示例

某商户1000笔交易的首位数字分布:

d  | 期望(Benford) | 期望笔数 | 实际笔数 | 差异
1  | 30.1%         | 301      | 285      | -16
2  | 17.6%         | 176      | 168      | -8
3  | 12.5%         | 125      | 120      | -5
4  | 9.7%          | 97       | 95       | -2
5  | 7.9%          | 79       | 82       | +3
6  | 6.7%          | 67       | 65       | -2
7  | 5.8%          | 58       | 55       | -3
8  | 5.1%          | 51       | 48       | -3
9  | 4.6%          | 46       | 82       | +36  ← 首位9异常多!

卡方检验:
  χ² = (-16)²/301 + (-8)²/176 + ... + (36)²/46
     = 0.85 + 0.36 + ... + 28.17 = 32.4

  df = 8, α = 0.05 时临界值 = 15.51
  χ² = 32.4 > 15.51 → 拒绝原假设 → 分布异常!

  首位9出现82次(期望46次) → 可能大量虚构 ¥9XX 的交易

检验方法:卡方检验对比实际首位数字分布 vs Benford分布

  • χ² = Σ (O_i - E_i)² / E_i
  • 若 p-value < 0.05 → 分布异常,可能存在造假
  • 还可配合二次位数字检验(Second Digit Test)增加可信度

2.4 马氏距离

D_M = √((x-μ)ᵀ Σ⁻¹ (x-μ))

vs 欧氏距离:考虑了变量之间的相关性 直觉:如果收入和消费高度相关,一个高收入低消费的人比欧氏距离暗示的更"异常"


三、机器学习异常检测

3.1 Isolation Forest(面试高频)

核心思想:异常点更容易被"隔离"。

算法步骤:
1. 随机选择一个特征
2. 在该特征的最大值和最小值之间随机选一个分割点
3. 递归分割,直到每个数据点被隔离或达到最大深度
4. 异常点的平均路径长度更短

异常分数:
  s(x, n) = 2^(-E(h(x)) / c(n))
  
  其中:
  - h(x) = 样本x的平均路径长度
  - c(n) = 2H(n-1) - 2(n-1)/n(归一化因子)
  - H(i) = ln(i) + 0.5772(欧拉常数)

  score ≈ 1 → 异常
  score ≈ 0.5 → 正常
  score < 0.5 → 非常正常(密集区域)

为什么异常点路径短?

正常点:在密集区域,需要多次分割才能隔离
  ┌───────────────┐
  │ · · · · · · · │  需要7次分割
  │ · · ·[x]· · · │  才能隔离x
  │ · · · · · · · │
  └───────────────┘

异常点:在稀疏区域,很快就被隔离
  ┌───────────────┐
  │ · · · · · · · │
  │ · · · · · · · │  只需2次分割
  │               │  就能隔离x
  │          [x]  │
  └───────────────┘

优点

  • 不需要标签(无监督)
  • 线性时间复杂度 O(n·log(n))
  • 高维数据友好(随机选特征)
  • 不假设数据分布

参数

  • n_estimators: 树的数量(通常100-300)
  • max_samples: 每棵树的采样大小(通常256)
  • contamination: 预估异常比例

3.2 LOF(Local Outlier Factor)

核心思想:比较一个点与其K近邻的局部密度。

LOF(x) = Σ(邻居的密度 / x的密度) / K

LOF ≈ 1  → 密度与邻居相当(正常)
LOF >> 1 → 密度远低于邻居(异常)
LOF << 1 → 密度远高于邻居(核心点)

vs Isolation Forest:LOF能检测"局部异常"——在全局不异常但在局部异常的点。

3.3 AutoEncoder 异常检测

原理:用正常数据训练AutoEncoder,异常数据的重构误差会很大。

正常数据:
  输入 x → Encoder → 压缩表示 z → Decoder → 重构 x̂
  重构误差小:||x - x̂||² ≈ 0

异常数据:
  输入 x → Encoder → 压缩表示 z → Decoder → 重构 x̂
  重构误差大:||x - x̂||² >> 阈值

异常分数 = ||x - Decoder(Encoder(x))||²

架构选择

  • 简单AE:Dense层,适合结构化数据
  • CNN-AE:适合图像/时序数据
  • VAE(变分AE):概率化,能给出异常概率分布
  • LSTM-AE:适合交易序列

优势:能捕捉复杂非线性模式 劣势:需要大量正常数据训练,训练成本高

3.4 One-Class SVM

  • 只用正常样本训练,学习正常数据的边界
  • 超出边界即为异常
  • 适用:欺诈样本极少或没有的场景
  • 核函数选择:RBF核最常用

3.5 异常检测算法选型指南

场景推荐算法原因
单维度金额异常Z-Score / IQR简单、快、可解释
财务数据审计Benford定律专门检测人为编造
多维度无标签Isolation Forest不需要标签、高维友好
局部密度异常LOF能检测"相对异常"
复杂非线性模式AutoEncoder捕捉深层结构
极少标签One-Class SVM只需正常样本
交易序列LSTM-AE捕捉时序模式
团伙关联GNN + 社区发现利用图结构

组合策略(生产环境推荐):

实时层(毫秒级):
  Z-Score(快速粗筛) + Isolation Forest(无监督异常) + 规则引擎

准实时层(分钟级):
  图社区发现(团伙检测) + 资金链追踪

离线层(T+1):
  AutoEncoder重训 + GNN图模型 + Benford审计

融合策略:
  final_score = w1×rule_score + w2×iforest_score + w3×model_score
  权重根据历史表现动态调整

3.6 实际效果对比(某支付平台数据)

| 方法              | Precision@100 | Recall@1% | 延迟    |
|-------------------|---------------|-----------|---------|
| 纯规则            | 45%           | 35%       | <1ms    |
| Z-Score           | 52%           | 42%       | <1ms    |
| Isolation Forest  | 68%           | 58%       | ~5ms    |
| XGBoost(有监督)   | 82%           | 75%       | ~3ms    |
| AutoEncoder       | 71%           | 62%       | ~10ms   |
| 规则+IF+XGBoost   | 88%           | 82%       | ~8ms    |
| +图分析(准实时)   | 93%           | 89%       | ~3min   |

结论:
  - 单一方法天花板在70%左右
  - 多方法融合能达到90%+
  - 加入图分析后团伙欺诈召回率提升显著

四、图分析与团伙欺诈

4.1 为什么需要图分析?

个体看正常,群体看异常

个体视角:
  账户A:交易3笔,金额正常 ✅
  账户B:交易2笔,金额正常 ✅
  账户C:交易4笔,金额正常 ✅

图视角:
  A ──转账──→ D
  B ──转账──→ D    ← D是资金汇集点!
  C ──转账──→ D
  
  而且A/B/C注册IP相同、注册时间相近 → 团伙欺诈

4.2 构建关系图

节点:用户/账户/设备/IP/手机号

  • 转账关系(资金流)
  • 共用设备(同一设备指纹)
  • 共用IP(相同登录IP)
  • 共用手机号/邮箱
  • 申请关联(紧急联系人关系)

4.3 社区发现算法

Louvain算法(最常用):

核心思想:最大化模块度Q

Q = (1/2m) Σ [A_ij - k_i·k_j/(2m)] δ(c_i, c_j)

其中:
  A_ij = 边权重
  k_i = 节点i的度
  m = 总边数
  δ = 同社区为1,否则为0

算法步骤:
1. 每个节点初始为一个社区
2. 对每个节点,尝试移入邻居的社区,选模块度增益最大的
3. 将社区压缩为超级节点,重复步骤2
4. 直到模块度不再增加

时间复杂度:O(n·log(n)),适合大规模图

Label Propagation

  • 每个节点"投票"加入邻居中最多的标签
  • 迭代直到稳定
  • 优点:简单、快速;缺点:结果不稳定

4.4 中心性分析

指标含义应用
度中心性连接数最多识别活跃的转账节点
介数中心性最多最短路径经过识别资金中转枢纽
PageRank被重要节点指向的节点更重要识别资金网络中的关键角色
接近中心性到所有节点距离最短识别信息/资金快速扩散源

4.5 图神经网络(GNN)

GCN(Graph Convolutional Network)

核心公式:
  H^(l+1) = σ(D̃^(-½) Ã D̃^(-½) H^(l) W^(l))

直觉:
  每个节点的新表示 = 邻居表示的加权平均 × 可学习的权重

图示:
  节点A的特征 = f(A自身特征, B的特征, C的特征, ...)
                  ↑                ↑
              自身信息        邻居信息聚合

GraphSAGE(可扩展):

1. 采样K个邻居(不是全部邻居)
2. 聚合邻居特征(mean/max/LSTM)
3. 拼接自身特征 + 聚合结果
4. 通过神经网络变换

优点:可以处理新节点(归纳式学习),适合大图

在反欺诈中的应用

  • 输入:节点特征(交易历史) + 图结构(转账关系)
  • 输出:每个节点的欺诈概率
  • 优势:同时利用个体特征和关系结构

4.6 资金链追踪

典型洗钱模式:
  1. 放置(Placement): 大额资金拆分为多笔小额
  2. 分层(Layering): 多次转账混淆来源
  3. 整合(Integration): 汇集到最终受益人

检测方法:
  - BFS/DFS遍历资金流向
  - 资金拆分模式检测(一进多出)
  - 资金汇聚模式检测(多进一出)
  - 环形交易检测(A→B→C→A)
  - 最短路径分析(资金从来源到目的的最短路径)

五、序列建模与行为分析

5.1 隐马尔可夫模型(HMM)

状态:正常(N) / 可疑(S) / 欺诈(F)
观测:交易类型 × 金额范围 × 时段

转移概率示例:
  P(N→N) = 0.95  P(N→S) = 0.04  P(N→F) = 0.01
  P(S→N) = 0.30  P(S→S) = 0.50  P(S→F) = 0.20
  P(F→N) = 0.05  P(F→S) = 0.15  P(F→F) = 0.80

应用:检测用户行为状态转变
  正常用户突然进入"可疑"状态 → 告警

5.2 LSTM/GRU 序列检测

输入:交易序列 [t1, t2, t3, ..., tn]
  每个t包含:(金额, 类型, 商户, 时间间隔, 设备, 位置)

模型:LSTM → Dense → Sigmoid(欺诈概率)

优势:
  - 捕捉长期依赖(几周前的异常与当前交易的关联)
  - 自动学习时序模式

训练方式:
  方式1:监督学习(有标签)
  方式2:用正常序列训练,异常序列预测概率低 → 重构误差法

5.3 Transformer 在欺诈检测中的应用

Self-Attention 的威力:

传统LSTM:只能"从左到右"看序列
  t1 → t2 → t3 → ... → t100(要处理100步才能关联t1和t100)

Transformer:直接关联任意两笔交易
  t1 ←──────────────────→ t100(一步就能关联)

  Attention(Q, K, V) = softmax(QK^T / √d_k) × V

  直觉:
    第100笔交易在"看"所有历史交易时,
    给第1笔分配了0.35的注意力权重 → 说明第1笔与第100笔高度相关
    → 例如:第1笔开通新支付方式,第100笔利用该方式大额转账

可解释性优势:
  Attention权重矩阵直观显示"模型认为哪些历史交易最可疑"
  → 可以向审核员展示:为什么模型认为这笔交易可疑
  • 位置编码保留时序信息
  • 在大规模序列数据上性能优于LSTM
  • 实践中常用:TabTransformer(结构化数据)、FT-Transformer

5.4 会话分析(行为生物特征)

人类操作特征:
  - 打字速度不均匀(思考→快速输入→停顿)
  - 鼠标轨迹有曲率(不是直线移动)
  - 页面停留时间有变化
  - 操作间隔不规律

机器/脚本操作特征:
  - 速度过于均匀
  - 鼠标直线移动
  - 操作间隔过于规律
  - 页面停留极短

六、类别不平衡处理(必考)

6.1 问题本质

样本分布:
  正常交易: 99.9%  (999,000笔)
  欺诈交易: 0.1%   (1,000笔)

如果模型全部预测为"正常":
  Accuracy = 99.9%  ← 看起来很好,但一个欺诈都没抓到!

6.2 数据层面

SMOTE(合成少数类过采样)

算法:
1. 对每个少数类样本x,找K个最近邻
2. 随机选一个近邻x_nn
3. 在x和x_nn之间随机插值:x_new = x + rand(0,1) × (x_nn - x)

优点:生成多样性样本,不是简单复制
缺点:可能生成噪声样本(在边界区域)

ADASYN:在难分类区域生成更多样本

随机欠采样:简单丢弃多数类样本

  • 快速但会丢失信息
  • Tomek Links:删除最接近边界的多数类样本

6.3 算法层面

代价敏感学习

不同错误的代价不同:
  漏放一个欺诈(FN)= 损失 ¥10,000
  误杀一个正常(FP)= 损失 ¥10(客户投诉成本)

sample_weight: 欺诈样本权重 = 1000(与代价比成正比)

Focal Loss

FL(p_t) = -α_t × (1 - p_t)^γ × log(p_t)

γ=0 → 退化为标准交叉熵
γ=2 → 简单样本(p_t接近1)的权重降低100倍

直觉:让模型把注意力放在"难分类"的样本上

EasyEnsemble

1. 从多数类中随机采样N次,每次采样数量=少数类数量
2. 每次采样+全部少数类 → 训练一个子模型
3. N个子模型集成(平均/投票)

优点:利用了所有多数类数据,又平衡了比例

6.4 评估层面

不要用Accuracy!

正确的指标:
├── AUC-ROC:排序能力(不受阈值影响)
├── AUPRC:在不平衡场景比AUC更有意义
├── F1-Score:精确率和召回率的调和平均
├── Precision@K:Top K预警中有多少真欺诈
└── 混淆矩阵:直接看TP/FP/FN/TN

业务指标:
├── 拦截率(Recall):欺诈中被拦截的比例
├── 误杀率(FPR):正常中被误拦的比例
├── 资损率:实际欺诈损失 / 总交易额
└── 人审效率:每100个告警中有多少真欺诈

七、对抗学习与概念漂移

7.1 欺诈演化现象

规则:"单笔 > ¥50,000 触发人审"
欺诈者适应:拆成多笔 ¥49,999

规则升级:"同设备1小时内累计 > ¥100,000 触发"
欺诈者适应:换设备/用代理IP

→ 规则和欺诈者的"猫鼠游戏"永远不会结束
→ 需要模型持续学习和对抗

7.2 概念漂移(Concept Drift)

类型

突变型(Sudden):某天开始新型欺诈爆发
  ──────┐
        └──────── 

渐变型(Gradual):欺诈模式缓慢演化
  ──────────────
           ──────────── 

周期型(Recurring):节假日欺诈模式回归
  ╱╲  ╱╲  ╱╲  ╱╲

增量型(Incremental):微小持续变化
  ────────────────────

检测方法

  • PSI:Population Stability Index(模型输入分布变化)
  • DDM:Drift Detection Method(监控错误率变化)
  • ADWIN:自适应窗口(动态调整检测窗口大小)
  • Page-Hinkley:累积和检测均值变化

7.3 GAN对抗训练

Generator(生成器):生成"逼真"的欺诈交易
Discriminator(判别器):区分真实交易 vs 生成交易

训练流程:
  1. 用真实欺诈数据训练初版Generator
  2. Generator生成新型"欺诈交易"
  3. Discriminator同时学习识别真实欺诈和生成欺诈
  4. Generator根据Discriminator反馈改进,生成更"逼真"的欺诈
  5. 迭代对抗 → Discriminator越来越强

目标函数:
  min_G max_D V(D,G) = E[log D(x)] + E[log(1 - D(G(z)))]

实际应用场景:
  - 数据增强:少数类欺诈样本不足时,用GAN生成补充
  - 鲁棒性测试:用Generator模拟未来可能的新型欺诈,测试模型是否能防住
  - Red Team演练:安全团队用GAN生成对抗样本,验证系统防护能力

7.4 在线学习

传统模型:训练 → 部署 → 月度/季度重训
在线模型:每条新数据都更新模型参数

挑战:
  1. 标签延迟:欺诈确认可能滞后数周
  2. 灾难性遗忘:学新模式忘旧模式
  3. 计算成本:需要持续训练

实践方案:
  短期:规则热更新(分钟级)
  中期:模型增量训练(每周)
  长期:全量重训(每季度)
  
  + 人工案件反馈循环:
    决策 → 人审确认 → 更新标签 → 喂回模型

八、反欺诈系统全景架构

┌─────────────────────────────────────────────────────────────┐
│                    反欺诈决策引擎                              │
│                                                              │
│  ┌─────────┐  ┌──────────┐  ┌──────────┐  ┌─────────────┐  │
│  │ 实时层   │  │ 准实时层   │  │ 离线层    │  │ 人工审核层   │  │
│  │ <50ms   │  │ <5min    │  │ T+1      │  │ 案件管理    │  │
│  │         │  │          │  │          │  │            │  │
│  │ 名单匹配│  │ 图分析    │  │ 模型训练  │  │ 人审工作台  │  │
│  │ 规则引擎│  │ 社区发现  │  │ 批量扫描  │  │ 标签回流   │  │
│  │ 模型推理│  │ 资金链追踪│  │ 报表报送  │  │ SLA管理    │  │
│  │ 特征提取│  │ 关联分析  │  │ 模型评估  │  │ 申诉处理   │  │
│  └─────────┘  └──────────┘  └──────────┘  └─────────────┘  │
│                                                              │
│  ┌─────────────────────────────────────────────────────────┐ │
│  │                    特征平台                              │ │
│  │  实时特征(Flink) + 离线特征(Spark) + Feature Store      │ │
│  └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘

各层分工

延迟方法检测类型
实时<50ms规则+ML模型+名单已知模式+异常
准实时<5min图分析+社区发现团伙+关联
离线T+1全量扫描+模型训练新模式发现+模型迭代
人工小时-天人工审核+标注最终确认+反馈

九、真实案例分析

案例1:某银行信用卡盗刷检测

背景:
  日均交易1000万笔,欺诈率0.05%(约5000笔)
  
方案迭代:
  V1(纯规则):
    - 境外交易+单笔>$500 → 告警
    - 召回率30%,误杀率5%
    
  V2(规则+评分卡):
    - 加入用户历史行为偏离度
    - 召回率55%,误杀率2%
    
  V3(规则+XGBoost+实时特征):
    - 加入近5分钟交易频次、地理位置跳跃、设备指纹变化
    - 召回率78%,误杀率0.8%
    
  V4(+图分析+GNN):
    - 识别盗刷团伙关联(共用IP/设备/商户)
    - 召回率89%,误杀率0.5%
    
  关键特征(按重要性排序):
    1. 近5分钟交易次数偏离度(Z-Score)
    2. 地理位置跳跃距离/时间比(物理上不可能)
    3. 设备指纹是否首次出现
    4. 商户风险等级
    5. 交易时段偏离(凌晨3点交易)

案例2:P2P平台薅羊毛检测

背景:
  新用户注册送¥50红包,被羊毛党批量注册

检测信号:
  个体层:
    - 注册后立即完成最低门槛交易→提现
    - 交易金额精确等于门槛值
    - 设备信息异常(模拟器/改机工具)
    
  群体层(图分析发现):
    - 200个账户使用同一WiFi MAC
    - 注册时间集中在1小时内
    - 收款银行卡归属同一人
    - 紧急联系人交叉引用
    
  结果:
    Louvain社区发现识别出47个羊毛党集群
    冻结前挽损 ¥230万

十、工程落地要点

与 W3 风控引擎设计的关联

W3 设计的组件本篇的科学基础
Rule Engine(规则引擎)统计异常检测方法
ML Serving(模型推理)Isolation Forest / AutoEncoder / GNN
Feature Store(特征平台)滑动窗口/EWMA/图特征
Decision Orchestrator(决策编排)多层检测融合策略
Case Management(案件管理)标签回流 + 在线学习
Strategy Manager(策略管理)概念漂移检测 + 模型更新

关键工程决策

  1. 实时 vs 离线:交易风控用实时,AML用离线批量
  2. 规则 vs 模型:新场景先上规则(快),稳定后上模型(准)
  3. 标签延迟:Semi-supervised learning + 弱标签 + 人审反馈
  4. 可解释性:规则命中链 + SHAP值 → 满足监管和客户解释需求

标签延迟问题的解决方案

核心挑战:欺诈确认可能滞后数天到数周

┌──────────────────────────────────────────┐
│  交易发生              欺诈确认           │
│    │                     │               │
│    ├── 1小时后: 用户投诉(30%的欺诈)      │
│    ├── 1天后: 银行通知(40%的欺诈)        │
│    ├── 1周后: 对账发现(20%的欺诈)        │
│    └── 1月后: 仲裁结果(10%的欺诈)        │
│                                          │
│  → 训练时没有标签的"灰色地带"怎么办?    │
└──────────────────────────────────────────┘

解决方案:
  1. 半监督学习:少量已确认标签 + 大量未标签数据
     - Label Propagation:从已标签样本向未标签传播
     - Self-Training:模型预测高置信样本→加入训练集
     
  2. 弱标签(Weak Supervision):
     - 规则命中 → 弱正标签(可能是欺诈)
     - 3个月无投诉 → 弱负标签(大概率正常)
     - 用Snorkel框架管理多源弱标签
     
  3. 延迟标签策略:
     - 等待期模型:先用1小时内确认的标签训练"快模型"
     - 追溯更新:7天后确认的标签用于训练"精准模型"
     - 双模型融合:快模型实时决策,精准模型定期修正

十一、常见误区

误区真相
"规则比模型更准"规则只能检测已知模式,模型能发现未知模式
"模型越复杂越好"可解释性在反欺诈中很重要(需向监管/客户解释)
"只看准确率"99.9%准确率可能只是因为正常样本占99.9%
"训练完就不用管了"欺诈者在持续演化,模型会退化
"所有异常都是欺诈"异常≠欺诈,可能是正常的极端行为
"图分析能解决一切"图分析计算量大,不适合毫秒级实时决策


十二、面试高频追问速查

追问要点
"你的模型AUC 0.95,为什么还有漏网之鱼?"AUC是排序指标不是绝对指标;阈值设置是业务决策(召回率↑→误杀率↑);新型欺诈模式训练时不存在
"如果欺诈率只有万分之一怎么训练?"SMOTE过采样+代价敏感学习+EasyEnsemble;不要用Accuracy评估,用AUPRC
"你怎么知道模型过期了?"PSI>0.25 或 KS下降>10% 或 业务指标(资损率)恶化
"规则和模型冲突怎么办?"分优先级:名单>规则>模型;白名单直接放行;场景不同策略不同
"怎么向客户解释为什么拦截?"规则命中链(哪条规则触发)+ SHAP值(哪个特征贡献最大);不能暴露模型细节
"图分析怎么做到实时?"不做——图分析放准实时层(分钟级);实时层用预计算的图特征(度/PageRank)

十三、延伸阅读

书籍

  • 《Fraud Analytics Using Descriptive, Predictive, and Social Network Techniques》Bart Baesens
  • 《Outlier Analysis》Charu Aggarwal

论文

  • Isolation Forest (Liu, Ting, Zhou 2008)
  • GraphSAGE (Hamilton, Ying, Leskovec 2017)
  • Focal Loss (Lin et al. 2017)
  • SMOTE (Chawla et al. 2002)

工具

  • scikit-learn(Isolation Forest/LOF/One-Class SVM)
  • PyTorch Geometric(GCN/GraphSAGE)
  • NetworkX(图分析)
  • imbalanced-learn(SMOTE/ADASYN/EasyEnsemble)