rickytheanalyst/credit-card-fraud-detection
GitHub: rickytheanalyst/credit-card-fraud-detection
基于 SQL Server 构建的信用卡欺诈分析项目,通过数据验证、统计分析和规则评分实现端到端的可疑交易检测与评估。
Stars: 0 | Forks: 0
# 💳 使用 SQL 进行信用卡欺诈检测
## 📌 项目概述
信用卡欺诈每年给金融机构造成数十亿美元的损失。在应用 Machine Learning 模型之前,分析师通常会使用 SQL 来探索数据、识别可疑模式,并构建基于规则的欺诈检测系统。
在本项目中,我在 Kaggle 的信用卡欺诈检测数据集上,使用 SQL Server 进行了端到端的探索性数据分析和欺诈模式检测。
## 🎯 目标
- 执行数据验证和清理
- 分析欺诈与正常交易
- 探索交易金额和时间模式
- 使用统计技术检测异常
- 构建基于规则的欺诈检测逻辑
- 衡量欺诈率并评估欺诈检测规则
## 🛠️ 工具与技术
- SQL Server
- SQL Server Management Studio (SSMS)
- T-SQL
- Window Functions
- Common Table Expressions (CTEs)
## 📂 数据集
本项目使用由 Machine Learning Group (ULB) 提供并在 Kaggle 上公开的 **Credit Card Fraud Detection** 数据集。
- **数据集:** Credit Card Fraud Detection
- **来源:** Kaggle
- **链接:** https://www.kaggle.com/datasets/mlg-ulb/creditcardfraud
### 数据集摘要
- **总交易数:** 284,807
- **欺诈交易数:** 492
- **正常交易数:** 284,315
- **特征:** 31
- **目标变量:** `Class`
- `0` → 正常交易
- `1` → 欺诈交易
数据集包含:
- Time
- V1 – V28(PCA 转换特征)
- Amount
- Class
- 0 = 正常
- 1 = 欺诈
# 📊 项目工作流
### 1️⃣ 数据验证
- 验证了行数
- 检查了数据类型
- 识别了 NULL 值
- 检测了重复记录
- 在分析前验证了数据质量
### 2️⃣ 探索性数据分析 (EDA)
执行了以下分析:
- 总交易量
- 欺诈与正常交易对比
- 欺诈率
- 交易金额统计
- 平均值与中位数对比
- 每小时交易分布
- 交易金额分布
- 异常值检测
### 3️⃣ 欺诈分析
分析了:
- 欺诈百分比
- 按金额范围划分的欺诈
- 按一天中小时划分的欺诈
- 交易金额中位数
- 基于 Z-score 的异常检测
- 大额交易分析
### 4️⃣ 基于规则的欺诈检测
使用以下规则构建了欺诈检测:
- 交易金额 > $200
- 交易时间在 12 AM – 5 AM 之间
衡量了:
- 标记的交易
- 欺诈交易
- 细分欺诈率
- 全局欺诈率
比较了该规则在整个数据集上的有效性。
## 🚀 展示的高级 SQL 概念
### Window Functions
- ROW_NUMBER()
- COUNT() OVER()
- 使用 PARTITION BY 进行分区
- 对组内交易进行排名
### Common Table Expressions (CTEs)
- 单阶段 CTEs
- 多阶段 CTE pipelines
- 模块化查询设计
- 分层分析工作流
### 高级聚合
- 条件聚合
- GROUP BY
- HAVING
- 嵌套聚合
### 统计分析
- 平均值
- 中位数(手动实现)
- 标准差
- Z-Score 计算
- 特征分布分析
### 条件逻辑
- CASE WHEN
- 多级风险评分
- 基于规则的欺诈分类
### 时间序列分析
- 提取小时
- 交易速度检测
- 滚动时间窗口分析
- 时间桶分析
### Self Joins
- 交易速度检测
- 600 秒滑动窗口分析
### 特征工程
- 欺诈风险评分(0–100)
- 基于时间的特征
- 金额分桶
- PCA 特征分析(V1–V28)
### 欺诈检测技术
- 基于规则的欺诈检测
- 多信号风险评分
- 欺诈标记 Pipeline
- 欺诈捕获分析
### 模型评估指标(SQL 实现)
- 混淆矩阵
- True Positives (TP)
- False Positives (FP)
- True Negatives (TN)
- False Negatives (FN)
- Precision
- Recall
- F1 Score
- Accuracy
### SQL 技术
- CASE WHEN
- COALESCE()
- NULLIF()
- CAST()
- ROUND()
- UNION ALL
- LEFT JOIN
- Self JOIN
- ORDER BY
- 聚合函数
### 商业分析
- 探索性数据分析 (EDA)
- 数据验证
- 重复检测
- 欺诈模式发现
- 业务规则评估
- 风险分析
# 📈 关键业务洞察
- 欺诈交易仅占数据集的 **0.17%**,表明存在严重的类别不平衡。
- 欺诈交易的平均金额高于正常交易。
- 交易金额中位数分析显示,典型的欺诈交易金额其实很小,而少数大额欺诈交易拉高了平均值。
- 午夜期间发生的高金额交易显示出明显更高的欺诈概率。
- 与全局基准相比,基于规则的欺诈检测提高了欺诈检测率。
# 📚 展示的 SQL 概念
- 数据清理
- 探索性数据分析
- 欺诈分析
- 统计分析
- 条件聚合
- Window Functions
- CTEs
- 面向业务的 SQL 报告
# 📷 分析示例
本项目包含的示例:
- 欺诈率计算
- 每小时欺诈分析
- 交易金额分布
- 中位数与平均值对比
- 基于 Z-score 的异常值检测
- 基于规则的欺诈标记
# 🚀 学习成果
通过本项目我学到了:
- SQL 如何应用于欺诈分析
- 如何清理和验证金融数据集
- 如何构建面向业务的 SQL 查询
- 如何检测可疑的交易模式
- 如何在实际场景中使用 Window Functions
- 如何将业务需求转化为 SQL 解决方案
## ⭐ 未来改进
- 构建 Machine Learning 欺诈预测模型
- 创建交互式 Power BI 仪表板
- 部署欺诈检测 pipeline
- 将基于规则的检测与 ML 模型进行比较
## 👨💻 作者
**BETHI RICKY**
有志成为 Data Analyst | Data Scientist
标签:SQL Server, 代码示例, 反欺诈, 数据分析, 欺诈检测, 金融风控