upasanaa0/fraud-detection-system
GitHub: upasanaa0/fraud-detection-system
面向印度支付场景的生产级欺诈检测流水线,集成多种机器学习模型和规则引擎。
Stars: 0 | Forks: 0
# 🛡️ 欺诈检测流水线
一个生产级的机器学习流水线,用于检测印度的欺诈支付交易。
从 Colab notebook 转换为整洁、模块化的 VS Code 项目。
## 项目结构
```
fraud_detection/
├── main.py ← Entry point (run this)
├── requirements.txt
├── .vscode/
│ ├── launch.json ← Run configs (F5 dropdown)
│ └── settings.json
├── src/
│ ├── data_generator.py ← Synthetic data generation
│ ├── feature_engineering.py ← All feature / flag functions
│ ├── train.py ← Model training (XGBoost + IsolationForest)
│ └── predict.py ← Inference + risk engine
├── data/ ← Created at runtime
│ ├── train.csv
│ ├── production.csv
│ └── final_output.csv ← Final scored output
└── model/ ← Created at runtime
├── xgb_model.pkl
├── iso_model.pkl
└── feature_columns.json
```
## 快速开始
### 1. 创建并激活虚拟环境
```
# Windows
python -m venv venv
venv\Scripts\activate
# Mac / Linux
python -m venv venv
source venv/bin/activate
```
### 2. 安装依赖项
```
pip install -r requirements.txt
```
### 3. 在 VS Code 中选择 Python 解释器
`Ctrl+Shift+P` → **Python: Select Interpreter** → 选择 `./venv`
### 4. 运行流水线
**选项 A – 终端(完整运行):**
```
python main.py
```
**选项 B – 快速开发运行(较小数据集):**
```
python main.py --train-rows 50000 --prod-rows 10000
```
**选项 C – 单步运行:**
```
python main.py --step generate
python main.py --step train
python main.py --step predict
```
**选项 D – VS Code 调试器:**
按 `F5` 并从下拉菜单中选择一个配置。
## 流水线步骤
| 步骤 | 描述 |
|------|-------------|
| **Generate** | 创建 50 万条训练 + 10 万条生产环境的合成交易 |
| **Train** | 应用 SMOTE,训练 XGBoost + Isolation Forest,保存模型 |
| **Predict** | 对生产数据进行评分,应用规则加成,输出决策 |
## 使用的特征
| 特征 | 描述 |
|---------|-------------|
| `state_changed` | 用户在不同的邦进行交易 |
| `new_device_flag` | 来自以前未见过的设备的交易 |
| `os_changed_flag` | 自上次交易以来操作系统版本发生变化 |
| `device_location_risk` | 同时出现新设备和新位置 |
| `impossible_travel_flag` | 连续交易之间的速度 > 500 km/h |
| `velocity_risk_flag` | 最近 1 小时内交易次数 ≥5 或金额 >₹20,000 |
| `amount_to_avg_ratio` | 交易金额与用户历史平均值的比率 |
| `is_night` | 午夜至凌晨 6 点之间的交易 |
| Region / Payment dummies | One-hot 编码的分类变量 |
## 输出
`data/final_output.csv` 包含每一笔生产交易,具有以下内容:
| 列 | 描述 |
|--------|-------------|
| `fraud_score` | 原始集成分数(XGBoost 70% + IsoForest 30%) |
| `final_risk_score` | 基于规则的加成后的分数(上限为 1.0) |
| `decision` | **ALLOW** / **CHALLENGE** / **BLOCK** |
### 决策阈值
| 决策 | 分数范围 |
|----------|-------------|
| ALLOW | < 0.5 |
| CHALLENGE | 0.5 – 0.79 |
| BLOCK | ≥ 0.8 |
## 性能说明
完整运行(50 万 + 10 万行)根据您的机器配置需要 **10–25 分钟**。
使用 `--train-rows 50000 --prod-rows 10000` 进行快速测试运行(约 2–3 分钟)。
标签:Apex, AV绕过, FastAPI, Kubernetes, Python, REST API, RuPay, Scikit-learn, SMOTE, Streamlit, UPI, XGBoost, 不可能旅行检测, 分类模型, 印度支付, 反洗钱, 合成数据生成, 孤立森林, 异常检测, 数据不平衡处理, 无后门, 机器学习, 欺诈检测, 电子钱包, 网络金融犯罪, 设备指纹, 访问控制, 逆向工具, 速度检查, 配置错误, 金融科技, 集成学习, 风控系统, 风险引擎