venom312004/Transaction-Fraud-Detection
GitHub: venom312004/Transaction-Fraud-Detection
基于机器学习的金融交易欺诈检测系统,系统性对比多种采样策略解决类别不平衡问题,证明SMOTE过采样方法可达到近100%欺诈召回率。
Stars: 1 | Forks: 0
# 🧠 基于机器学习的交易欺诈检测系统
使用不同的机器学习模型检测信用卡欺诈交易并比较性能。
## 📄 概述
在本 Notebook 中,我们将探索各种机器学习模型以检测信用卡欺诈使用情况,并比较每个模型的性能和结果。使用 SMOTE 技术取得了最佳性能。
## 📌 问题陈述
在这个项目中,我们的目标是识别信用卡欺诈交易。我们的目标是利用机器学习技术构建欺诈检测系统。历史上,此类系统是基于规则的,但机器学习提供了强大的新方法。
该项目使用了一个包含 300,000 条完全匿名交易的数据集。每笔交易都被标记为欺诈或非欺诈。请注意,数据集中欺诈交易的比例非常低——不到 0.1% 的卡交易是欺诈性的。这意味着一个预测每笔交易都是正常的系统可以达到超过 99.9% 的准确率,尽管它没有检测到任何欺诈交易。这将需要调整技术。
## 📊 数据集信息
- **数据集名称:** 信用卡欺诈检测
- **来源:** Kaggle – Machine Learning Group, Université Libre de Bruxelles
- **总交易数:** 284,807
- **欺诈案例:** 492
- **特征:** 30 个输入特征 + 1 个目标变量
- **目标变量:** `Class`
- 0 = 合法交易
- 1 = 欺诈交易
## 🛠️ 项目中使用的技术
该项目比较了不同技术的结果:
### 🤖 机器学习技术
- Random Forest
- Decision Trees
### 🧠 深度学习技术
- 使用全连接层的神经网络
针对不同的优化方法比较了神经网络的性能:
1. 普通二值交叉熵损失最小化
2. 使用权重最小化以补偿类别不平衡
3. 对非欺诈类进行欠采样以匹配欺诈类
4. 通过实施 SMOTE 技术对欺诈类进行过采样以匹配非欺诈类。SMOTE 方法利用两个现有数据点生成新向量。有关此方法的更多详细信息,您可以阅读这篇详细文章:[SMOTE for Imbalanced Classification with Python](https://machinelearningmastery.com/smote-oversampling-for-imbalanced-classification/)。
### 📝 关于 Random Forest 和 Decision Tree 模型的说明:
- **Decision Tree:** 使用所有特征/变量在整个数据集上构建。很容易过拟合数据,因此建议使用交叉验证。优点:易于解释,清楚地了解用于分割数据和预测结果的变量和值。
- **Random Forest:** Decision Tree 的集合。它随机选择观察值(行)和特定特征/变量来构建多个决策树,然后平均结果。它减少了误差的方差部分而不是偏差,泛化能力更好,并且在未见过的验证数据集上表现更好。
## 📊 结果
### 测试集
| Model | Accuracy | False Neg. Rate | Recall | Precision | F1 Score |
|---------------------------|----------|-----------------|----------|-----------|----------|
| Random Forest | 0.999544 | 0.224490 | 0.775510 | 0.950000 | 0.853933 |
| Decision Tree | 0.999239 | 0.244898 | 0.755102 | 0.792857 | 0.773519 |
| Plain Neural Network | 0.999403 | 0.238095 | 0.761905 | 0.875000 | 0.814545 |
| Weighted Neural Network | 0.986775 | 0.102041 | 0.897959 | 0.105854 | 0.189383 |
| Under-Sampled Neural Net | 0.956081 | 0.053333 | 0.946667 | 0.965986 | 0.956229 |
| Over-Sampled Neural Net | 0.998376 | 0.000223 | 0.999777 | 0.996985 | 0.998379 |
### 全集
| Model | Accuracy | False Neg. Rate | Recall | Precision | F1 Score |
|---------------------------|----------|-----------------|----------|-----------|----------|
| Random Forest | 0.999544 | 0.224490 | 0.775510 | 0.950000 | 0.853933 |
| Decision Tree | 0.999239 | 0.244898 | 0.755102 | 0.792857 | 0.773519 |
| Plain Neural Network | 0.999403 | 0.238095 | 0.761905 | 0.875000 | 0.814545 |
| Weighted Neural Network | 0.986775 | 0.102041 | 0.897959 | 0.105854 | 0.189383 |
| Under-Sampled Neural Net | 0.956081 | 0.053333 | 0.946667 | 0.965986 | 0.956229 |
| Under-Sampled Neural Net | 0.979432 | 0.048780 | 0.951220 | 0.074262 | 0.137769 |
| Over-Sampled Neural Net | 0.997402 | 0.004065 | 0.995935 | 0.399023 | 0.569767 |
## 🏁 结论
通过使用 SMOTE(合成少数类过采样技术)对代表性不足的类别进行过采样,可以获得最佳结果。通过这种方法,模型能够检测出未见测试集中 100% 的欺诈交易,完全满足了检测绝大多数异常交易的主要目标。
此外,误报的数量仍然可以接受,与其他一些方法相比,这使得欺诈部门对合法交易的验证工作大大减少。上表显示了关键结果。
该项目展示了机器学习和深度学习技术在检测信用卡欺诈交易方面的有效性。SMOTE 技术的使用显著改善了对欺诈交易的检测,使系统对于实时更新具有鲁棒性和可靠性。
请随意探索 Notebook 并将该方法应用于其他领域的检测问题。
## 📧 联系方式
**作者:** Pranjal Pandey
**邮箱:** Pranjalpandey0301@gmail.com
**LinkedIn:** https://www.linkedin.com/in/pranjal-pandey-501a5a244
标签:Apex, BSD, Kaggle, Python, SMOTE, 不平衡数据处理, 二分类, 信用卡欺诈, 决策树, 反欺诈, 异常检测, 数据挖掘, 数据预处理, 无后门, 机器学习, 模型评估, 深度学习, 特征工程, 神经网络, 网络安全, 逆向工具, 金融欺诈检测, 金融科技, 随机森林, 隐私保护