engripaye/fraud-detection-system
GitHub: engripaye/fraud-detection-system
一个端到端的实时信用卡欺诈检测系统,结合机器学习、消息队列与缓存实现低延迟识别与API服务。
Stars: 12 | Forks: 1
# 🚨 欺诈检测系统 — 基于 Python、Kafka 与 Redis 的实时机器学习与流处理
实时检测信用卡交易欺诈行为,结合 **机器学习、Kafka 流处理、Redis 缓存** 以及 **FastAPI 模型服务**。
本项目展示了一个生产级欺诈检测流水线的完整端到端生命周期 —— 从数据预处理、模型训练,到实时推理与 API 部署。
## 🧠 概述
| 领域 | 技术 |
| ------------------------- | ------------------------------ |
| **语言** | Python 3.10+ |
| **机器学习** | scikit-learn(RandomForestClassifier) |
| **流处理** | Apache Kafka |
| **特征存储 / 缓存** | Redis |
| **API 服务** | FastAPI |
| **容器化** | Docker + Docker Compose |
## 🌟 本项目的亮点
✅ 展示 **端到端机器学习工程** —— 包含数据预处理、训练与实时模型服务。
✅ 集成 **Kafka** 实现实时流处理,使用 **Redis** 提供低延迟特征检索。
✅ 可通过 **Docker Compose** 快速部署,便于本地或云端测试。
✅ 提供 **REST API** 支持实时预测请求。
✅ 适合展示 **数据工程、MLOps 与软件设计** 能力。
## 🏗️ 系统架构
```
+------------------+
| Kaggle Data |
| (creditcard.csv)|
+--------+---------+
|
v
+------------------+ +---------------------+
| Training Job |--> | Trained Model |
| (scikit-learn RF)| | rf_model.pkl |
+--------+---------+ +----------+----------+
| |
v v
+------------------+ +------------------+
| Kafka Producer | ---> | Kafka Consumer |
| (streams txns) | | (fraud detector) |
+------------------+ +------------------+
|
v
+----------------+
| Redis Cache |
+----------------+
|
v
+---------------+
| FastAPI API |
| /predict |
+---------------+
```
## 🧩 功能特性
* **离线训练**:基于 Kaggle 信用卡欺诈数据集训练 RandomForest 模型。
* **实时流处理**:Kafka 生产者发送交易记录 → 消费者执行欺诈评分。
* **特征存储**:使用 Redis 缓存与检索用户级特征。
* **REST API**:提供 `/predict` 端点用于实时预测。
* **容器化部署**:通过 Docker Compose 一键启动。
## ⚙️ 安装与配置
### 1️⃣ 克隆仓库
```
git clone https://github.com/yourusername/fraud-detection-system.git
cd fraud-detection-system
```
### 2️⃣ 创建虚拟环境
```
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
```
### 3️⃣ 下载数据集
从 [Kaggle - 信用卡欺诈检测](https://www.kaggle.com/mlg-ulb/creditcardfraud) 获取数据集。
保存至:
```
data/creditcard.csv
```
## 🧠 模型训练
训练并导出 RandomForest 模型:
```
python src/training/train.py --data data/creditcard.csv
```
✅ 输出示例:
```
precision recall f1-score support
0 0.99 1.00 0.99 56863
1 0.95 0.83 0.89 99
ROC AUC: 0.985
Saved model and scaler.
```
模型工件将存储在:
```
src/model/rf_model.pkl
src/model/scaler.pkl
```
## 🚀 运行整个系统(完整流水线)
### 1️⃣ 启动服务
```
docker-compose -f docker/docker-compose.yml up --build
```
这将启动 **Kafka、Zookeeper、Redis** 以及 **FastAPI 应用**。
### 2️⃣ 启动 Kafka 消费者
```
python src/streaming/kafka_consumer.py
```
### 3️⃣ 流式处理交易
```
python src/streaming/kafka_producer.py --csv data/creditcard.csv --limit 20
```
✅ 你将看到:
```
Processed: {'transaction_id': 't_0', 'user_id': 'unknown', 'fraud_score': 0.0021}
Processed: {'transaction_id': 't_1', 'user_id': 'unknown', 'fraud_score': 0.9875}
...
```
## 🌐 REST API 测试
### 本地运行 FastAPI
```
uvicorn src.api.main:app --reload
```
然后访问:
👉 **[http://127.0.0.1:8000/docs](http://127.0.0.1:8000/docs)**
使用以下示例负载调用 `/predict` 端点:
```
{
"V1": -1.3598, "V2": -0.0728, "V3": 2.5363, "V4": 1.3782, "V5": -0.3383,
"V6": 0.4624, "V7": 0.2396, "V8": 0.0987, "V9": 0.3638, "V10": 0.0903,
"V11": -0.5516, "V12": -0.6178, "V13": -0.9913, "V14": -0.3112, "V15": 1.4682,
"V16": -0.4704, "V17": 0.2079, "V18": 0.0258, "V19": 0.4037, "V20": 0.2514,
"V21": -0.0183, "V22": 0.2778, "V23": -0.1105, "V24": 0.0669, "V25": 0.1285,
"V26": 0.0110, "V27": 0.2785, "V28": 0.0638,
"scaled_amount": 0.015, "scaled_time": 0.02
}
```
✅ 响应结果:
```
{ "fraud_score": 0.0034 }
```
## 🧪 测试与验证
| 测试项 | 命令 | 说明 |
| ---------------- | ----------------------------------------- | ------------------ |
| **训练模型** | `python src/training/train.py` | 训练并保存模型 |
| **API 测试** | `uvicorn src.api.main:app` | 测试 REST `/predict` |
| **Kafka 测试** | `python src/streaming/kafka_producer.py` | 流式传输交易 |
| **消费者测试** | `python src/streaming/kafka_consumer.py` | 处理欺诈评分 |
| **单元测试** | `pytest` | 验证模型与逻辑 |
## 📊 示例输出
| 交易 ID | 欺诈评分 |
| --------- | -------- |
| t_001 | 0.0031 |
| t_002 | 0.9824 |
| t_003 | 0.0065 |
## 🧱 文件夹结构
```
fraud-detection/
├─ data/
│ └─ creditcard.csv
├─ src/
│ ├─ api/ # FastAPI inference service
│ ├─ model/ # Saved model/scaler
│ ├─ training/ # Data prep + model training
│ ├─ streaming/ # Kafka producer/consumer + Redis
│ └─ utils/ # Extra metrics/utils
├─ docker/
│ ├─ Dockerfile.app
│ └─ docker-compose.yml
├─ notebooks/ # Optional EDA or feature exploration
├─ requirements.txt
└─ README.md
```
## 🧩 使用技术
* **Python** — 核心编程语言
* **scikit-learn** — 机器学习训练与评估
* **Kafka** — 事件流处理
* **Redis** — 特征存储 / 缓存
* **FastAPI** — 实时预测的 REST API
* **Docker** — 容器化环境
## 🔮 后续改进计划
* 使用 **PyTorch TabNet / XGBoost** 替代 RandomForest 以提升性能
* 添加 **漂移检测** 与 **自动重训练流水线**
* 集成 **Prometheus 与 Grafana** 进行监控
* 部署至 **Kubernetes** 以实现可扩展性
* 增加 **前端仪表板** 用于实时欺诈可视化
## 🧑💻 作者
**Olabowale Ipaye**
🎯 全栈后端开发工程师 | DevOps 工程师
📍 尼日利亚
🔗 [LinkedIn 个人资料](https://www.linkedin.com/in/engripayebabatunde)
💻 [GitHub](https://github.com/engripaye)
标签:Apex, AV绕过, DNS解析, Docker, Docker Compose, FastAPI, Kafka流处理, MLOps, Python, Redis缓存, REST API, SEO, 低延迟服务, 信用卡欺诈, 关键词优化, 在线推理, 安全防御评估, 实时欺诈检测, 开源项目, 技术栈, 搜索引擎查询, 数据工程, 数据预处理, 无后门, 机器学习, 模型训练, 模型部署, 流式数据, 特征存储, 生产级机器学习, 端到端机器学习, 网络测绘, 请求拦截, 逆向工具