Alexzhibin/transaction-fraud-detection

GitHub: Alexzhibin/transaction-fraud-detection

基于 LightGBM 的银行卡交易欺诈评分管线,集成了针对类别不平衡的特征工程、多维指标评估和 SHAP 可解释性分析。

Stars: 0 | Forks: 0

# transaction-fraud-detection 一个用于银行卡/支付交易的欺诈评分 pipeline:包含特征工程、一个处理严重类别不平衡的 gradient-boosted 模型,以及一个报告对欺诈至关重要指标的评估过程——排序质量和 在实际操作阈值下的精确率/召回率——外加用于解释每个评分驱动因素的 SHAP 分析。 技术栈:LightGBM, scikit-learn, SHAP, pandas。 ## 关于数据 该 pipeline 在合成交易数据上运行 (`src/data.py`)。目前没有公开的 包含原始、未匿名化特征且可自由 重新分发的交易数据集——著名的 Kaggle 信用卡数据集经过了 PCA 匿名化,这恰好 掩盖了本项目想要展示的特征工程。因此,数据生成器生成的 交易数据,其欺诈信号反映了真实的银行卡/支付欺诈:境外交易 + 新设备 + 远高于客户正常水平的金额、异常时段、高风险 商户类别,以及速度飙升,并带有足够的噪声使得各类别之间 存在重叠。若要在真实场景中使用,只需导入具有相同列的 CSV 文件并跳过 生成步骤即可。 ## 设计说明 - 类别不平衡通过 LightGBM 的 `scale_pos_weight` 处理,而不是重采样,因此 训练分布保持不变,概率依然有意义。 - 报告的指标包括 ROC-AUC、PR-AUC、KS,以及在最佳 F1 阈值下的 精确率/召回率/F1。有意排除了准确率——在约 1.5% 的欺诈率下,“全判为非欺诈” 能得到 98.5% 的准确率,但这没有任何指导意义。 - 特征构建是无状态的:类别来自固定列表,因此训练和 测试会产生完全相同的列,没有拟合的编码器,也没有数据泄露。 - SHAP 提供了每个特征的归因。在受监管的金融领域,你通常需要为 每一笔被拒绝的交易提供理由,因此可解释性不是可选项。 ## 结果 | metric | value | |---|---| | ROC-AUC | 0.949 | | PR-AUC | 0.365 | | KS | 0.767 | | precision @ best-F1 threshold | 0.526 | | recall @ best-F1 threshold | 0.320 | 保留 25% 作为测试集,欺诈率约为 1.5%。在 0.015 的基准率下,0.37 的 PR-AUC 大约是 随机基准线的 24 倍。SHAP 将评分的主要驱动因素排序为:金额与客户正常水平的对比、 境外交易、24 小时内的交易速度、异常时段和新设备——也就是说,模型还原了 构建数据时所围绕的模式 (`reports/shap_summary.png`)。 使用 `python -m src.train` 复现结果。 ## 目录结构 ``` src/ data.py synthetic transaction generator features.py raw transactions -> model matrix model.py LightGBM classifier (scale_pos_weight) evaluate.py ROC-AUC / PR-AUC / KS / precision-recall train.py generate -> split -> train -> evaluate -> save explain.py SHAP summary tests/ feature + metric unit tests ``` ## 运行方式 ``` pip install -r requirements.txt python -m src.train # train + evaluate, writes reports/metrics.json python -m src.explain # SHAP summary -> reports/shap_summary.png pytest ``` ## 接下来打算补充的功能 - 校准概率(等渗回归),使分数显示为实际的欺诈率。 - 根据真实的退款与审查成本矩阵,进行成本敏感的阈值选择, 而不是仅依赖最佳 F1。 - 基于时间的划分和特征漂移检查,因为欺诈模式会不断变化。 ## License MIT
标签:Apex, LightGBM, 数据科学, 机器学习, 模型可解释性, 欺诈检测, 资源验证, 逆向工具, 金融风控