kgothatso605/credit-fraud-detection-ml
GitHub: kgothatso605/credit-fraud-detection-ml
基于系统化特征工程的端到端信用卡欺诈检测机器学习框架,包含从数据处理到API部署的完整生产级流水线。
Stars: 0 | Forks: 0
# 信用卡欺诈检测 ML 框架
[](https://www.python.org/)
[](LICENSE)
[](https://github.com/psf/black)
## 项目概述
从零开始构建的端到端欺诈检测系统,通过系统化的方法论和专业的 ML 实践,实现了 76.28% 的精确率和 9.04% 的召回率。
**核心成就**:基于 terminal 的特征占了模型重要性的 58%,这表明交易发生的*地点*比发生的时间或金额*多少*更为重要。
### 数据集
- **来源**:Kaggle - 信用卡欺诈检测挑战赛
- **规模**:291,231 条训练交易,226,731 条测试交易
- **不平衡度**:1:43 比例(2.26% 欺诈率)
- **结构**:多表关系数据(交易、客户、terminal)
**致谢**:我们非常感谢 Kaggle 提供此合成数据集用于教育目的。
## 结果摘要
| 指标 | 数值 | 状态 |
|--------|-------|--------|
| Precision | 76.28% | 高 |
| Recall | 9.04% | 保守 |
| F1-Score | 16.17% | 最佳平衡 |
| 训练时间 | 36.7s | 快速 |
| 核心特征 | terminal_fraud_rate | 29.75% 重要性 |
**关键发现**:发现了基本的精确率-召回率约束,其中 85%+ 的精确率需要 <1% 的召回率。
## 架构
```
End-to-End Pipeline:
Raw Data → Feature Engineering → Model Training → Evaluation → Deployment → API
```
### 构建的特征:共 58 个
1. **时间特征 (14)**:高风险时段 (21:00-04:00),周期性编码
2. **地理特征 (2)**:距离计算
3. **金额偏差 (6)**:每位客户的个性化 Z-score
4. **终端风险 (5)**:历史欺诈率(占模型重要性的 58%!)
5. **客户行为 (3)**:使用习惯
6. **高级上下文 (7)**:周末模式,客户时间习惯
7. **交互特征 (6)**:复合效应
### 评估的模型:20 种配置
- Logistic Regression, Random Forest, XGBoost, LightGBM, CatBoost
- 技术:Baseline、Class Weights、SMOTE、Threshold Tuning
- **已选择**:Random Forest Baseline(最佳的精确率-召回率平衡)
## 快速开始
### 安装
```
# Clone repository
git clone https://github.com/yourusername/credit_fraud_ml.git
cd credit_fraud_ml
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install package
pip install -e .
# Or install dependencies only
pip install -r requirements.txt
```
### 使用
#### 1. 特征工程
```
from src.features.feature_engineering import FeatureEngineer
# Initialize
engineer = FeatureEngineer()
# Load and engineer features
train_engineered = engineer.fit_transform(train_df, customers_df, terminals_df)
test_engineered = engineer.transform(test_df, customers_df, terminals_df)
```
#### 2. 模型训练
```
from src.models.train import train_model
# Train model
model, metrics = train_model(
X_train, y_train,
model_type='random_forest',
save_path='models/fraud_detector.pkl'
)
print(f"Precision: {metrics['precision']:.2%}")
print(f"Recall: {metrics['recall']:.2%}")
```
#### 3. 预测
```
from src.deployment.predictor import FraudPredictor
# Initialize predictor
predictor = FraudPredictor(model_path='models/fraud_detector.pkl')
# Predict
result = predictor.predict(transaction_data)
print(f"Fraud Probability: {result['fraud_probability']:.2%}")
```
#### 4. API 部署
```
# Start API server
uvicorn src.deployment.api:app --host 0.0.0.0 --port 8000
# Test prediction
curl -X POST "http://localhost:8000/predict" \
-H "Content-Type: application/json" \
-d '{"transaction_id": 12345, "amount": 100.50, ...}'
```
## 项目结构
```
credit_fraud_ml/
├── src/ # Source code
│ ├── data/ # Data loading & validation
│ ├── features/ # Feature engineering
│ ├── models/ # Model training & evaluation
│ ├── deployment/ # API & serving
│ └── utils/ # Utilities
├── notebooks/ # Jupyter notebooks
├── tests/ # Unit tests
├── deployment/ # Docker & K8s configs
├── data/ # Data (gitignored)
├── models/ # Saved models (gitignored)
└── reports/ # Figures & results
```
## 方法论
### 阶段 1:EDA(第 1-3 天)
**发现**:
- 高风险时段:21:00-04:00(欺诈率高出 50%)
- 交易量与风险悖论:低交易量时段 = 更高的欺诈率
- 金额分析:欺诈交易与正常交易之间仅有 $4.07 的差异
- 合成数据识别:周二欺诈率升高(异常模式)
### 阶段 2:特征工程(第 4-7 天)
跨 7 个类别**创建了 58 个特征**,重点关注:
- 终端风险指标(占模型重要性的 58%!)
- 个性化金额偏差(特定于客户的基准)
- 高级时间模式(高风险时段指标)
### 阶段 3:模型评估(第 8-12 天)
**系统性比较**:
- 测试了 20 种配置(5 个模型 × 4 种技术)
- 发现了精确率-召回率约束
- 选择了 Random Forest Baseline 作为最优模型
### 阶段 4:部署(第 13-17 天)
**生产就绪**:
- FastAPI REST API
- Docker 容器化
- 监控与日志记录
- 模型版本控制
## 关键经验
### 1. 特征工程 > 模型选择
尽管测试了 5 种不同的模型类型,但 terminal 特征占据了主导地位 (58%)。
### 2. 数据驱动 > 假设驱动
合成数据显示出周二欺诈率升高(而不是周末),这教会了我们应相信数据而非领域假设。
### 3. 系统性评估至关重要
测试 20 种配置揭示了在临时测试中不可见的约束。
### 4. 如实记录局限性
事实证明 85% 的精确率目标是不可能实现的(需要 <1% 的召回率)。记录失败的原因与记录成功一样重要。
## 性能优化
### 当前模型
- **Precision**:76.28%
- **Recall**:9.04%
- **推理时间**:<10ms/交易
### 潜在改进
1. 时间序列特征(滚动窗口)
2. 网络特征(欺诈团伙检测)
3. 集成方法(stacking)
4. 深度学习(用于序列的 LSTM)
## 部署
### Docker
```
# Build image
docker build -t fraud-detector:latest .
# Run container
docker run -p 8000:8000 fraud-detector:latest
```
### Kubernetes
```
# Deploy to K8s
kubectl apply -f deployment/kubernetes/
# Check status
kubectl get pods -l app=fraud-detector
```
### 监控
- 位于 `/metrics` 的 Prometheus 指标
- 位于 `/health` 的健康检查
- 模型性能跟踪
## 测试
```
# Run all tests
pytest tests/
# With coverage
pytest tests/ --cov=src --cov-report=html
# Specific test
pytest tests/test_features.py -v
```
## API 文档
运行后,请访问:`http://localhost:8000/docs`
### 接口
**POST /predict** - 预测单笔交易
```
{
"transaction_id": 12345,
"amount": 100.50,
"customer_id": 1,
"terminal_id": 50,
"timestamp": "2026-02-16T21:30:00"
}
```
**POST /predict/batch** - 批量预测
**GET /health** - 健康检查
**GET /metrics** - Prometheus 指标
## 作者
**Kgothatso Ntumbe**
威特沃特斯兰德大学物理学硕士学生
有志成为 AI 工程师与创业者
## 许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
## 鸣谢
- **数据集**:Kaggle - 信用卡欺诈检测挑战赛
- **平台**:用于开发的 CERN SWAN
- **工具**:scikit-learn, XGBoost, LightGBM, CatBoost, FastAPI
## 文档
- [API 文档](docs/api_documentation.md)
- [特征工程指南](docs/feature_engineering.md)
- [部署指南](docs/deployment.md)
## 路线图
- [x] EDA 与特征工程
- [x] 模型训练与评估
- [x] API 部署
- [ ] 实时流处理 Pipeline
- [ ] A/B 测试框架
- [ ] AutoML 集成
- [ ] 模型监控仪表板
** 如果您觉得这个项目有用,请考虑给它点个 Star!**
标签:Apex, Python, 子域名突变, 数据科学, 无后门, 机器学习, 欺诈检测, 特征工程, 请求拦截, 资源验证, 逆向工具, 金融科技