gowtham27rajendran-commits/7-fraud-detection
GitHub: gowtham27rajendran-commits/7-fraud-detection
一套基于规则引擎、XGBoost 和 SHAP 的流式实时欺诈检测系统,能在 100ms 内完成交易评分并提供可解释的决策。
Stars: 0 | Forks: 0
# 实时欺诈检测系统
一个流式欺诈检测系统,结合基于规则的过滤器和 ML 模型集成,能在 <100ms 内对交易进行评分,并通过 SHAP 提供完全的可解释性。
## 架构
```
Transaction Event (Kafka)
↓
Rule Engine (fast, deterministic filters)
↓ (passes rules)
Feature Extraction (Redis feature store)
↓
ML Scorer (XGBoost ensemble)
↓
SHAP Explainer (why flagged?)
↓
Decision: Allow / Flag / Block
↓
Kafka output topic → Case Management System
```
## 决策层
| 层级 | 延迟 | 覆盖范围 |
|---|---|---|
| 规则引擎 | <1ms | 已知模式(被盗卡 BIN、不可能的速度) |
| ML 模型 | 10–50ms | 未知模式,复杂的特征交互 |
| 人工审核 | 异步 | 高价值、模糊不清的案件 |
## 关键设计决策
| 决策 | 选择 | 原因 |
|---|---|---|
| 规则先于 ML | 是 | 规则以极低的成本拦截明显欺诈;节省 ML 计算资源 |
| 模型类型 | XGBoost 集成 | 在表格数据上具有最佳的校准效果,兼容 SHAP |
| 阈值 | 针对单个商户可配置 | 高风险商户需要更低的阈值 |
| 可解释性 | 每笔交易使用 SHAP | 欧盟的监管要求(GDPR 第 22 条) |
| 误报预算 | 最高 0.5% | 更高的误报率 = 正常客户的交易被拒绝 = 收入损失 |
## 使用的特征
- 速度:每张卡的 txn_count_1h、txn_count_24h
- 金额异常:金额与用户历史均值/标准差的对比
- 地理位置:距离上一笔交易的距离,是否为新国家标记
- 时间:一天中的时间段,星期几(欺诈高峰出现在凌晨 3 点)
- 商户:首次交易的商户,商户风险类别
- 设备:新设备指纹,IP 信誉评分
## 在本地运行
```
docker-compose up -d kafka redis
pip install -r requirements.txt
python app/streaming/consumer.py
python app/streaming/producer.py # simulate transaction stream
```
## 面试讨论要点
**“你如何处理类别不平衡问题?(欺诈仅占交易的 0.1%)”**
在训练时使用 SMOTE 对少数类进行过采样。使用 XGBoost 的 scale_pos_weight 参数。针对 F1 / 精确率-召回率 AUC 进行优化,而不是准确率——如果你始终预测为“非欺诈”,那么 99.9% 的准确率也毫无意义。
**“你如何权衡误报和漏报?”**
误报:拒绝了正常交易 → 导致客户愤怒,可能流失。漏报:放行了欺诈交易 → 导致经济损失。我们根据商户的容忍度针对每个商户调整阈值。易发生欺诈的商户(如加密货币交易所)使用较低的阈值。
**“你如何检测欺诈模式中的概念漂移?”**
欺诈分子会不断变异。每周使用 KS 检验(KS-test)监控特征分布。监控模型得分分布——如果平均欺诈得分下降,说明模型可能已经失效。至少每月重新训练一次,或者在检测到漂移时触发重新训练。
标签:Apex, Kafka, Redis, SonarQube插件, XGBoost, 云计算, 反欺诈系统, 实时计算, 搜索引擎查询, 机器学习, 规则引擎, 请求拦截, 逆向工具