MinThu63/Fraud-Detection-ML
GitHub: MinThu63/Fraud-Detection-ML
基于Random Forest的端到端金融交易欺诈检测ML pipeline,覆盖数据生成、特征工程、模型训练与评估全流程。
Stars: 0 | Forks: 0
# 🏦 金融科技欺诈检测
用于检测欺诈性金融交易的机器学习 pipeline。使用 Python、MySQL、Pandas 和 scikit-learn 构建。
## 目录
- [动机](#motivation)
- [功能](#features)
- [架构](#architecture)
- [项目结构](#project-structure)
- [技术亮点](#technical-highlights)
- [快速开始](#getting-started)
- [截图](#screenshots)
- [路线图](#roadmap)
- [许可证](#license)
## 动机
银行每天处理数以百万计的交易。人工审查每笔交易以排查欺诈是不可能的。本项目构建了一个 AI 系统,能够自动从历史数据中学习欺诈模式并实时标记可疑交易——这与 DBS 银行和 PayPal 等公司所采用的方法相同。
无需编写诸如“如果金额 > $10,000 → 欺诈”的硬性规则,模型可以学习复杂的模式:
## 功能
- **合成数据生成** — 创建具有正常和欺诈模式的逼真交易数据
- **MySQL 集成** — 使用 SQL 存储和查询交易数据
- **数据预处理** — 处理缺失值,使用 Pandas 进行特征工程
- **ML 欺诈检测** — 准确率达 98% 的 Random Forest 分类器
- **模型评估** — 精确率、召回率、混淆矩阵、ROC-AUC 评分
- **特征重要性** — 展示哪些因素对检测欺诈最为重要
- **端到端 pipeline** — 单条命令即可运行完整的工作流程
## 架构
```
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Data Generation │────▶│ MySQL │────▶│ Preprocessing │
│ (generate_data) │ │ (database) │ │ (Pandas) │
└─────────────────┘ └─────────────────┘ └────────┬────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Predictions │◀────│ ML Model │◀────│ Feature Matrix │
│ (fraud/normal) │ │ (Random Forest) │ │ (X, y) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
**工作流程:**
1. 生成 10,000 笔合成交易(5% 欺诈率)
2. 加载到 MySQL 数据库
3. 使用 SQL 查询并提取数据
4. 使用 Pandas 清理数据并进行特征工程
5. 在 80% 的数据上训练 Random Forest 模型
6. 在 20% 的未见测试数据上进行评估
7. 输出带有置信度分数的预测结果
## 项目结构
```
fintech-fraud-detection/
├── data/
│ └── generate_data.py # Generates synthetic transaction data
├── notebooks/
│ └── exploration.py # EDA and visualizations
├── src/
│ ├── database.py # MySQL connection and queries
│ ├── preprocessing.py # Data cleaning and feature engineering
│ ├── model.py # ML model training and evaluation
│ └── predict.py # Full pipeline (entry point)
├── .gitignore
├── requirements.txt
└── README.md
```
## 技术亮点
| 领域 | 详情 |
|------|---------|
| **语言** | Python 3.12 |
| **数据库** | MySQL 8.4 |
| **ML 算法** | Random Forest(100 棵树,平衡的类别权重) |
| **准确率** | 整体 98%,欺诈召回率 90% |
| **数据** | 10,000 笔交易,5% 欺诈率(不平衡) |
| **特征** | 从 7 个原始列中提取 20 个工程特征 |
**使用的关键技术:**
- 针对不平衡数据的类别权重平衡
- 针对偏斜金额的对数变换
- 针对分类特征的特征独热编码
- 用户级行为特征(消费比例)
- 分层训练/测试集划分以保持欺诈比例
## 快速开始
### 前置条件
- Python 3.10+
- MySQL 8.0+
- pip
### 安装说明
```
# Clone repo
git clone https://github.com/MinThu63/Fraud-Detection-ML.git
cd Fraud-Detection-ML
# Install dependencies
pip install -r requirements.txt
# Generate synthetic data
python data/generate_data.py
# Update src/database.py (line 19) 中的 MySQL 密码
# Load data 到 MySQL
python src/database.py --load
# Run full pipeline
python src/predict.py
```
## 截图
### 模型评估
模型在 2,000 笔未见交易上的表现。精确率告诉我们有多少欺诈标记是正确的。召回率告诉我们有多少真正的欺诈被捕获了。该模型每 100 起欺诈能抓出 90 起,同时仅产生 29 次误报。
```
Classification Report:
precision recall f1-score support
Normal 0.99 0.98 0.99 1900
Fraud 0.76 0.90 0.82 100
accuracy 0.98 2000
Confusion Matrix:
True Negatives: 1871 (correctly identified normal)
False Positives: 29 (normal flagged as fraud)
False Negatives: 10 (fraud missed!)
True Positives: 90 (correctly caught fraud)
ROC-AUC Score: 0.9882
```
### 预测示例
模型接收交易的详细信息并输出欺诈概率。交易 #18 存在多个危险信号(国际交易 + 网络购物),因此模型以 77.5% 的置信度对其进行标记。交易 #1 尽管是国际交易,但看起来很正常——因为低金额使其保持安全。
```
Transaction #18:
Amount: $208.91 | Hour: 12:00 | Category: online_shopping | International: Yes
Predicted: 🚨 FRAUD (confidence: 77.5%)
Transaction #1:
Amount: $32.94 | Hour: 15:00 | Category: online_shopping | International: Yes
Predicted: ✅ Normal (confidence: 99.4%)
```
### 特征重要性
展示了模型在做出决策时最依赖的因素。交易金额是最强的信号(16%),其次是交易是否为国际交易(12.5%)以及是否发生在夜间(10%)。这与现实世界中的欺诈模式相符。
```
amount 0.1608 ████████
amount_log 0.1268 ██████
is_international 0.1257 ██████
is_night 0.1017 █████
hour 0.0992 ████
amount_vs_user_avg 0.0943 ████
cat_electronics 0.0718 ███
```
## 路线图
- [ ] 添加模型对比(Logistic Regression vs XGBoost vs Random Forest)
- [ ] 基于 Flask 的实时预测 API
- [ ] 用于欺诈监控的仪表板
- [ ] SMOTE 过采样以实现更好的欺诈召回率
- [ ] 深度学习方法(用于序列交易的 LSTM)
- [ ] 与信用评分模型集成
## 许可证
本项目是开源的,可在 [MIT 许可证](LICENSE) 下获取。
标签:Apex, Python, ROC-AUC, scikit-learn, 不平衡数据处理, 交易监控, 人工智能, 代码示例, 分类算法, 反欺诈, 异常检测, 数据分析, 数据库查询, 数据生成, 数据科学, 数据预处理, 无后门, 机器学习, 欺诈检测, 特征工程, 用户模式Hook绕过, 端到端机器学习, 资源验证, 逆向工具, 金融数据分析, 金融科技, 金融风控, 随机森林, 风控模型