xvyasser/E-Wallet-Fraud-Detection-End-to-End-Data-Analytics-Project

GitHub: xvyasser/E-Wallet-Fraud-Detection-End-to-End-Data-Analytics-Project

端到端电子钱包欺诈检测分析项目,通过PostgreSQL数据仓库、SQL特征工程、欺诈评分引擎和Power BI仪表板,帮助风控团队监控、评分和调查可疑交易。

Stars: 0 | Forks: 0

# 💳 电子钱包欺诈检测仪表板
## 🚨 端到端欺诈分析项目 ### PostgreSQL • SQL 特征工程 • 欺诈评分 • Power BI **一个全栈分析项目,模拟金融科技欺诈团队如何监控、评分和调查可疑的电子钱包交易。**
![Power BI](https://img.shields.io/badge/Power%20BI-Dashboard-F2C811?style=for-the-badge&logo=powerbi&logoColor=black) ![PostgreSQL](https://img.shields.io/badge/PostgreSQL-Data%20Warehouse-4169E1?style=for-the-badge&logo=postgresql&logoColor=white) ![SQL](https://img.shields.io/badge/SQL-Fraud%20Scoring-025E8C?style=for-the-badge) ![Python](https://img.shields.io/badge/Python-Data%20Generation-3776AB?style=for-the-badge&logo=python&logoColor=white) ![FinTech](https://img.shields.io/badge/FinTech-Fraud%20Analytics-22C55E?style=for-the-badge)
## 📌 项目摘要 **电子钱包欺诈检测仪表板**是一个端到端的欺诈分析项目,旨在检测、评分和调查可疑的数字钱包交易。 该项目模拟了真实的金融科技欺诈情报工作流程: ``` Raw E-Wallet Transactions ↓ Cleaning & Validation ↓ PostgreSQL Data Warehouse ↓ Fraud Feature Engineering ↓ Fraud Scoring Engine ↓ Fraud Alerts ↓ Power BI Dashboard ``` 最终输出是一个 **6 页的 Power BI 仪表板**,可帮助高管、欺诈分析师、风险团队和运营团队监控欺诈风险敞口并调查高风险行为。 ## 🎯 业务问题 电子钱包平台每天处理海量的交易。欺诈可能以多种形式出现: - ⚡ 高交易频率 - 🌍 不可能的旅行或可疑的位置移动 - 📱 多个钱包共用同一设备 - 🏪 商户滥用或可疑的商户行为 - 💸 异常巨大的交易金额 - 🕸️ 短时间内有大量收款人,暗示有洗钱或骡子账户活动 如果没有集中的欺诈仪表板,团队可能难以回答以下问题: - 哪些交易存在风险? - 应该优先审查哪些钱包? - 哪些商户比较可疑? - 欺诈热点集中在哪里? - 有多少警报处于打开、高风险或紧急状态? - 总体欺诈风险敞口是多少? 本项目通过创建从数据生成到 Power BI 报告的完整欺诈分析工作流程来解决这一问题。 ## ✅ 项目目标 - 🏗️ 为电子钱包交易构建结构化的 PostgreSQL 数据仓库。 - 🧹 清洗、验证和转换原始交易数据。 - 🧠 使用 SQL 构建欺诈检测特征。 - 🚦 创建可解释的、基于规则的欺诈评分引擎。 - 🚨 为高风险和紧急交易生成欺诈警报。 - ⚡ 构建优化的 BI 视图以提升 Power BI 性能。 - 📊 设计专业的 6 页 Power BI 仪表板。 - 🔍 根据 PostgreSQL 查询验证仪表板指标。 ## 🧰 工具与技术 | 领域 | 工具 | |---|---| | 🐍 数据生成 | Python, Faker | | 🗄️ 数据库 | PostgreSQL | | 🛠️ 数据库管理 | pgAdmin | | 🧱 数据建模 | 星型模式, 事实表与维度表 | | 🧠 欺诈逻辑 | SQL, PostgreSQL 存储过程, 窗口函数 | | ⚡ BI 层 | PostgreSQL 视图与物化视图 | | 📊 仪表板 | Power BI Desktop | | 📐 报告逻辑 | DAX 度量值, 切片器, KPI 卡片 | | 📝 文档 | GitHub README, PowerPoint 演示文稿 | ## 📦 数据集概述 本项目使用了一个模拟的大规模电子钱包数据集。 | 实体 | 预估数量 | |---|---:| | 👤 用户 | 500,000 | | 🏪 商户 | 15,000 | | 💳 交易 | 48.85M+ | | 📅 交易周期 | 2025 | | 🚦 风险等级 | 低, 中, 高, 紧急 | 该数据集包含钱包行为、商户活动、设备使用情况、时间戳、位置、交易金额以及与欺诈相关的模式。 ## 🏛️ 数据架构 PostgreSQL 数据库被组织成多个 schema,以保持项目的清晰度和可扩展性。 ``` staging → raw and cleaned imported data ref → reference and mapping tables dw → warehouse fact and dimension tables fraud → fraud features, scores, alerts, and risk logic bi → reporting-ready views for Power BI audit → validation and audit support ``` ### 🔁 端到端流水线 ``` Python Data Generator ↓ Raw CSV Files ↓ PostgreSQL Staging Tables ↓ Cleaning & Validation Layer ↓ Data Warehouse Layer ↓ Fraud Feature Engineering ↓ Fraud Scoring Engine ↓ Fraud Alert Generation ↓ BI Reporting Views ↓ Power BI Dashboard ``` ## 🧱 数据仓库设计 数据仓库遵循星型模式的设计风格。 ### 主要事实表 | 表名 | 描述 | |---|---| | `dw.fact_transaction` | 经过清洗和验证的交易级记录 | ### 维度表 | 表名 | 描述 | |---|---| | `dw.dim_user` | 用户和钱包信息 | | `dw.dim_merchant` | 商户画像和类别详情 | | `dw.dim_device` | 设备信息 | | `bi.dim_date` | 用于日期过滤的日历表 | | `bi.dim_risk_band` | 用于仪表板过滤的风险等级维度 | ## 🧠 欺诈特征工程 欺诈特征是使用 SQL 和 PostgreSQL 窗口函数创建的。 ### ⚡ 速度风险 检测短时间窗口内的异常活动。 示例: - 15 分钟内的交易次数 - 1 小时内的交易次数 - 1 小时内的发送金额 ### 🌍 地理风险 检测不可能或可疑的移动。 示例: - 与上一次交易的距离 - 距离上一次交易的分钟数 - 短时间内的长距离移动 ### 📱 设备风险 检测共享设备的行为。 示例: - 链接到同一设备的钱包数量 - 多个用户重复使用的设备 ### 🏪 商户风险 检测可疑的商户行为。 示例: - 商户交易失败率 - 商户被标记交易率 - 商户风险指数 ### 💸 金额风险 检测异常巨大的交易金额。 示例: - 单笔巨额交易金额 - 一小时内的高总金额 ### 🕸️ 收款人行为 检测类似拆分洗钱的模式。 示例: - 一小时内的大量唯一收款人 - 快速向多个收款人汇款的钱包 ## 🚦 欺诈评分逻辑 每笔交易都会根据可疑行为获得各项组成部分的分数。 | 组件 | 含义 | |---|---| | `velocity_score` | 短时间内的高交易量或金额 | | `geo_score` | 可疑的位置移动 | | `device_score` | 共享设备风险 | | `merchant_score` | 商户级别的风险指标 | | `amount_score` | 异常大额交易 | | `receiver_score` | 短时间内存在大量收款人 | 最终的欺诈得分是通过综合各组件的分数计算得出的。 ``` Final Fraud Score = Velocity Score + Geo Score + Device Score + Merchant Score + Amount Score + Receiver Score ``` ### 风险等级分类 | 风险等级 | 含义 | |---|---| | 🟢 低 | 正常或低风险行为 | | 🟡 中 | 可能需要监控的可疑行为 | | 🟠 高 | 需要审查的强烈欺诈信号 | | 🔴 紧急 | 需要立即关注的严重风险 | 高风险和紧急交易将被转化为欺诈警报。 ## 🚨 欺诈警报逻辑 欺诈警报是根据满足以下条件的交易生成的: ``` risk_band IN ('High', 'Critical') ``` 每个警报包含: - 交易 ID - 发送方钱包 ID - 商户 ID - 设备 ID - 欺诈得分 - 风险等级 - 警报原因 - 警报状态 - 交易日期 - 警报优先级排序 ### 警报原因 | 警报原因 | 含义 | |---|---| | 🌍 不可能的旅行 | 可疑的地理位置移动 | | 🕸️ 拆分洗钱行为 | 短时间内存在大量收款人 | | 📱 共享设备团伙 | 多个钱包关联到同一设备 | | 🏪 商户滥用 | 可疑的商户行为 | | ⚡ 高频行为 | 短时间内交易过于频繁 | | 💸 异常交易金额 | 巨大的交易金额 | ## ⚡ BI 报告层 Power BI 连接到经过精心处理的 BI 视图,而不是原始交易表。 | BI 视图 | 用途 | |---|---| | `bi.fact_daily_fraud_kpi` | 用于高管报告的每日欺诈 KPI | | `bi.alert_queue` | 警报级别的调查表 | | `bi.high_risk_transactions` | 高风险和紧急交易详情 | | `bi.merchant_risk_summary` | 商户级别的欺诈风险摘要 | | `bi.user_risk_summary` | 钱包和客户风险摘要 | | `bi.risk_band_distribution` | 整体风险等级分布 | | `bi.dim_date` | 日期过滤 | | `bi.dim_risk_band` | 风险等级过滤 | 这使得 Power BI 报告保持快速,并避免了扫描完整的原始交易数据集。 ## 📊 Power BI 仪表板页面 最终的仪表板包含六个页面。 ### 1️⃣ 高管欺诈概览 **目的:** 为领导层提供欺诈风险敞口的高层级视图。 **关键 KPI:** - 总交易量 - 总金额 - 被标记的交易 - 标记率 - 被标记金额 - 紧急风险交易 **主要视觉对象:** - KPI 卡片 - 欺诈趋势线 - 高风险与紧急风险图表 - 风险等级分布 ### 2️⃣ 欺诈运营中心 **目的:** 帮助欺诈分析师监控警报并确定调查优先级。 **关键 KPI:** - 总警报数 - 待处理警报 - 高风险警报 - 紧急警报 **主要视觉对象:** - 按原因分类的警报 - 警报详情表 - 风险等级切片器 - 主要原因切片器 ### 3️⃣ 商户风险分析 **目的:** 识别高风险商户和可疑的商户类别。 **关键指标:** - 交易计数 - 总金额 - 被标记交易计数 - 标记率 - 平均欺诈得分 - 商户风险指数 **主要视觉对象:** - 商户风险散点图 - 被标记次数最多的商户 - 高风险类别排行 - 商户详情表 ### 4️⃣ 用户与设备风险 **目的:** 识别高风险钱包、可疑客户和共享设备模式。 **关键指标:** - 钱包欺诈得分 - 交易计数 - 设备计数 - 收款人计数 - 标记率 - 总金额 **主要视觉对象:** - 高风险钱包排行 - 收款人与标记率散点图 - 钱包/设备详情表 - KYC 和账户状态切片器 ### 5️⃣ 地理空间欺诈分析 **目的:** 展示可疑活动的地理集中分布。 **关键指标:** - 按省份划分的交易 - 按省份划分的标记率 - 紧急案例 - 欺诈热点排名 **主要视觉对象:** - 地图视觉对象 - 省份风险排名 - 紧急案例集中度 - 热点表 ### 6️⃣ 警报调查 **目的:** 支持警报分类和调查工作流程。 **关键指标:** - 待处理警报 - 已关闭警报 - 总警报数 - 平均解决时间 - SLA 违规 **主要视觉对象:** - 警报队列 - 警报状态卡片 - 随时间变化的警报 - 积压摘要 ## 🧮 关键 DAX 度量值 ``` Total Transactions = SUM ( 'Daily Fraud KPI'[transaction_count] ) ``` ``` Flagged Transactions = SUM ( 'Daily Fraud KPI'[flagged_transaction_count] ) ``` ``` Flagged Rate = DIVIDE ( [Flagged Transactions], [Total Transactions] ) ``` ``` Total Alerts = COUNTROWS ( 'Alert Queue' ) ``` ``` Open Alerts = CALCULATE ( [Total Alerts], 'Alert Queue'[alert_status] = "Open" ) ``` ``` High Alerts = CALCULATE ( [Total Alerts], 'Alert Queue'[risk_band] = "High" ) ``` ``` Critical Alerts = CALCULATE ( [Total Alerts], 'Alert Queue'[risk_band] = "Critical" ) ``` ## 🔍 验证过程 仪表板结果已通过 PostgreSQL 查询进行了验证。 验证检查包括: - 总交易计数 - 月度交易分布 - 风险等级分布 - 警报计数 - 按原因分类的警报 - 商户级别指标 - 钱包级别指标 - 日期切片器行为 - 风险等级切片器行为 - 视觉对象交互测试 这确保了 Power BI 视觉对象与 PostgreSQL 报告层的数据保持一致。 ## 🎨 仪表板设计原则 该仪表板采用了深色的金融科技欺诈运营主题进行设计。 ### 颜色逻辑 | 风险级别 | 颜色 | |---|---| | 🟢 低 | 绿色 / 青色 | | 🟡 中 | 黄色 | | 🟠 高 | 橙色 | | 🔴 紧急 | 红色 | ### 设计选择 - 用于高管指标的 KPI 卡片 - 用于趋势的折线图 - 用于排名的条形图 - 用于风险定位的散点图 - 用于调查详情的表格 - 用于交互性的切片器 - 用于提升性能的专用 BI 视图 ## 💼 业务影响 ### 👔 管理者 使用高管概览页面来监控欺诈风险敞口、标记率、紧急交易量和平台级趋势。 ### 🕵️ 欺诈分析师 欺诈运营中心和警报调查页面来确定警报优先级,并调查高风险交易。 ### 🧠 风险团队 使用商户风险、用户与设备风险以及地理空间分析页面来识别可疑商户、高风险钱包和欺诈热点。 ### ⚙️ 运营团队 使用警报工作量和调查视图来监控待处理案件、积压情况和运营优先级。 ## 🏆 项目成就 该项目成功交付了: - ✅ 大规模模拟电子钱包交易数据集 - ✅ PostgreSQL 数据仓库 - ✅ 基于 SQL 的欺诈特征工程 - ✅ 可解释的欺诈评分引擎 - ✅ 欺诈警报生成逻辑 - ✅ 专用的 BI 报告视图 - ✅ 专业的 6 页 Power BI 仪表板 - ✅ 针对数据库查询的 KPI 验证 - ✅ 可作为作品集展示的欺诈分析案例研究 ## 🗂️ 仓库结构 ``` EWallet_Fraud_Detection_Project/ │ ├── README.md │ ├── data_generation/ │ └── data_generator.py │ ├── sql/ │ ├── 01_create_schemas.sql │ ├── 02_staging_tables.sql │ ├── 03_reference_tables.sql │ ├── 04_warehouse_tables.sql │ ├── 05_load_fact_transactions.sql │ ├── 06_fraud_feature_engineering.sql │ ├── 07_fraud_scoring.sql │ ├── 08_fraud_alerts.sql │ └── 09_bi_views.sql │ ├── powerbi/ │ ├── EWallet_Fraud_Detection_Dashboard.pbix │ └── ewallet_fraud_detection_powerbi_theme.json │ ├── screenshots/ │ ├── page_1_executive_overview.png │ ├── page_2_fraud_ops_center.png │ ├── page_3_merchant_risk.png │ ├── page_4_user_device_risk.png │ ├── page_5_geospatial_analysis.png │ └── page_6_alert_investigation.png │ ├── presentation/ │ └── EWallet_Fraud_Detection_Project_Presentation.pptx │ └── docs/ └── PROJECT_DOCUMENTATION.md ``` ## 📎 说明 由于文件大小限制,本仓库不包含原始的生成数据集。 本仓库主要侧重于项目逻辑、SQL 流水线、Power BI 仪表板、截图和文档。
## 🚀 最终成果 **一个完整的欺诈分析解决方案,将原始的电子钱包交易转化为可操作的欺诈情报。**
标签:PostgreSQL, Power BI, SQL, 代码示例, 多线程, 数据分析, 欺诈检测, 测试用例, 系统审计, 逆向工具, 金融科技