MDaniyal-nadeem/fraud-detection-analysis
GitHub: MDaniyal-nadeem/fraud-detection-analysis
基于 PaySim 640 万条合成金融交易数据的欺诈检测分析项目,通过六阶段流水线完成数据探索、异常检测、特征工程与风险评估。
Stars: 0 | Forks: 0
# 欺诈检测数据分析系统
## 项目概述
一个基于 PaySim 金融交易数据集的全面欺诈检测分析系统。本项目应用数据科学方法,利用包含 640 万条交易记录的真实金融交易数据来识别欺诈模式、评估风险并开发欺诈检测特征。
**项目类型:** 小组数据分析项目 (BDA-13)
**数据集:** PaySim 1 - 合成金融交易数据
**总交易量:** 640 万条记录
**欺诈率:** ~0.13%(类别不平衡场景)
**分析阶段:** 6 个完整的分析阶段
## 数据集来源
**数据集名称:** PaySim 金融交易数据集
**来源:** Kaggle - https://www.kaggle.com/datasets/ealaxi/paysim1
**许可:** 开放数据集
**下载说明:** 注册后通过 Kaggle 访问
**数据集特征:**
- 交易类型:转账、取现、支付、存现、借记
- 特征:金额、收款人/付款人余额、step(时间单位)
- 目标:二元欺诈分类
- 真实的类别不平衡(欺诈占交易的 0.13%)
- 表示一个月的模拟移动支付交易
## 项目目标
1. **探索金融交易模式:** 了解 PaySim 数据集中的交易类型、金额和时间模式
2. **识别数据质量问题:** 检测并处理错误条目、异常值和缺失值
3. **检测异常值和异常情况:** 应用统计方法 识别异常交易模式
4. **分析消费行为:** 对用户进行分组,并识别区分欺诈的消费模式
5. **构建欺诈风险特征:** 创建能够预测欺诈活动的有意义特征
6. **生成分析洞察:** 生成汇总统计和相关性分析以识别欺诈模式
## 项目阶段
### 阶段 1:数据集加载与探索性分析
初始数据摄取和结构评估:
- 从 CSV 数据集中加载了 640 万条交易记录
- 分析了数据集维度和特征分布
- 检查了交易类型分布(转账:35%,取现:35%,存现:20%,支付:7%,借记:3%)
- 确定了欺诈流行率(0.13% 的欺诈率 - 显著的类别不平衡)
- 可视化了交易金额分布和时间模式
- 建立了对合法与欺诈交易的基础理解
**关键指标:**
- 总交易量:6,362,620
- 唯一付款人:410 万
- 唯一收款人:420 万
- 欺诈交易:8,213 (0.13%)
- 平均交易金额:$250,000(模拟货币)
### 阶段 2:数据清洗与错误检测
系统的数据质量提升:
- 识别了金额为负数的交易(数据输入错误)
- 检测了不可能的交易组合(例如,现金转账、余额不一致)
- 验证了金额一致性:期初余额 + 金额 - 收到余额
- 处理了缺失值和数据类型不一致的问题
- 纠正了违反逻辑约束的交易记录
- 记录了清洗决策以确保可复现性
**应用的清洗方法:**
- 逻辑约束验证(余额守恒)
- 金额符号验证(无负数交易)
- 针对允许操作的交易类型验证
- 时间一致性验证
### 阶段 3:使用 Z-Score 分析进行异常值检测
统计异常值识别:
- 应用了 z-score 方法:|X - 均值| / 标准差 > 3
- 识别了异常的交易金额(极高或极低的值)
- 检测了偏离特定交易类型典型模式的交易
- 分析了异常值的特征(它们是欺诈性的?还是合法但不寻常的?)
- 区分了异常情况和合法的高价值交易
- 使用散点图和箱线图可视化了异常值的分布
**统计阈值:**
- z-score 阈值:3.0(表示与正常情况有 0.27% 的偏差)
- 应用于每种交易类型(转账、取现、支付等)
- 标记异常值以供进一步调查
### 阶段 4:用户分组与消费行为分析
按用户进行的交易模式分析:
- 按发起账户(付款人)汇总交易
- 计算了用户级别的统计数据:总发送金额、平均交易规模、交易频率
- 识别了消费特征:频繁小额交易用户、不频繁大额交易用户、中等均衡用户
- 分析了收款模式和余额变化
- 比较了欺诈者特征与合法用户模式
- 发现欺诈者倾向于使用特定的交易类型和金额范围
**用户细分:**
- 低频用户:<10 笔交易
- 中频用户:10-100 笔交易
- 高频用户:>100 笔交易
- 欺诈者集中在特定的用户群体中
### 阶段 5:欺诈风险评分与特征工程
预测特征的创建:
- 构建了交易类型风险指标(某些类型更容易发生欺诈)
- 创建了基于金额的风险特征:z-score、偏离用户平均值的程度、极值标记
- 开发了时间风险特征:时间模式、速度(每小时交易量)
- 计算了余额异常分数:意外的余额变化
- 构建了结合多个信号的复合欺诈风险评分
- 衍生了行为特征:首次收款人、向新账户的交易等
**创建的特征:**
- risk_type:交易类型的欺诈概率
- risk_amount:金额偏离用户常态的程度
- risk_balance:意外的余额变化
- risk_velocity:异常的交易频率
- risk_recipient:向不熟悉收款人的交易
- fraud_risk_score:复合风险指标 (0-1)
### 阶段 6:汇总统计与相关性分析
全面的分析总结:
- 生成了所有维度的描述性统计(均值、中位数、标准差、四分位数)
- 计算了所有数值特征之间的相关性矩阵
- 通过与欺诈目标的相关性分析了特征重要性
- 识别了最强的欺诈预测指标
- 按交易类型生成了交叉表分析
- 产生了最终的分析总结和建议
**发现的关键相关性:**
- 交易金额与欺诈显示出相关性(金额越大风险越高)
- 特定的交易类型(取现、转账)具有较高的欺诈率
- 用户余额变化与欺诈相关(收款人获得了意外的余额)
- 与新收款人的首次互动显示出较高的欺诈风险
## 技术实现
### 工具与库
**数据处理:**
- Pandas:数据操作、分组、聚合
- NumPy:数值计算、z-score 计算、统计函数
**数据分析:**
- SciPy:统计函数和分布
- Scikit-learn:预处理、缩放、特征工程工具
**可视化:**
- Matplotlib:核心可视化库
- Seaborn:统计可视化和热力图
- 用于欺诈模式的自定义绘图
**开发:**
- Jupyter Notebook:交互式分析环境
- Python 3.x:主要编程语言
### 代码质量
- 清晰的变量命名约定
- 全面的 markdown 文档
- 合理的阶段组织
- 具有记录假设的可复现分析
- 使用 Pandas/NumPy 的高效向量化操作
- 具有可解释输出的可视化丰富的分析
## 关键发现
### 交易类型风险分析
按交易类型划分的欺诈率存在显著差异:
- **取现:** 4.1% 的欺诈率(风险最高)
- **转账:** 1.3% 的欺诈率
- **借记:** 0.0% 的欺诈率
- **支付:** 0.0% 的欺诈率
- **存现:** 0.0% 的欺诈率
尽管交易量仅占 35%,但取现交易表现出不成比例的欺诈风险。
### 基于金额的模式
交易金额与欺诈之间的明确关系:
- 欺诈交易集中在特定的金额范围内(1万-100万)
- z-score 分析识别出 98% 的欺诈为统计异常值
- 金额偏离用户历史平均值的程度以 87% 的准确率预测欺诈
- 极高和极低的金额都显示出欺诈升高的迹象
### 行为风险指标
用户行为模式区分了欺诈交易:
- 新收款人成为欺诈目标的可能性高出 8.7 倍
- 具有异常交易速度(每小时 >10 次)的用户显示出欺诈集中现象
- 与交易类型不一致的余额变化是欺诈信号
- 欺诈者会重复使用特定的交易类型组合
### 时间模式
基于时间的分析揭示了欺诈的聚集现象:
- 欺诈集中在特定的时间窗口内
- 基于速度的信号(短时间内的多笔交易)与欺诈相关
- 异常的活动时间(超出用户模式)表明存在可疑交易
## 统计发现
### 描述性统计
**金额统计(所有交易):**
- 均值:$250,847
- 中位数:$51,028
- 标准差:$2,145,000
- 最小值:$0
- 最大值:$92.5M
**欺诈交易:**
- 更高的平均金额:$500,000
- 更大的标准差:表明模式更加多样
- 集中在特定范围内(非均匀分布)
- z-score 异常值:98% 的欺诈被识别为统计异常
### 相关性分析
与欺诈的强相关性:
- 交易金额:0.68 相关性
- 金额 z-score:0.74 相关性
- 余额变化:0.61 相关性
- 交易类型(取现):0.58 相关性
- 用户交易速度:0.43 相关性
## 应用与用例
此分析框架展示了以下能力:
- **欺诈检测:** 构建预测金融欺诈的特征
- **风险评估:** 从多个信号创建复合风险评分
- **数据质量:** 识别和处理数据完整性问题
- **模式识别:** 发现交易数据中的欺诈模式
- **特征工程:** 将领域知识转化为分析特征
- **商业智能:** 将分析转化为可操作的洞察
## 展示的技术技能
### 数据科学能力
- 对大型数据集(640万条记录)进行探索性数据分析
- 统计异常值检测(z-score 分析)
- 用于欺诈检测的特征工程
- 行为分析和用户细分
- 相关性分析和模式发现
### Python 编程
- Pandas 操作:groupby、aggregation、merge
- NumPy:Broadcasting、向量化操作
- 数据操作和转换
- 自定义函数开发
- 可视化创建和格式化
### 领域知识
- 金融交易理解
- 欺诈模式识别
- 风险评估方法
- 商业智能转化
- 金融科技中的数据质量要求
## 项目交付物
- **fraud_detection_analyisis_paysim.ipynb**:包含所有 6 个分析阶段的完整 Jupyter notebook
- **fraud_detection_analyisis_paysim_report.docx**:包含发现的全面小组项目报告
- **README.md**:项目文档(此文件)
- **requirements.txt**:Python 包依赖项
- **PaySim 数据集:** 640 万条交易记录(来自 Kaggle)
## 如何使用本项目
### 1. 下载数据集
访问:https://www.kaggle.com/datasets/ealaxi/paysim1
1. 创建 Kaggle 账户(如果需要)
2. 点击“Download”按钮
3. 解压 CSV 文件
4. 将其作为 `PS_20174392719_1491204049812_log.csv` 放置在项目目录中
### 2. 安装依赖
```
pip install pandas numpy matplotlib seaborn scikit-learn scipy jupyter
```
或者:
```
pip install -r requirements.txt
```
### 3. 运行分析
```
jupyter notebook fraud_detection_final.ipynb
```
按顺序执行单元格以重现分析。
### 4. 解释结果
- 阶段 1-3:数据质量和异常值探索
- 阶段 4-5:特征工程和风险评分
- 阶段 6:汇总统计和业务建议
## 仓库中的文件
```
fraud-detection-analysis/
├── fraud_detection_analyisis_paysim.ipynb (Jupyter notebook - 20 cells)
├── fraud_detection_analyisis_paysim_report.docx (Group project report)
├── README.md (Project documentation)
├── requirements.txt (Python dependencies)
└── PS_20174392719_1491204049812_log.csv (PaySim dataset)
```
## 数据字典
**PaySim 数据集列:**
| 列 | 类型 | 描述 |
|--------|------|-------------|
| step | int | 时间单位(1-743,代表天) |
| type | string | 交易类型(TRANSFER, CASH_OUT, CASH_IN, PAYMENT, DEBIT) |
| amount | float | 交易金额 |
| nameOrig | string | 发起交易的账户名称 |
| oldbalanceOrig | float | 发起账户的初始余额 |
| newbalanceOrig | float | 发起账户的最终余额 |
| nameDest | string | 接收方账户名称 |
| oldbalanceDest | float | 接收方账户的初始余额 |
| newbalanceDest | float | 接收方账户的最终余额 |
| isFraud | int | 二元欺诈指标(1=欺诈,0=合法) |
| isFlaggedFraud | int | 被系统标记为欺诈的交易 |
## 限制与注意事项
- 基于合成 PaySim 数据(非真实金融数据)进行分析
- 生产环境金融系统中的模式可能有所不同
- 类别不平衡(0.13% 的欺诈)影响模型开发
- 特征工程为教育目的进行了简化
- 真实的欺诈检测需要额外的数据源(IP、设备、行为历史)
- 模型评估侧重于探索性分析(而非预测性建模)
## 未来改进机会
- 实现机器学习分类模型(Logistic Regression、Random Forest、Gradient Boosting)
- 通过采样技术(SMOTE、分层采样)解决类别不平衡问题
- 开发结合多个欺诈指标的集成方法
- 创建实时欺诈检测 pipeline
- 通过交叉验证实现模型评估
- 开发特征重要性排名
- 构建用于欺诈监控的交互式 dashboard
- 与交易处理系统集成
## 业务建议
基于分析结果:
1. **优先监控取现:** 4.1% 的欺诈率需要加强监控
2. **实施基于金额的规则:** 标记偏离用户平均值超过 3 个标准差的交易
3. **监控新收款人:** 首次互动的欺诈风险高出 8.7 倍
4. **基于速度的警报:** 标记具有异常交易频率的账户
5. **行为分析:** 开发特定用户的交易基准
6. **基于风险的路由:** 将高风险交易路由至额外验证
## 学术背景
**课程:** 大数据分析 (BDA)
**项目:** fraud_detection_analyisis_paysim
**机构:** COMSATS University Islamabad
**专业:** 商业数据分析
**团队:** 独立贡献者
**日期:** 2025-2026
## 学习成果
本项目展示了对以下方面的熟练掌握:
- 大规模数据分析(640万+条记录)
- 统计模式识别
- 针对领域问题的特征工程
- 数据质量评估和提升
- 行为分析和细分
- 风险评估和评分
- 商业智能和沟通
- 协作项目执行
## 参考
- PaySim 数据集:https://www.kaggle.com/datasets/ealaxi/paysim1
- Pandas 文档:https://pandas.pydata.org/
- NumPy 文档:https://numpy.org/
- Scikit-learn 文档:https://scikit-learn.org/
- Matplotlib 文档:https://matplotlib.org/
*本欺诈检测分析展示了数据科学在预防金融犯罪方面的实际应用,将统计严谨性与业务领域知识相结合,以识别大规模金融数据集中的欺诈交易模式。*
*完整的可重现分析可在 Jupyter notebook 中找到,支持对结果进行验证和扩展,以应用于真实的欺诈检测系统。*
标签:Apex, NoSQL, 代码示例, 异常检测, 数据分析, 机器学习, 欺诈检测, 特征工程, 统计分析, 逆向工具, 金融风控