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, 云计算, 反欺诈系统, 实时计算, 搜索引擎查询, 机器学习, 规则引擎, 请求拦截, 逆向工具