firielamdouni-web/Fraud-detection-spark-rapids

GitHub: firielamdouni-web/Fraud-detection-spark-rapids

这是一个基于Apache Spark MLlib与NVIDIA RAPIDS构建的分布式银行欺诈检测流水线,涵盖从数据处理到模型评估的全流程并提供了GPU加速对比。

Stars: 0 | Forks: 0

# 🏦 银行欺诈检测 — Spark MLlib & RAPIDS GPU ## 📌 概述 本项目展示了一个使用 Apache Spark MLlib 构建的**完整分布式机器学习流水线**,用于检测欺诈性银行交易。该流水线涵盖了从数据摄取和 EDA 到模型训练与评估的所有内容 — 并附带了 CPU (Spark MLlib) 与 GPU (RAPIDS cuML) 性能的对比。 **主要目标:** - 掌握分布式环境中的完整 Spark MLlib 流水线 - 训练并比较多个 MLlib 模型(Logistic Regression, Decision Tree, Random Forest) - 对 CPU Spark 与 GPU RAPIDS 加速进行基准测试 ## 📊 数据集 - **来源:** 欧洲信用卡交易数据集 - **大小:** 284,807 笔交易,31 个特征 - **特征:** `Time`, `Amount`, `V1–V28`(经 PCA 匿名处理) - **目标:** `IsFraud`(0 = 正常,1 = 欺诈) - **类别不平衡:** 99.84% 正常 / 0.16% 欺诈(448 笔欺诈交易) ## ⚙️ 流水线架构 ``` 1. Distributed data loading (Spark DataFrame) 2. Data cleaning & null checks 3. EDA with Spark SQL (groupBy, agg, stat.corr) 4. Feature selection → top 15 features via Spark correlation 5. Class balancing → oversampling (+20,000 fraud) + undersampling (~30,000 normal) 6. ML preparation → VectorAssembler + StandardScaler 7. Model training with MLlib 8. Evaluation (AUC-ROC, F1-Score, Precision, Recall) ``` ## 🤖 已训练模型 | 模型 | 描述 | |---|---| | Logistic Regression | 线性基线模型 | | Decision Tree | 简单且可解释 | | Random Forest | 表现最佳的集成模型 | ### 最佳模型 — Random Forest | 指标 | 得分 | |---|---| | AUC-ROC | **0.9996** | | F1-Score | **0.9913** | ## ⚡ 额外内容 — RAPIDS GPU 加速 Spark MLlib (CPU) 与 NVIDIA RAPIDS cuML (GPU) 的对比: | 模型 | 加速比 | |---|---| | Logistic Regression | 快 **1312.5×** | | Random Forest | 快 **472.1×** | ## 🛠️ 技术栈 ![Apache Spark](https://img.shields.io/badge/Apache%20Spark-E25A1C?style=flat&logo=apachespark&logoColor=white) ![Python](https://img.shields.io/badge/Python-3776AB?style=flat&logo=python&logoColor=white) ![RAPIDS](https://img.shields.io/badge/RAPIDS%20cuML-76B900?style=flat&logo=nvidia&logoColor=white) ![Google Colab](https://img.shields.io/badge/Google%20Colab-F9AB00?style=flat&logo=googlecolab&logoColor=white) - **Apache Spark** — 分布式数据处理与 MLlib - **PySpark** — Spark 的 Python API - **NVIDIA RAPIDS cuML** — GPU 加速机器学习 - **Google Colab** — 开发环境 - **Pandas / Matplotlib / Seaborn** — EDA 与可视化 ## 📁 项目结构 ``` fraud-detection-spark-rapids/ ├── notebooks/ │ ├── SPARK.ipynb # Exploratory Data Analysis & Full ML pipeline │ └── RAPIDS.ipynb # RAPIDS benchmark ├── data/ │ ├── creditcard.csv │ └── lien_jeux_donnees.txt ├── presentation/ │ └── projet_spark_fraud.pdf # Project slides └── README.md ``` ## 🚀 运行方式 1. 在 Google Colab 中打开 notebooks 2. 上传数据集或连接到您的 Google Drive 3. 运行 `01_eda_spark.ipynb` 进行数据探索 4. 运行 `02_ml_pipeline_spark.ipynb` 执行完整的 ML 流水线和 GPU 基准测试 ## 📈 主要结论 **Spark 的优势:** - 针对现实世界交易量的真实可扩展性 - 完全可复现的 MLlib 流水线 - 通过缓存实现高效的分布式处理 **局限性:** - 没有 GPU 的情况下 CPU 训练时间较长 - 分布式调试较为复杂 ## 👤 作者 **Firiel AMDOUNI** — 2025/2026
标签:Apache Spark, AUC-ROC, EDA探索性数据分析, NVIDIA RAPIDS, Python, Spark MLlib, 决策树, 分布式机器学习, 大数据处理, 异常检测, 数据科学, 数据预处理, 无后门, 模型评估, 欠采样, 欺诈识别, 特征工程, 类别不平衡, 资源验证, 过采样, 逆向工具, 逻辑回归, 金融风控, 银行欺诈检测, 随机森林