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, 代码示例, 反欺诈, 数据分析, 欺诈检测, 金融风控