Khlybtssh/fraud-detection-system
GitHub: Khlybtssh/fraud-detection-system
一个结合 Isolation Forest 异常检测、PyTorch 神经网络和规则引擎的混合式金融交易欺诈检测系统,提供实时推理 API。
Stars: 0 | Forks: 0
# 欺诈检测系统
一个适用于金融交易的生产级异常检测与欺诈分类系统。
本项目安全地从 Jupyter Notebook pipeline 重构为健壮的 Python 架构,将数据处理、模型训练、artifact 管理以及实时推理系统分离开来。
## 架构概述
系统采用两个主要模型并行运行来评估交易风险:
1. **异常检测层**:一个 `IsolationForest` 模型,用于识别统计上的异常行为或缺乏历史先例的离群点交易。
2. **欺诈神经网络**:一个通过 `SMOTE` 进行平衡的 PyTorch 深度学习分类器,基于编码特征生成交易欺诈的统计概率。
3. **风险引擎**:一个硬编码的确定性规则引擎,用于根据特定领域的触发条件(例如,夜间活动风险、地理风险)检查交易。允许系统在特殊情况下的模糊 ML 边界上作出判断并覆盖。
这些输出会汇入统一的 **决策层**,以决定交易是 `APPROVE`、`REVIEW` 还是 `DECLINE`。
### 目录结构
```
fraud_detection_system/
│
├── config.py # Centralized hyperparameters & paths
├── main.py # Direct Python entry point for single-transaction inference
├── app.py # FastAPI REST API server for HTTP-based inference
│
├── artifacts/ # Saved output directory for trained ML weights
│ ├── anomaly_model.pkl # Fitted IsolationForest instance
│ ├── encoders.pkl # Fitted OneHot/Ordinal encoders dict
│ ├── model.pt # PyTorch model weights dict
│ └── scaler.pkl # Fitted StandardScaler instance
│
├── training_pipeline/ # Executable scripts for dataset ingestion & training
│ ├── train.py # Entry script combining pipeline components
│ ├── anomaly_training.py # Wrapper for Isolation Forest fits
│ ├── dataset.py # PyTorch custom Dataset class
│ ├── data_loader.py # pandas loading and explicit column drops
│ └── trainer.py # PyTorch optimization loops and validation logic
│
├── inference_pipeline/ # Executable components for evaluating a parsed transaction
│ ├── anomaly_scoring.py # Applies fitted Isolation Forest
│ ├── fraud_inference.py # Evaluates PyTorch classifier probabilties
│ └── model_loader.py # Loads .pkl and .pt weights safely from artifacts
│
├── preprocessing/ # Shared stateless logic ensuring exact parity
│ ├── encoding.py # Categorical mapping definitions
│ ├── feature_engineering.py # Time, Distance, Haversine, and coordinate parsing
│ └── scaling.py # StandardScaler interfaces
│
├── models/ # Network architectures
│ └── fraud_nn.py # PyTorch `FraudNN` sequential module
│
├── risk_engine/ # Deterministic evaluators
│ ├── rule_engine.py # Static condition flags (e.g. `HIGH_AMOUNT`)
│ └── decision_layer.py # Evaluates all thresholds to output APPROVE/REVIEW
│
└── utils/
└── metrics.py # Standard ML calculation functions (F1, AUC, Recall)
```
## 设置与执行
### 1. 训练系统
在运行预测之前,您必须执行训练 pipeline 以生成必要的 artifact。确保 `config.py` 中的 CSV 数据路径准确反映了您的本地数据集位置。
```
cd fraud_detection_system
python training_pipeline/train.py
```
**训练流程 (`train.py`):**
1. 加载定义的数据集。
2. 通过 `feature_engineering.py` 解析复杂特征,如地理 `haversine` 距离和日期时间偏移量。
3. 处理分类标识符的 `OneHotEncoding` 和 `OrdinalEncoding`。
4. 使用 `StandardScaler` 对剩余特征进行缩放。
5. 拟合无监督的 `IsolationForest` 异常模型。
6. 使用 `SMOTE` 处理类别不平衡问题。
7. 在 CUDA(如果可用)上实例化并优化目标 `FraudNN` PyTorch 分类器。
8. 将所有成功拟合的组件转储到 `artifacts/` 中。
### 2. 实时推理
编译好 artifact 后,您有两个选项可以运行实时推理:
#### 选项 A:REST API (`app.py`) — 推荐
系统公开了一个 **FastAPI** REST API,用于基于 HTTP 的交易评估。使用以下命令启动服务器:
```
cd fraud_detection_system
uvicorn app:app --reload
```
API 将在 `http://127.0.0.1:8000` 可用。交互式文档自动生成于 `/docs` (Swagger UI) 和 `/redoc`。
#### API 端点
| 方法 | 端点 | 描述 |
|----------|-----------------------------------|----------------------------------------------|
| `GET` | `/` | 健康检查 — 返回欢迎信息 |
| `GET` | `/transactions` | 列出所有记录的交易 |
| `GET` | `/transactions/{transaction_id}` | 通过 ID 获取特定交易 |
| `POST` | `/transactions` | 提交新交易进行评估 |
| `DELETE` | `/transactions/{transaction_id}` | 通过 ID 删除交易 |
#### 请求示例
**列出所有交易:**
```
curl http://127.0.0.1:8000/transactions
```
**获取特定交易:**
```
curl http://127.0.0.1:8000/transactions/1
```
**提交新交易:**
```
curl -X POST "http://127.0.0.1:8000/transactions?amount=500.00&merchant=Amazon"
```
金额 `amount < 1000` 的交易会自动 `approved`;金额 `>= 1000` 的交易会被 `flagged` 以供审查。
**删除交易:**
```
curl -X DELETE http://127.0.0.1:8000/transactions/2
```
#### 选项 B:直接通过 Python (`main.py`)
`main.py` 作为独立的入口点,无需启动服务器即可直接通过 Python 评估交易。
```
cd fraud_detection_system
python main.py
```
**推理流程 (`main.py`):**
1. 系统初始化并通过 `model_loader.py` 缓存权重。
2. 获取原始字典交易 (`process_transaction`)。
3. 对齐特征列,使其与训练循环中观察到的完全匹配。
4. 删除不必要的引用列 (`cc_num`、`first`、`last` 等)。
5. 填充缺失的编码,提取特征,并按照 `preprocessing` 内部的逻辑对数组进行缩放。
6. PyTorch 前向传播生成欺诈概率,而 `IsolationForest` 返回交易异常的严重程度。
7. 两个元数据源都进入规则引擎逻辑。
8. 最终的决策字符串通过决策层算法返回。
## 配置
您可以轻松地通过 `config.py` 调整超参数或模型架构,而无需修改运行代码:
```
"model": {
"input_dim": 77,
"hidden_dims": [128, 64],
"dropout": 0.2
},
"optimizer": {
"type": "adam",
"lr": 0.001
}
```
## 依赖项
API 层需要 **FastAPI** 和 **Uvicorn**。请将它们与现有需求一起安装:
```
pip install fastapi uvicorn
pip install -r requirements.txt
```
## 添加新功能/规则
- 要添加新的 ML 特征转换,请更新 `preprocessing/feature_engineering.py`。
- 要确立新的公司政策或业务逻辑约束,请在 `risk_engine/rule_engine.py` 中实现该标志。
- 要添加新的 API 端点,请在 `app.py` 中定义路由。
标签:Apex, AV绕过, FastAPI, PyTorch, Vectored Exception Handling, 凭据扫描, 异常检测, 机器学习, 欺诈检测, 逆向工具, 风险控制