Mahi-bot/Credit-Card-Fraud-Detection-Model-Using-ML
GitHub: Mahi-bot/Credit-Card-Fraud-Detection-Model-Using-ML
一个使用XGBoost和SMOTE构建的信用卡欺诈检测模型,旨在高效识别高度不平衡数据集中的欺诈交易。
Stars: 0 | Forks: 0
# 基于XGBoost的信用卡欺诈检测
一个使用XGBoost进行机器学习的项目,旨在以高精确率和高召回率检测欺诈性信用卡交易。
## 🎯 项目概述
本项目构建了一个预测模型,用于实时识别欺诈性信用卡交易。它运用了高级特征工程、类别不平衡处理(SMOTE)以及经过优化阈值选择的XGBoost分类器。
**关键性能指标:**
- **精确率(Precision):** 75.68% - 在被标记为欺诈的100笔交易中,约76笔确实是欺诈
- **召回率(Recall):** 85.71% - 在实际发生的100起欺诈中,模型能捕捉到约86起
- **F1分数(F1 Score):** 80.38% - 精确率与召回率之间取得了良好的平衡
- **ROC-AUC:** 0.94+(因测试集划分而异)
## 📊 模型性能
| 指标 | 验证集 | 测试集 |
|--------|-----------|------|
| 准确率(Accuracy) | ~88% | ~88% |
| 精确率(Precision) | 75.68% | ~76% |
| 召回率(Recall) | 85.71% | ~86% |
| F1分数(F1 Score) | 80.38% | ~81% |
## 🚀 快速开始
### 前置条件
- Python 3.8+
- pip 或 conda
### 安装说明
1. 克隆代码仓库:
```
git clone https://github.com/yourusername/credit-card-fraud-detection.git
cd credit-card-fraud-detection
```
2. 安装依赖项:
```
pip install -r requirements.txt
```
3. 下载数据集:
- 获取 `creditcard.csv` 文件(可在Kaggle上找到)
- 将其放置在项目根目录下
### 使用方法
#### 训练模型
```
python Xgboost.py
```
此命令将执行以下操作:
- 加载并预处理信用卡数据集
- 应用特征工程
- 使用SMOTE训练XGBoost模型
- 优化分类阈值
- 生成评估指标和可视化图表
- 将训练好的模型保存为 `xgb_fraud_model.pkl`
#### 进行预测
```
python predict.py --transaction '[{"Amount": 100.50, "V1": 0.5, "V2": -0.3, ...}]'
```
或者在Python中使用预测脚本:
```
from predict import predict_fraud
# 单一预测
result = predict_fraud(transaction_features)
# 批量预测
results = predict_fraud(transactions_list)
```
## 📁 项目结构
```
credit-card-fraud-detection/
├── Xgboost.py # Main model training script
├── predict.py # Inference script
├── test_plot.py # Test plotting utilities
├── creditcard.csv # Dataset (not included, download separately)
├── requirements.txt # Python dependencies
├── README.md # This file
├── LICENSE # MIT License
├── config.py # Configuration settings
├── Details.txt # Performance details
├── xgb_fraud_model.pkl # Trained model (generated after training)
├── confusion_matrix_validation.png # Generated visualization
├── confusion_matrix_test.png # Generated visualization
└── roc_curve.png # Generated visualization
```
## 🔧 技术细节
### 特征工程
模型采用了高级特征工程技术:
- **金额特征:** 平方、对数变换、根号变换及分箱处理
- **统计特征:** V列的均值、标准差、最大值、最小值、范围
- **交互特征:** 高方差检测、金额-方差交互
- **异常值检测:** 极端V值的计数
### 模型配置
- **算法:** XGBoost分类器
- **基学习器数量:** 140
- **最大深度:** 7
- **学习率:** 0.05
- **子采样率:** 0.85
- **类别不平衡处理:** 对训练集应用SMOTE
- **阈值:** 针对目标召回率(80-90%)和精确率(75-85%)进行优化
### 数据处理流程
1. **训练-测试集划分:** 80-20
2. **训练-验证集划分:** 训练数据的70-30
3. **特征缩放:** 对金额特征使用StandardScaler
4. **SMOTE:** 仅应用于训练集,以防止数据泄露
## 📈 输出结果
运行 `Xgboost.py` 后,将生成以下文件:
- `xgb_fraud_model.pkl` - 用于推理的训练模型
- `confusion_matrix_validation.png` - 验证集混淆矩阵
- `confusion_matrix_test.png` - 测试集混淆矩阵
- `roc_curve.png` - ROC曲线
- `training_accuracy.png` - 训练集与验证集准确率曲线
## 🎓 数据集
本项目使用了 **信用卡欺诈检测** 数据集,可在以下位置获取:
- [Kaggle](https://www.kaggle.com/mlg-ulb/creditcardfraud)
**数据集统计信息:**
- **样本数量:** 约284,000笔交易
- **特征数量:** 30个(28个PCA变换特征 + 金额 + 时间)
- **类别分布:** 严重不平衡(约0.17%欺诈)
- **目标变量:** 'Class'(0=正常,1=欺诈)
## 🛡️ 安全与最佳实践
- ✅ 无硬编码凭据
- ✅ 基于环境的配置
- ✅ 正确的数据泄露预防
- ✅ 分层交叉验证
- ✅ 全面的错误处理
- ✅ 非交互式后端,兼容CI/CD流程
## 🔍 模型可解释性
特征重要性可以从训练好的模型中提取:
```
import pickle
model = pickle.load(open('xgb_fraud_model.pkl', 'rb'))
feature_importance = model.feature_importances_
```
## 📝 许可证
本项目采用MIT许可证 - 详情请参阅 [LICENSE](LICENSE) 文件。
## 🤝 贡献
欢迎贡献!请随时提交Pull Request。
## 📧 联系与支持
如有问题或疑问,请在GitHub代码仓库中提交issue。
## 🙏 致谢
- XGBoost开发团队
- Kaggle社区提供的数据集
- scikit-learn 和 imlearn 库
## 🔄 版本历史
- **v1.0**(当前版本) - 初始发布,包含XGBoost模型、特征工程和阈值优化
**最后更新:** 2026年5月
标签:Apex, F1分数, ROC-AUC, SMOTE, XGBoost, 不平衡数据处理, 信用卡欺诈检测, 分类算法, 召回率, 实时检测, 性能调优, 数据科学, 数据预处理, 机器学习, 模型评估, 欺诈预防, 混淆矩阵, 特征工程, 特征缩放, 监督学习, 精确率, 资源验证, 逆向工具, 金融安全, 阈值优化