Mark007-R/FraudShield

GitHub: Mark007-R/FraudShield

一个基于XGBoost和Dask构建的端到端数字支付欺诈检测ML流水线,支持大规模数据处理和实验可复现性。

Stars: 0 | Forks: 0

# AirPay 欺诈检测流水线 一个用于数字支付交易的端到端欺诈检测系统,使用 **Dask** 进行可扩展数据处理,使用 **DVC** 实现可复现的 ML 流水线。基于 XGBoost 构建,具有自动化特征工程、实验跟踪和模型版本控制功能。 ## 目录 - [概述](#overview) - [架构](#architecture) - [技术栈](#tech-stack) - [项目结构](#project-structure) - [快速开始](#getting-started) - [流水线阶段](#pipeline-stages) - [运行流水线](#running-the-pipeline) - [实验跟踪](#experiment-tracking) - [结果](#results) - [数据集](#dataset) - [贡献指南](#contributing) - [许可证](#license) ## 概述 数字支付平台每天处理数百万笔交易,使得人工欺诈检测变得不可能。本项目构建了一个**可扩展、可复现的 ML 流水线**,具有以下功能: - 使用 **Dask** 处理大规模交易数据(并行和核外计算) - 工程化欺诈指标特征,如交易频率、金额偏差和时间模式 - 训练 **XGBoost** 分类器来标记欺诈交易 - 使用 **DVC** 跟踪每个数据版本、参数变更和模型产物 - 支持轻松的实验比较和完整的流水线可复现性 ## 架构 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Raw Data │────▶│ Preprocessing │────▶│ Training │ │ (transactions) │ │ (Dask-based) │ │ (XGBoost) │ └─────────────────┘ └─────────────────┘ └────────┬────────┘ │ ┌─────────────────┐ │ │ Evaluation │◀─────────────┘ │ (Metrics/Plots) │ └─────────────────┘ ── Entire pipeline versioned & tracked by DVC ── ``` ## 技术栈 | 组件 | 工具 | | ---------------------- | --------------------- | | 数据处理 | Dask | | 模型训练 | XGBoost, Scikit-learn | | 流水线编排 | DVC | | 数据/模型版本控制 | DVC + Git | | 可视化 | Matplotlib, Seaborn | | 编程语言 | Python 3.9+ | ## 项目结构 ``` airpay-fraud-detection-pipeline/ │ ├── data/ │ ├── raw/ # Original dataset (DVC tracked) │ │ └── transactions.csv │ └── processed/ # Feature-engineered data │ └── features.csv │ ├── src/ │ ├── __init__.py │ ├── preprocess.py # Dask-based cleaning & feature engineering │ ├── train.py # Model training │ ├── evaluate.py # Metrics & confusion matrix │ └── predict.py # Inference on new data │ ├── notebooks/ │ └── eda.ipynb # Exploratory data analysis │ ├── models/ │ └── fraud_model.pkl # Trained model (DVC tracked) │ ├── metrics/ │ └── scores.json # Precision, Recall, F1, AUC │ ├── reports/ │ └── confusion_matrix.png # Evaluation plots │ ├── dvc.yaml # DVC pipeline definition ├── dvc.lock # Pipeline lock file ├── params.yaml # Hyperparameters & config ├── requirements.txt ├── README.md └── .gitignore ``` ## 快速开始 ### 前置条件 - Python 3.9 或更高版本 - Git - pip ### 安装 ``` # 克隆仓库 git clone https://github.com//airpay-fraud-detection-pipeline.git cd airpay-fraud-detection-pipeline # 创建虚拟环境 python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows # 安装依赖项 pip install -r requirements.txt # 初始化 DVC dvc init ``` ### 下载数据集 ``` # 选项 1 — 如果使用 DVC 远程存储 dvc pull # 选项 2 — 手动下载 # 从 Kaggle 下载数据集(见下方数据集部分) # 放入 data/raw/transactions.csv ``` ## 流水线阶段 ### 阶段 1 — 预处理 (`src/preprocess.py`) 使用 **Dask** 处理大规模交易数据,并行处理。 **执行的操作:** - 使用 `dask.dataframe` 加载原始 CSV,实现核外读取 - 处理缺失值和数据类型转换 - 工程化欺诈指标特征: - `tx_frequency` — 滚动窗口内每个用户的交易数量 - `amount_deviation` — 交易金额与用户平均金额的偏差程度 - `time_since_last_tx` — 自用户上一次交易以来经过的秒数 - `hour_of_day`、`day_of_week` — 时间模式 - `is_high_amount` — 高于阈值的交易标记 - 输出清洗后的特征集到 `data/processed/features.csv` ### 阶段 2 — 训练 (`src/train.py`) - 加载处理后的特征 - 将数据分割为训练集和测试集 - 使用 `params.yaml` 中的参数训练 **XGBoost** 分类器 - 将训练好的模型保存到 `models/fraud_model.pkl` ### 阶段 3 — 评估 (`src/evaluate.py`) - 加载训练好的模型和测试数据 - 计算 **精确率**、**召回率**、**F1 分数** 和 **AUC-ROC** - 生成混淆矩阵图 - 将指标保存到 `metrics/scores.json` ## 运行流水线 ### 运行完整流水线 ``` dvc repro ``` 这将按顺序执行所有三个阶段。DVC 会自动跳过输入未更改的阶段。 ### 运行单个阶段 ``` dvc repro preprocess dvc repro train dvc repro evaluate ``` ### 查看指标 ``` dvc metrics show ``` ### 比较实验 ``` # 修改 params.yaml 并重新运行后 dvc params diff dvc metrics diff ``` ## 实验跟踪 DVC 可以轻松迭代和比较实验: ``` # 1. 在 params.yaml 中修改超参数 # 2. 重新运行管道 dvc repro # 3. 与上次运行比较指标 dvc metrics diff # 4. 查看参数变化 dvc params diff # 5. 提交实验 git add . git commit -m "experiment: increase n_estimators to 300" ``` 示例指标输出: ``` { "precision": 0.96, "recall": 0.91, "f1_score": 0.93, "auc_roc": 0.98 } ``` ## 结果 | 指标 | 分数 | | --------- | ----- | | 精确率 | 0.96 | | 召回率 | 0.91 | | F1 分数 | 0.93 | | AUC-ROC | 0.98 | ## 数据集 本项目支持任何表格形式的交易数据集。推荐的公开数据集: - [Kaggle — 信用卡欺诈检测](https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud)(284K 笔交易,492 起欺诈) - [Kaggle — IEEE-CIS 欺诈检测](https://www.kaggle.com/c/ieee-fraud-detection)(590K 笔交易) 将下载的 CSV 放在 `data/raw/transactions.csv` 中,然后运行: ``` dvc add data/raw/transactions.csv git add data/raw/transactions.csv.dvc .gitignore git commit -m "track raw dataset with DVC" ``` ## 为什么选择 Dask + DVC? | 挑战 | 解决方案 | | ---------------------------------- | ----------------------------------------------------- | | 数据集太大,pandas 无法处理 | **Dask** — 并行、分块、核外处理 | | 无法复现之前的结果 | **DVC** — 跟踪数据、参数和模型版本 | | 无法比较实验 | **DVC 指标** — 跨运行比较参数和分数 | | 大文件无法放入 Git | **DVC remote** — 在 Git 外部存储大文件 | | 阶段变更时流水线中断 | **DVC pipeline** — 依赖感知的阶段执行 | ## 许可证 本项目基于 MIT 许可证授权。详情请参阅 [LICENSE](LICENSE) 文件。 ## 致谢 - [Dask 文档](https://docs.dask.org/) - [DVC 文档](https://dvc.org/doc) - [XGBoost 文档](https://xgboost.readthedocs.io/) - [Kaggle 欺诈检测数据集](https://www.kaggle.com/)
标签:Apex, Dask, DVC, ML管道, Python, XGBoost, 信用风险, 可扩展计算, 大数据, 实验跟踪, 并行处理, 异常检测, 数字支付, 无后门, 机器学习, 模型版本控制, 欺诈检测, 特征工程, 目录扫描, 网络安全研究, 自动化机器学习, 逆向工具, 金融安全, 金融科技