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** — 分布式数据处理与 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, 决策树, 分布式机器学习, 大数据处理, 异常检测, 数据科学, 数据预处理, 无后门, 模型评估, 欠采样, 欺诈识别, 特征工程, 类别不平衡, 资源验证, 过采样, 逆向工具, 逻辑回归, 金融风控, 银行欺诈检测, 随机森林