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, 代码示例, 异常检测, 数据分析, 机器学习, 欺诈检测, 特征工程, 统计分析, 逆向工具, 金融风控