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, 可解释性, 成本优化, 成本敏感学习, 支付安全, 敏感性分析, 数据科学, 时间序列分析, 机器学习, 模型比较, 欺诈检测, 欺诈预防, 特征工程, 监管合规, 规则系统, 误报减少, 资源验证, 逆向工具, 部署模拟, 金融风险, 阈值优化