isamaliya16/credit-fraud-detection-supervised-learning

GitHub: isamaliya16/credit-fraud-detection-supervised-learning

基于监督学习算法构建的信用卡欺诈检测系统,针对极端类别不平衡数据集提供完整的模型训练、阈值优化与业务成本效益分析流水线。

Stars: 0 | Forks: 0


![Banner](https://capsule-render.vercel.app/api?type=waving&color=0:1a1a2e,50:c0392b,100:e74c3c&height=220§ion=header&text=Credit%20Card%20Fraud%20Detection&fontSize=38&fontColor=ffffff&animation=fadeIn&fontAlignY=36&desc=Imbalanced%20Classification%20with%20Threshold%20Optimisation%20%7C%20Practical%20Exam%20Set%20C&descAlignY=58&descAlign=50&descSize=14)
[![状态](https://img.shields.io/badge/Status-Completed-brightgreen?style=for-the-badge&logo=checkmarx&logoColor=white)](#) [![考试](https://img.shields.io/badge/Exam-Practical%20Set%20C-c0392b?style=for-the-badge&logo=academia&logoColor=white)](#) [![最佳模型](https://img.shields.io/badge/Best%20Model-XGBoost%20Tuned-FF6B35?style=for-the-badge&logo=scikitlearn&logoColor=white)](#) [![阈值](https://img.shields.io/badge/Optimal%20Threshold-0.644-gold?style=for-the-badge)](#)
![Python](https://img.shields.io/badge/Python-3776AB?style=flat-square&logo=python&logoColor=white) ![XGBoost](https://img.shields.io/badge/XGBoost-EC1C24?style=flat-square) ![Scikit-Learn](https://img.shields.io/badge/Scikit--Learn-F7931E?style=flat-square&logo=scikitlearn&logoColor=white) ![Pandas](https://img.shields.io/badge/Pandas-150458?style=flat-square&logo=pandas&logoColor=white) ![Seaborn](https://img.shields.io/badge/Seaborn-4C72B0?style=flat-square) ![Jupyter](https://img.shields.io/badge/Jupyter-F37626?style=flat-square&logo=jupyter&logoColor=white) ![imbalanced-learn](https://img.shields.io/badge/imbalanced--learn-EE4C2C?style=flat-square)

## 🎬 视频演示
[![观看项目演示](https://img.shields.io/badge/▶%20Watch%20Full%20Walkthrough-Google%20Drive-4285F4?style=for-the-badge&logo=google-drive&logoColor=white)](https://drive.google.com/file/d/150itvJmGsxarcgh0zWCcIcss0Uf7hHXQ/view?usp=sharing) 🎥 项目的完整端到端视频讲解 —— 涵盖探索性数据分析 (EDA)、特征工程、类别不平衡处理(SMOTE、欠采样和类别权重)、Logistic Regression、Random Forest 和 XGBoost 模型构建、超参数调优、PR-AUC 评估、阈值优化、商业成本效益分析,以及信用卡欺诈检测系统的最终部署建议。
## 🧠 这是什么项目? 本项目在真实的 Kaggle 信用卡欺诈数据集上构建了一个完整的、生产级的**欺诈检测 pipeline** —— 这是工业界 ML 中最极端的类别不平衡基准测试之一。重点不仅限于构建模型:它还展示了**阈值优化**、**成本效益分析**以及对结果的清晰业务沟通。
``` ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 284,807 Total Transactions ───────────────────────────────────────────────── 99.83% Legitimate ███████████████████████████░ 0.17% Fraud ░░░░░░░░░░░░░░░░░░░░░░░░░░░ ───────────────────────────────────────────────── Most extreme imbalance benchmark in industry ML ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ```

## 🎯 学习目标
### 📐 核心 ML 概念 - 为什么在欺诈检测中**准确率是一个具有误导性的指标** - **Precision-Recall 权衡**和混淆矩阵分析 - **PR-AUC vs ROC-AUC** —— 哪一个更适合极端不平衡情况 - 超越默认 0.5 截断点的**阈值调优** ### 🏢 业务技能 - 为模型错误分配**真实货币价值** - 使用混淆矩阵输出进行**成本效益分析** - 向**非技术背景的风险经理**传达结果 - 理解什么时候**业务最优 ≠ F1最优**

## 🗺️ 完整项目 Pipeline
| 步骤 | 重点 | 关键交付物 | |:---:|:---|:---| | 🧩 **第 1 步** | 理论与问题定义 | 5 个 Markdown 单元格,解释准确率失效、PR 权衡、不平衡处理策略、PR-AUC 以及 FP 和 FN 的业务影响 | | 📊 **第 2 步** | 数据集加载与 EDA | 4 个图表:类别分布、Amount 分布、Time/Hour 分析、V1–V10 相关性热力图 | | 🔧 **第 3 步** | 预处理与特征工程 | Amount_log、Hour 提取、StandardScaler、训练集与测试集划分、3 种不平衡处理策略 | | 🤖 **第 4 步** | Logistic Regression 与 Random Forest | LR × 3 种变体比较、带有 PR 曲线和特征重要性的 RF | | ⚡ **第 5 步** | XGBoost —— 完整调优 | 基础模型 → RandomizedSearchCV → 阈值优化(F1最优 + Recall≥0.90) | | 📈 **第 6 步** | 最终模型比较 | 6 行对比表、所有 PR 曲线汇总至一张图、部署建议 | | 💰 **第 7 步** | 业务成本效益 | 带有 INR 价值的阈值敏感性表、净收益分析 | | 🚀 **第 8 步** | Pipeline 与部署 | sklearn Pipeline → joblib 保存 → 加载并对 10 笔交易进行测试 |

## 📊 核心结果一览
### 🏆 最佳模型 **XGBoost (调优后)**
RandomizedSearchCV 优化
### 🎯 F1-Score **0.9375**
在最优阈值 0.644 下
### 📐 PR-AUC **0.9297**
对比 LR 基线 0.813
### ✅ Precision **1.0000**
零误报标记

## 📈 模型对比表
| 模型 | 阈值 | Precision | Recall | F1-Score | PR-AUC | |:---|:---:|:---:|:---:|:---:|:---:| | Logistic Regression (SMOTE) | 0.50 | 0.309 | 1.000 | 0.472 | 0.813 | | Random Forest (SMOTE) | 0.50 | 0.933 | 0.824 | 0.875 | 0.875 | | XGBoost 基础模型 | 0.50 | 1.000 | 0.824 | 0.903 | 0.897 | | XGBoost 调优后 | 0.50 | 1.000 | 0.882 | 0.938 | 0.930 | | **XGBoost 调优后 (F1最优)** | **0.644** | **1.000** | **0.882** | **0.938** | **0.930** | | XGBoost 调优后 (Recall≥0.90) | 0.007 | 0.457 | 0.941 | 0.615 | 0.930 |

## 💰 成本效益分析
### 💚 挽回金额 **₹67,500**
15 起欺诈案件 × ₹4,500
### 🔵 调查成本 **₹2,250**
15 笔标记交易 × ₹150
### 💛 净收益 **₹65,250**
每 10,000 笔交易
| 阈值 | TP | FP | FN | 挽回金额 | 调查成本 | 损失金额 | 净收益 | |:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | 0.10 | 15 | 3 | 2 | ₹67,500 | ₹2,700 | ₹9,000 | ₹64,800 | | 0.20 | 15 | 2 | 2 | ₹67,500 | ₹2,550 | ₹9,000 | ₹64,950 | | 0.30 | 15 | 1 | 2 | ₹67,500 | ₹2,400 | ₹9,000 | ₹65,100 | | 0.50 | 15 | 0 | 2 | ₹67,500 | ₹2,250 | ₹9,000 | ₹65,250 | | **0.644 (F1最优)** | **15** | **0** | **2** | **₹67,500** | **₹2,250** | **₹9,000** | **₹65,250** |

## 🧪 涵盖的理论
📖 点击展开 —— 第 1 步的的理论笔记
**为什么准确率在欺诈检测中会失效** - 一个将所有交易预测为合法的模型可以获得 99.83% 的准确率 —— 但它抓不到任何欺诈 - 欺诈类别的 Precision 和 Recall 均为 0 —— 尽管准确率很高,但该模型完全无用 - PR-AUC 和 F1-Score 必须取代准确率作为主要评估指标 **Precision-Recall 权衡** - 降低阈值(0.5 → 0.2)会将更多交易标记为欺诈 —— Recall 上升,Precision 下降 - 提高阈值会减少标记数量 —— Precision 改善,但会漏掉更多真实的欺诈 - 最优阈值取决于每种错误类型的业务成本 **三种不平衡处理策略** - **Class Weights(类别权重):** 简单,不修改数据 —— 但模型看到的欺诈样本仍然很少 - **SMOTE:** 生成合成欺诈样本 —— 为模型提供更多样化的欺诈模式进行学习 - **Undersampling(欠采样):** 移除多数类行 —— 速度快,但会丢失信息 **PR-AUC vs ROC-AUC** - 在极端不平衡的情况下,ROC-AUC 会被大量的 True Negatives 抬高 - PR-AUC 完全关注少数类 —— 无法通过将所有样本预测为合法来作弊 **False Positive vs False Negative 的业务影响** - FP = 合法客户被拦截 → ₹150 调查成本 + 客户不满 - FN = 漏掉欺诈 → 损失全部交易金额(平均 ₹4,500)+ 拒付(chargeback)+ 监管风险 - **False Negatives 的代价要高昂得多** → Recall 是优先考虑的指标

## ⚖️ 不平衡处理策略详解
### 🏋️ Class Weights 告诉模型欺诈 = 重要 580 倍

✅ 不修改数据
❌ 模型看到的欺诈样本仍然很少
### 🧬 SMOTE 生成合成欺诈样本

✅ 模型能学习更多欺诈模式
❌ 合成数据 ≠ 真实欺诈
### ✂️ Undersampling 移除多数类行

✅ 快速且简单
❌ 丢弃了真实信息
**针对此数据集的赢家:SMOTE** 在 Logistic Regression 中提供了最佳的 F1-Score 和 PR-AUC。

## 🔍 EDA 关键发现
分析内容发现
📊 类别分布99.83% 为合法 vs 0.17% 为欺诈 —— 必须使用对数刻度进行可视化
💵 交易金额欺诈分布范围很广 —— 并非都是小额交易;需要进行对数转换
🕒 一天中的时间段欺诈集中在深夜 / 凌晨时段(0–4 AM)
🔗 V 特征相关性V10、V7、V3 与欺诈的相关性最高;V8 和 V6 几乎不相关
🌳 特征重要性 (RF)V14 最重要 (20%),其次是 V10、V17、V12V11

## 🚀 部署细节
组件详情
📦 Pipeline封装了 StandardScaler + XGBoost 调优模型的 sklearn Pipeline
💾 保存的模型fraud_detection_model.pkl —— 通过 joblib 序列化
🎯 最优阈值0.644 (F1最优) —— 与 pipeline 存储在一起
🧪 测试对象从 pickle 加载的 10 笔样本交易 —— 已验证预测结果
📋 输入特征V1–V28 (PCA), Amount_log (对数转换), Hour (从 Time 提取)

## 📁 仓库结构 ``` credit-fraud-detection-supervised-learning/ │ ├── 📓 FraudDetection_SupervisedLearning.ipynb ← Fully executed notebook (91 cells) ├── 🤖 fraud_detection_model.pkl ← Saved sklearn Pipeline ├── 📄 summary_report.md ← Business summary (~400 words) ├── 📋 requirements.txt ← All dependencies └── 📖 README.md ← This file ```
## 📦 环境依赖 ``` pandas numpy matplotlib seaborn scikit-learn imbalanced-learn xgboost joblib jupyter ```
## 👨‍💻 作者
Author ### **Ayush Isamaliya** *Data Science 与有抱负的 ML 工程师*
### 🌐 与我联系
[![GitHub](https://img.shields.io/badge/GitHub-isamaliya16-181717?style=for-the-badge&logo=github&logoColor=white)](https://github.com/isamaliya16) [![LinkedIn](https://img.shields.io/badge/LinkedIn-Ayush_Isamaliya-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/ayush-isamaliya-686533312/)

![Footer](https://capsule-render.vercel.app/api?type=waving&color=0:e74c3c,100:1a1a2e&height=130§ion=footer) **作为 Red & White Skill Education 的 Python Data Science 学习路线的一部分而构建** Footer Typing *用 ❤️ 制作 | 欺诈检测 —— 实操考试 C 卷 | 不平衡分类 | FinTech 分析*
标签:Apex, Scikit-Learn, XGBoost, 不平衡分类, 信用卡欺诈检测, 数据科学, 机器学习, 资源验证, 逆向工具