vinayp2219/Real-Time-Fraud-Detection-System
GitHub: vinayp2219/Real-Time-Fraud-Detection-System
一个生产级流处理管道,使用Kafka、Spark Streaming和Isolation Forest ML模型实时检测电子商务欺诈交易,支持500+笔/秒的处理能力。
Stars: 0 | Forks: 0
# 实时电子商务欺诈检测管道
一个生产级的流处理管道,使用 Apache Kafka、Spark Structured Streaming 和机器学习实时检测电子商务欺诈交易。
## 演示
## 架构
Transaction Generator (Python)
↓
Apache Kafka (3 个分区)
├── raw-transactions 主题
├── fraud-alerts 主题
└── dead-letter-queue 主题(畸形事件)
↓
Spark Structured Streaming
├── 实时特征工程
├── Isolation Forest 异常评分
├── 混合规则引擎(ML + 业务规则)
└── 行为指纹
↓
存储层
├── SQLite(欺诈结果 + 分析)
└── HBase schema(用户画像 + 告警)
↓
Streamlit 仪表板(实时欺诈监控)
## 本项目的独特之处
- **死信队列** — 畸形事件被路由到单独的 Kafka 主题,通过批处理作业重新处理,而不是导致管道崩溃
- **混合规则引擎** — 将 Isolation Forest ML 异常评分与硬性业务规则(大额、高频、新商户、位置异常)相结合,如同真实金融科技欺诈系统一样
- **4 种欺诈注入模式** — 大额交易、交易频率异常、设备未知、位置跳跃 — 使模拟更加真实
- **自定义 Docker 镜像** — 将 numpy、pandas、scikit-learn 永久集成到 Spark 镜像中,确保可复现部署
- **端到端管道** — 从数据生成到实时仪表板,而不仅仅是笔记本实验
## 技术栈
| 层级 | 技术 |
|---|---|
| 消息中间件 | Apache Kafka |
| 流处理 | Apache Spark Structured Streaming |
| ML 模型 | Isolation Forest (scikit-learn) |
| 特征工程 | PySpark UDFs |
| 存储 | SQLite, HBase (schema) |
| 仪表板 | Streamlit + Plotly |
| 容器化 | Docker, Docker Compose |
| 编程语言 | Python |
## 欺诈检测逻辑
每笔交易由两个并行运行的层级进行评分:
**第 1 层 — Isolation Forest ML 模型**
- 基于 10,500 笔交易训练(10,000 笔正常 + 500 笔合成欺诈)
- 特征:金额、交易频率、地理位置坐标、商户类型、时段
- 输出介于 -1(欺诈)和 +1(正常)之间的异常评分
**第 2 层 — 混合规则引擎**
- 金额 > ₹50,000 → 标记为 high_amount 欺诈
- 最近 1 小时内交易 > 20 笔 → 标记为 velocity 欺诈
- 新商户 + 金额 > ₹10,000 → 标记为 new_merchant_high_amount
- 位置在印度境外(纬度 < 8 或纬度 > 35)→ 标记为 location_anomaly
如果**任一**层级检测到欺诈,则该交易被标记为欺诈交易。
## 项目结构
fraud-detection-pipeline/
├── producer/
│ └── transaction_generator.py # 模拟 500+ 笔/秒的交易,包含欺诈模式
├── spark_jobs/
│ └── fraud_detector.py # Spark Streaming + ML + 规则引擎
├── models/
│ └── train_model.py # Isolation Forest 训练脚本
├── dashboard/
│ └── app.py # Streamlit 实时仪表板
├── config/
│ └── hadoop.env # Hadoop 配置
├── Dockerfile.spark # 包含 ML 依赖的自定义 Spark 镜像
├── docker-compose.yml # 完整堆栈编排
└── start.ps1 # 一键启动脚本
## 设置与运行
### 前置条件
- Docker Desktop
- Python 3.8+
- Java 8+
### 步骤 1 — 克隆仓库
```
git clone https://github.com/vinayp2219/fraud-detection-pipeline.git
cd fraud-detection-pipeline
```
### 步骤 2 — 下载 Kafka-Spark 连接器 jar 包
```
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/spark/spark-sql-kafka-0-10_2.12/3.4.1/spark-sql-kafka-0-10_2.12-3.4.1.jar" -OutFile "spark_jobs/spark-sql-kafka.jar"
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/kafka/kafka-clients/3.4.0/kafka-clients-3.4.0.jar" -OutFile "spark_jobs/kafka-clients.jar"
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/spark/spark-token-provider-kafka-0-10_2.12/3.4.1/spark-token-provider-kafka-0-10_2.12-3.4.1.jar" -OutFile "spark_jobs/spark-token-provider.jar"
Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.11.1/commons-pool2-2.11.1.jar" -OutFile "spark_jobs/commons-pool2.jar"
```
### 步骤 3 — 构建并启动
```
docker compose build spark spark-worker
.\start.ps1
```
### 步骤 4 — 打开仪表板
## 结果
- 首次运行处理了 **6,481** 笔交易
- 检测到 **255** 个欺诈告警(欺诈率 3.9%)
- 检测到 **4 种欺诈模式**:high_amount、velocity、location_anomaly、new_merchant_high_amount
- 管道延迟:每个微批次 **< 3 秒**
- 使用 Docker Compose 将管道从数据模拟完整连接到实时 Streamlit 仪表板
- 使用包含 ML 依赖的自定义 Spark Docker 镜像容器化所有管道组件,确保可复现部署
标签:Apache Kafka, Apex, Docker, HBase, Isolation Forest, Kubernetes, MLOps, Plotly, PySpark, Python, scikit-learn, Spark Structured Streaming, SQLite, Streamlit仪表板, 事件驱动架构, 分布式系统, 响应大小分析, 大数据, 安全防御评估, 实时分析, 实时欺诈检测, 异常检测, 数据工程, 数据管道, 无后门, 机器学习, 死信队列, 流处理, 混合规则引擎, 特征工程, 电商安全, 目录扫描, 行为指纹, 请求拦截, 软件工程, 软件成分分析, 逆向工具, 金融科技