datawitholoye/fraud-detection-fintech

GitHub: datawitholoye/fraud-detection-fintech

一个利用LightGBM模型优化欺诈检测的项目,通过成本敏感阈值和SHAP可解释性,解决了传统规则系统高误报率和成本损失的问题。

Stars: 2 | Forks: 0

# 你的基于规则的欺诈系统每年让你损失560万英镑 这不是假设。这是本项目通过用成本优化的LightGBM模型替换阈值式规则引擎,处理IEEE-CIS数据集中590,540笔真实支付交易后得出的结论。基于规则的系统拦截了15%的合法客户。机器学习模型将这一比例降至1.06%,同时预计在30天内节省了471,475英镑。 这不仅仅是一个停在AUC阶段的Kaggle笔记本。它覆盖了完整流程:数据加载、探索性数据分析、特征工程、基于时间的训练/测试划分(非随机——稍后解释其重要性)、基线模型与冠军模型对比、成本敏感阈值优化、用于FCA合规性的SHAP可解释性分析,以及包含成本假设敏感性分析的30天部署模拟。 **作者:** Sherifdeen Oloye **GitHub:** [@datawitholoye](https://github.com/datawitholoye) ## 问题所在 基于规则的欺诈系统在两个方面同时失效:它们遗漏了不符合规则的欺诈交易,同时也拦截了交易记录看似可疑的真实客户。一笔来自新设备的2,000英镑交易,无论是欺诈者还是第一天使用新卡购买笔记本电脑的客户,都会被标记。 本项目要解答的问题是:机器学习模型能否同时在这两方面做得更好,以及在实际一个月的在线流量中,具体的英镑成本差异是多少? ## 数据集 **IEEE-CIS 欺诈检测**(Vesta Corporation via Kaggle, 2019) 两张表通过 `TransactionID` 关联: | 表 | 行数 | 描述 | | -------------------- | -------- | ------------------------------------------ | | train_transaction.csv | 590,540 | 交易金额、卡片信息、时间、339个V-特征 | | train_identity.csv | ~144,000 | 设备、浏览器、邮箱信号(交易记录的子集) | | 属性 | 值 | | ------------------ | -------------- | | 总交易数 | 590,540 | | 正常交易 (标签 0) | 569,877 (96.50%) | | 欺诈交易 (标签 1) | 20,663 (3.50%) | | 不平衡比率 | ~27:1 | | 使用的特征列数 | 367 | **从 Kaggle 下载:** ## 模型与结果 训练/测试划分:基于 `TransactionDT` 的第80百分位点进行时间划分(非随机——关键发现部分将解释其重要性)。 | 模型 | ROC-AUC | PR-AUC | | ---------------------------- | ------- | ------ | | 逻辑回归 (基线) | 0.8253 | 0.1761 | | LightGBM (冠军模型) | 0.9049 | 0.5137 | LightGBM 相对基线的提升:ROC-AUC 提升 +9.6%,PR-AUC 提升 +191.7%。 **在最优阈值 (0.83) 下:** | 指标 | 值 | | --------------------------------- | -------- | | 欺诈检出率 (召回率) | 43.4% | | 精确率 | 59.4% | | 被拦截的合法客户 | 1.06% | | 与基于规则系统相比的30天成本节省 | £471,475 | | 年化节省 | £5,657,700 | ## 关键发现 **随机训练/测试划分对金融数据是错误的。** 如果打乱行并取80%作为训练集,模型在训练期间就会看到未来的交易数据。表现看起来会比实际好,但在生产环境中会迅速下降。本笔记本按时间划分:`TransactionDT` 的前80%是训练数据,最后20%是测试集。这才是模型实际使用的方式。 **默认阈值0.5每月多花了159,580英镑。** 模型输出一个欺诈概率,但决定拦截或放行仍然需要一个阈值。在0.5时,模型过度拦截。通过从0.01到0.99扫描阈值并计算每个点的业务成本(漏报 = 85英镑,误报 = 30英镑),最优阈值落在0.83。仅此一项改变,相比默认设置就节省了159,580英镑。 **基于规则的系统拦截的合法客户数量是机器学习模型的14倍。** 15%的误报率 vs 1.06%,旧系统产生了巨大的客户摩擦。机器学习模型59.4%的精确率意味着每10次拦截中近6次是真正的欺诈;而在规则系统下,这个比例要差得多。 **SHAP 使模型能够向合规官解释。** 根据GDPR第22条和FCA的期望,公司需要解释自动化决策。笔记本包含了全局特征重要性(SHAP摘要图)和单个交易解释——清晰展示哪些特征将特定交易推向了0.9998的欺诈分数。 **在压力测试的成本假设下,节省依然成立。** 敏感性分析测试了漏报成本从50英镑到150英镑、误报成本从10英镑到100英镑的各种组合。在所有场景中,机器学习模型都比基于规则的系统节省成本。 ## 如何在本地运行 **要求:** Python 3.9+,pip,Git。已在配备Apple Silicon的macOS上测试。 ``` # 1. 克隆仓库 git clone https://github.com/datawitholoye/fraud-detection-fintech.git cd fraud-detection-fintech # 2. 创建并激活虚拟环境 python3 -m venv venv source venv/bin/activate # 3. 安装依赖项 pip install -r requirements.txt # 4. 创建数据文件夹并添加 Kaggle CSV 文件 mkdir data # 将 train_transaction.csv 和 train_identity.csv 放入 data/ 目录中 # 5. 启动 notebook jupyter notebook fraud_detection_project.ipynb ``` **运行时说明:** LightGBM训练在约47万行数据上需要2-5分钟。SHAP值计算使用2,000笔交易的样本来保持可管理性。在Apple Silicon上,整个笔记本的端到端运行时间大约为15-20分钟。 ## 依赖项 ``` numpy pandas matplotlib seaborn scikit-learn lightgbm shap jupyter ``` 完整的固定版本在 `requirements.txt` 文件中。
标签:Apex, FCA合规, IEEE-CIS数据集, LightGBM, SHAP, 可解释性, 成本优化, 成本敏感学习, 支付安全, 敏感性分析, 数据科学, 时间序列分析, 机器学习, 模型比较, 欺诈检测, 欺诈预防, 特征工程, 监管合规, 规则系统, 误报减少, 资源验证, 逆向工具, 部署模拟, 金融风险, 阈值优化