KushagraBinwani/boi-mule-detection
GitHub: KushagraBinwani/boi-mule-detection
面向银行非法账户检测的端到端机器学习管线,通过特征工程和多种模型集成在高度不平衡数据上提升欺诈召回率。
Stars: 0 | Forks: 0
# 印度银行非法账户检测
## 概述
本项目是为印度银行非法账户检测黑客松而开发的。
其目标是利用机器学习从高度不平衡的银行数据中识别欺诈性非法账户。该项目结合了探索性数据分析、特征工程、梯度提升模型、神经网络、集成学习以及误差分析,以提高欺诈检测的性能。
从仅在评估集中检测出 16 起欺诈案件中的 7 起的 CatBoost 基线模型开始,最终的神经网络模型成功检测出了 16 起案件中的 14 起(87.5% 的召回率)。
## 问题描述
非法账户是用于接收、转移或隐瞒通过欺诈活动获得的资金的银行账户。
检测这些账户具有挑战性,因为:
* 与合法账户相比,欺诈案例极其罕见。
* 欺诈者通常会模仿正常客户的行为。
* 由于严重的类别不平衡,传统的准确率指标可能会产生误导。
本项目的目标是开发一个能够识别欺诈账户,同时保持高召回率的机器学习 pipeline。
## 项目工作流
### 1. 探索性数据分析
项目从广泛的探索性分析开始,以了解:
* 特征分布
* 不同特征范围内的欺诈发生率
* 缺失值模式
* 分类变量与欺诈之间的关系
有几个特征反复显示出具有信息量:
* F115
* F2582
* F2956
* F531
* F2737
一个关键发现是,缺失现象本身就包含了预测信息,从而促使了缺失值指示特征的产生。
### 2. 特征工程
根据探索性分析中观察到的模式,开发了基于领域知识的特征。
示例包括:
* F115_high
* F2582_hot
* F2956_hot
* F531_hot
* F2737_safe
* F2582_F531
* F2956_F115
* F2582_pos_F2956_low
* fraud_cluster_1
此外,还为历史和家庭相关特征组中的缺失值创建了额外的二元指标。
### 3. 模型开发
评估了多种模型家族。
| 模型 | 检测到的欺诈数 |
| -------------- | --------------- |
| CatBoost | 7 / 16 |
| XGBoost | 12 / 16 |
| LightGBM | 12 / 16 |
| 集成模型 | 13 / 16 |
| 神经网络 | 14 / 16 |
神经网络实现了最高的欺诈召回率,而集成模型减少了误报,并提供了更好的 precision-recall 权衡。
### 4. 误差分析
使用以下方法对剩余遗漏的欺诈案例进行了调查:
* 最近邻分析
* Isolation Forest 异常检测
* 特征比较
结果表明,剩余的欺诈行为与合法账户非常相似,并且没有表现出强烈的异常性,这表明可能需要额外的信息才能可靠地检测到它们。
## 仓库结构
```
data/
├── raw/
├── processed/
figures/
notebooks/
├── 01_eda.ipynb
├── 02_catboost_baseline.ipynb
├── 03_xgboost.ipynb
├── 04_lightgbm.ipynb
├── 05_neural_networks.ipynb
├── 06_ensemble.ipynb
└── 07_error_analysis.ipynb
reports/
```
## 使用的技术
* Python
* Pandas
* NumPy
* Scikit-learn
* XGBoost
* LightGBM
* CatBoost
* TensorFlow / Keras
* Matplotlib
* SHAP
## 关键要点
最大的性能提升并非仅仅来自于改变算法。
最重要的改进源于:
* 细致的探索性数据分析
* 迭代特征工程
* 对模型失败案例的深入调查
* 结合多种机器学习方法
本项目展示了在高度不平衡的数据集中,基于领域知识的特征工程如何显著提高欺诈检测的性能。
标签:Apex, 数据科学, 机器学习, 梯度提升树, 欺诈检测, 神经网络, 资源验证, 逆向工具, 金融科技