Kushagra9027/CREDIT_CARD_FRAUD_DETECTION
GitHub: Kushagra9027/CREDIT_CARD_FRAUD_DETECTION
基于Python和Scikit-Learn构建的信用卡欺诈检测机器学习项目,通过对比逻辑回归与随机森林模型解决高度不平衡数据下的欺诈交易分类问题。
Stars: 1 | Forks: 0
# 使用机器学习进行信用卡欺诈检测
## Oasis Infobyte 数据分析实习 - 二级项目
### 项目概述
本项目旨在使用机器学习技术检测欺诈性信用卡交易。欺诈检测在金融行业中扮演着至关重要的角色,它通过识别可疑交易来防止财务损失。
本项目的目标是构建并评估能够使用历史交易数据区分合法交易和欺诈交易的机器学习模型。
## 目标
* 执行数据清理和预处理。
* 进行探索性数据分析(EDA)。
* 了解欺诈数据集中的类别不平衡问题。
* 训练用于欺诈检测的机器学习模型。
* 使用适当的指标评估模型性能。
* 比较多个模型并确定性能最佳的解决方案。
## 数据集信息
该数据集包含匿名的信用卡交易,具有以下特征:
* 总记录数:284,807
* 总特征数:31
* 目标变量:`Class`
* 0 = 合法交易
* 1 = 欺诈交易
删除重复记录后:
* 剩余记录数:283,726
* 删除的重复记录数:1,081
类别分布:
* 合法交易:99.83%
* 欺诈交易:0.17%
该数据集高度不平衡,使得欺诈检测成为一个极具挑战性的机器学习问题。
## 数据集
本项目使用的数据集在 Kaggle 上公开可用。
**数据集链接:**
https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud
由于 GitHub 的文件大小限制,本仓库不包含该数据集。请在运行笔记本之前下载数据集,并将 `creditcard.csv` 文件放置在项目目录中。
### 数据集特征
* **Time** – 交易之间流逝的时间。
* **V1 – V28** – 经过 PCA 转换的匿名特征。
* **Amount** – 交易金额。
* **Class**
* 0 = 合法交易
* 1 = 欺诈交易
## 使用的技术
* Python
* Pandas
* NumPy
* Matplotlib
* Seaborn
* Scikit-Learn
* Jupyter Notebook
## 项目工作流
### 1. 数据清理
* 检查缺失值。
* 删除重复记录。
* 验证数据集的质量和一致性。
### 2. 探索性数据分析 (EDA)
* 分析类别分布。
* 可视化交易金额分布。
* 比较欺诈和非欺诈交易。
* 执行相关性分析。
### 3. 数据预处理
* 对 `Time` 和 `Amount` 特征进行标准化处理。
* 将数据集划分为训练集和测试集。
### 4. 模型构建
实现了以下机器学习模型:
#### Logistic Regression (逻辑回归)
用作欺诈检测的基线分类模型。
#### Random Forest Classifier (随机森林分类器)
采用集成学习方法,以提高预测性能和欺诈检测能力。
### 5. 模型评估
使用以下指标对模型进行评估:
* Accuracy (准确率)
* Precision (精确率)
* Recall (召回率)
* F1 Score (F1 分数)
* ROC-AUC Score (ROC-AUC 分数)
## 探索性数据分析
在 EDA 期间获得的关键见解:
* 数据集中未发现缺失值。
* 识别并删除了 1,081 条重复记录。
* 数据集高度不平衡,欺诈交易仅占所有交易的 0.17%。
* 交易金额呈现严重的右偏分布。
* 几个匿名特征与欺诈活动显示出强烈的相关性。
## 模型性能
### Logistic Regression (逻辑回归)
| 指标 | 分数 |
| --------- | ------ |
| Accuracy (准确率) | 99.91% |
| Precision (精确率) | 84.85% |
| Recall (召回率) | 58.95% |
| F1 Score (F1 分数) | 69.57% |
| ROC-AUC | 79.46% |
### Random Forest Classifier (随机森林分类器)
| 指标 | 分数 |
| --------- | ------ |
| Accuracy (准确率) | 99.95% |
| Precision (精确率) | 97.18% |
| Recall (召回率) | 72.63% |
| F1 Score (F1 分数) | 83.13% |
| ROC-AUC | 86.31% |
## 结果
Random Forest Classifier 在所有评估指标上的表现均优于 Logistic Regression。
### 关键发现
* 取得了出色的分类性能。
* 显著提高了欺诈检测的召回率。
* 减少了误报预测。
* 提供了最高的 F1 Score 和 ROC-AUC Score。
* 证明了其在高度不平衡数据集上的强大有效性。
## 特征重要性分析
使用 Random Forest 模型进行了特征重要性分析,以找出对欺诈检测贡献最大的影响因素。
通过特征重要性图表对主要特征进行了可视化,让我们得以洞察哪些交易特征对分类最有用。
## 结论
本项目成功开发了一个基于机器学习的欺诈检测系统,能够高准确度且可靠地识别欺诈性信用卡交易。
在评估的模型中,Random Forest 取得了最佳性能:
* Accuracy: 99.95%
* Precision: 97.18%
* Recall: 72.63%
* F1 Score: 83.13%
* ROC-AUC Score: 86.31%
结果证明了集成学习技术在欺诈检测中的有效性。由于数据集的高度不平衡性,相比于单看准确率,我们更加优先考虑 Precision、Recall、F1 Score 和 ROC-AUC 等评估指标。
## 未来改进
* 应用 SMOTE 进行类别平衡。
* 执行超参数调优。
* 尝试使用 XGBoost 和 LightGBM。
* 使用 Flask 或 FastAPI 部署模型。
* 构建实时的欺诈监控仪表板。
* 实现异常检测技术。
## 仓库结构
```
Fraud-Detection/
│
├── notebooks/
│ └── Fraud_Detection.ipynb
│
├── images/
│ ├── class_distribution.png
│ ├── confusion_matrix.png
│ └── feature_importance.png
│
├── README.md
├── requirements.txt
└── .gitignore
```
## 实习信息
组织:Oasis Infobyte
领域:数据分析
项目级别:二级
## 作者
**Kushagra Pandey**
计算机科学与工程 B.Tech
Jaypee Institute of Information Technology (JIIT), Noida
### 与我联系
* GitHub: https://github.com/Kushagra9027
* LinkedIn: 在此处添加您的 LinkedIn 个人资料链接
标签:Apex, NoSQL, Scikit-Learn, 代码示例, 数据分析, 机器学习, 欺诈检测, 逆向工具, 金融风控, 随机森林