OmerGamie/banking-fraud-detection-ml

GitHub: OmerGamie/banking-fraud-detection-ml

这是一个端到端的机器学习工程项目,专注于银行欺诈检测和金融风险分析,通过完整工作流解决交易欺诈识别问题。

Stars: 0 | Forks: 0

# 银行欺诈检测与风险分析机器学习项目 ## 项目概述 这是一个完整的端到端经典机器学习工程项目,专注于银行欺诈检测与金融风险分析。 ![欺诈检测](https://images.unsplash.com/photo-1705056508589-a87485825dc1?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D) 项目使用合成但真实的银行交易数据集,演示如何: * 执行专业级的探索性数据分析(EDA) * 构建行为与风险特征 * 处理不平衡的欺诈数据 * 训练并比较多种机器学习模型 * 构建可重用的机器学习管道 * 使用业务导向的指标评估欺诈检测系统 * 创建可解释且生产就绪的机器学习工作流 项目旨在模拟金融科技与欺诈分析系统中使用的真实机器学习工程工作流。 ## 数据集 ### 数据集名称 银行欺诈检测与风险分析数据集 ### 数据集特征 | 属性 | 详情 | |-----------|---------| | 领域 | 银行与金融分析 | | 数据集类型 | 合成数据 | | 记录数 | 10,000 | | 特征数 | 20 列 | | 缺失值 | 无 | | 重复值 | 无 | | 目标变量 | fraud_flag | | 许可证 | MIT | ## 项目目标 本项目专注于以下几个真实的机器学习工程目标: * 欺诈检测 * 风险分析 * 二元分类 * 异常检测 * 集成学习 * 特征工程 * 不平衡学习 * 模型可解释性 * 风险评分系统 * 生产级机器学习管道 ## 机器学习工作流 项目遵循专业的五阶段机器学习工程工作流。 ``` Notebooks (EDA & Research) ↓ Modularization (src/) ↓ Model Sandbox (Experimentation) ↓ Training Pipelines ↓ Operationalization & Testing ``` ## 企业级机器学习工作流阶段 ### 阶段一:数据基础与探索 #### 活跃组件 * data/raw/ * notebooks/01_eda.ipynb * notebooks/02_feature_engineering.ipynb #### 目标 * 理解欺诈分布 * 分析类别不平衡 * 探索交易行为 * 识别风险指标 * 产生特征工程想法 #### 典型分析 * 欺诈率分析 * 交易金额分布 * 相关性分析 * 风险评分分析 * 基于时间的欺诈模式 * 行为异常分析 ### 阶段二:模块化与核心工程 #### 活跃组件 * src/data_loader.py * src/preprocess.py * src/features.py * src/config.py #### 目标 将笔记本实验转化为可重用的生产级Python模块。 #### 职责 **data_loader.py** * 加载原始交易数据 * 验证数据模式 * 处理数据加载逻辑 **preprocess.py** * 编码 * 缩放 * 训练-测试集拆分 * 管道创建 **features.py** * 风险特征工程 * 行为聚合 * 交易速度特征 * 基于比率的特征 **config.py** * 随机种子 * 路径 * 列定义 * 特征组 ### 阶段三:模型沙盒与实验 #### 活跃组件 * notebooks/03 → 12 * src/models/ #### 目标 在标准化的预处理管道下,实验多种机器学习算法。 所有笔记本均使用 src/ 中共享的预处理和特征工程代码。 ### 阶段四:管道集成与构件管理 #### 活跃组件 * src/pipelines/ * src/train.py * src/evaluate.py * models/trained/ * reports/ #### 目标 构建端到端可重现的机器学习管道。 #### 管道职责 * 加载原始数据 * 预处理特征 * 构建特征 * 训练模型 * 评估指标 * 保存训练构件 * 生成报告 ### 阶段五:运维化与测试 #### 活跃组件 * scripts/ * tests/ #### 目标 为项目进行生产式执行和可靠性准备。 #### 示例 * scripts/train_model.py CLI训练入口点。 * scripts/predict.py 批量欺诈预测管道。 * tests/test_preprocess.py 确保预处理的鲁棒性。 ## 项目结构 ``` banking-fraud-detection-ml/ │ ├── data/ │ ├── raw/ │ ├── processed/ │ └── external/ │ ├── notebooks/ │ ├── 01_eda.ipynb │ ├── 02_feature_engineering.ipynb │ ├── 03_logistic_regression.ipynb │ ├── 04_tree_models.ipynb │ ├── 05_ensemble_models.ipynb │ ├── 06_boosting_models.ipynb │ ├── 07_svm_knn.ipynb │ ├── 08_anomaly_detection.ipynb │ ├── 09_imbalanced_learning.ipynb │ ├── 10_model_comparison.ipynb │ ├── 11_model_explainability.ipynb │ └── 12_risk_scoring_system.ipynb │ ├── src/ │ ├── __init__.py │ ├── data_loader.py │ ├── preprocess.py │ ├── features.py │ ├── train.py │ ├── evaluate.py │ ├── inference.py │ ├── config.py │ ├── utils.py │ │ │ ├── models/ │ │ ├── logistic_model.py │ │ ├── tree_model.py │ │ ├── ensemble_model.py │ │ └── anomaly_model.py │ │ │ └── pipelines/ │ ├── training_pipeline.py │ └── inference_pipeline.py │ ├── models/ │ ├── trained/ │ └── metrics/ │ ├── reports/ │ ├── figures/ │ └── metrics/ │ ├── scripts/ │ ├── download_data.py │ ├── train_model.py │ └── predict.py │ ├── tests/ │ ├── test_features.py │ ├── test_preprocess.py │ └── test_train.py │ ├── .gitignore ├── README.md ├── pyproject.toml ├── uv.lock └── requirements.txt ``` ## 笔记本路线图 1. **探索性数据分析** * 数据集概览 * 欺诈分布 * 统计摘要 * 相关性分析 * 交易模式 2. **特征工程** * 行为特征 * 速度特征 * 聚合 * 风险比率 * 交互特征 3. **逻辑回归** 涵盖主题: * 数学直觉 * 线性决策边界 * 正则化 * 概率解释 * 欺诈分类 4. **树模型** 包括: * 决策树 * 随机森林 主题: * 熵与基尼不纯度 * 特征重要性 * 过拟合控制 5. **集成模型** 包括: * Bagging * 投票分类器 * 随机森林集成 6. **提升模型** 包括: * 梯度提升 * XGBoost * LightGBM 主题: * 顺序学习 * 弱学习器 * 残差优化 7. **SVM & KNN** 主题: * 间隔最大化 * 基于距离的学习 * 核技巧 * 邻域学习 8. **异常检测** 包括: * Isolation Forest * One-Class SVM 主题: * 无监督欺诈检测 * 离群值评分 * 异常分析 9. **不平衡学习** 主题: * 类别不平衡 * SMOTE * 随机过采样 * 欠采样 * 欺诈敏感指标 10. **模型比较** 使用以下指标比较所有训练的模型: * 精确率 * 召回率 * F1分数 * ROC-AUC * 混淆矩阵 11. **模型可解释性** 主题: * SHAP值 * 特征重要性 * 局部解释 * 全局解释 * 欺诈可解释性 12. **风险评分系统** 构建一个欺诈风险评分框架,用于: * 交易优先级排序 * 风险分层 * 欺诈警报系统 ## 模型评估指标 欺诈检测需要特殊的评估指标,因为数据集高度不平衡。 项目关注以下指标: | 指标 | 重要性 | |--------|------------| | 精确率 | 避免误报欺诈警报 | | 召回率 | 捕获欺诈交易 | | F1分数 | 平衡精确率与召回率 | | ROC-AUC | 排序质量 | | 混淆矩阵 | 错误分析 | ## 使用技术 **核心库** * Python 3.11+ * Pandas * NumPy * Scikit-learn * XGBoost * LightGBM * Imbalanced-learn * Matplotlib * Seaborn * SHAP ## 环境设置 **克隆仓库** ``` git clone cd banking-fraud-detection-ml ``` **创建虚拟环境 (UV)** 安装UV: ``` pip install uv ``` 创建环境: ``` uv venv ``` 激活环境: macOS/Linux ``` source .venv/bin/activate ``` Windows ``` .venv\Scripts\activate ``` **安装依赖项** ``` uv pip install -r requirements.txt ``` 或 ``` uv sync ``` ## 使用的工程原则 本项目强调: * 模块化设计 * 可重用管道 * 关注点分离 * 实验可重现性 * 机器学习工程最佳实践 * 生产式架构 ## 未来改进 潜在的未来扩展: * 实时欺诈API * 流处理 * 深度学习欺诈检测 * 图神经网络 * 交易网络分析 * MLOps部署 * MLflow实验跟踪 * Docker容器化 * CI/CD管道 ## 许可证 本项目适用于: * 教育 * 研究 * 作品集项目 * 机器学习实践 数据集许可证:MIT ## 作者 Omar Gamie 有志于成为人工智能工程师,专注于: * 机器学习工程 * AI系统 * 欺诈分析 * 数据科学 * 生产级机器学习管道
标签:ML工作流, Python, scikit-learn, 不平衡数据处理, 业务指标评估, 二分类, 可重用管道, 合成数据集, 异常检测, 数据探索分析, 数据科学, 无后门, 机器学习工程, 模型可解释性, 特征工程, 生产级管道, 资源验证, 逆向工具, 金融科技, 金融风险分析, 银行欺诈检测, 集成学习, 风险评分系统