vinayp2219/Real-Time-Fraud-Detection-System

GitHub: vinayp2219/Real-Time-Fraud-Detection-System

一个生产级流处理管道,使用Kafka、Spark Streaming和Isolation Forest ML模型实时检测电子商务欺诈交易,支持500+笔/秒的处理能力。

Stars: 0 | Forks: 0

# 实时电子商务欺诈检测管道 一个生产级的流处理管道,使用 Apache Kafka、Spark Structured Streaming 和机器学习实时检测电子商务欺诈交易。 ## 演示 ## 架构 Transaction Generator (Python) ↓ Apache Kafka (3 个分区) ├── raw-transactions 主题 ├── fraud-alerts 主题 └── dead-letter-queue 主题(畸形事件) ↓ Spark Structured Streaming ├── 实时特征工程 ├── Isolation Forest 异常评分 ├── 混合规则引擎(ML + 业务规则) └── 行为指纹 ↓ 存储层 ├── SQLite(欺诈结果 + 分析) └── HBase schema(用户画像 + 告警) ↓ Streamlit 仪表板(实时欺诈监控) ## 本项目的独特之处 - **死信队列** — 畸形事件被路由到单独的 Kafka 主题,通过批处理作业重新处理,而不是导致管道崩溃 - **混合规则引擎** — 将 Isolation Forest ML 异常评分与硬性业务规则(大额、高频、新商户、位置异常)相结合,如同真实金融科技欺诈系统一样 - **4 种欺诈注入模式** — 大额交易、交易频率异常、设备未知、位置跳跃 — 使模拟更加真实 - **自定义 Docker 镜像** — 将 numpy、pandas、scikit-learn 永久集成到 Spark 镜像中,确保可复现部署 - **端到端管道** — 从数据生成到实时仪表板,而不仅仅是笔记本实验 ## 技术栈 | 层级 | 技术 | |---|---| | 消息中间件 | Apache Kafka | | 流处理 | Apache Spark Structured Streaming | | ML 模型 | Isolation Forest (scikit-learn) | | 特征工程 | PySpark UDFs | | 存储 | SQLite, HBase (schema) | | 仪表板 | Streamlit + Plotly | | 容器化 | Docker, Docker Compose | | 编程语言 | Python | ## 欺诈检测逻辑 每笔交易由两个并行运行的层级进行评分: **第 1 层 — Isolation Forest ML 模型** - 基于 10,500 笔交易训练(10,000 笔正常 + 500 笔合成欺诈) - 特征:金额、交易频率、地理位置坐标、商户类型、时段 - 输出介于 -1(欺诈)和 +1(正常)之间的异常评分 **第 2 层 — 混合规则引擎** - 金额 > ₹50,000 → 标记为 high_amount 欺诈 - 最近 1 小时内交易 > 20 笔 → 标记为 velocity 欺诈 - 新商户 + 金额 > ₹10,000 → 标记为 new_merchant_high_amount - 位置在印度境外(纬度 < 8 或纬度 > 35)→ 标记为 location_anomaly 如果**任一**层级检测到欺诈,则该交易被标记为欺诈交易。 ## 项目结构 fraud-detection-pipeline/ ├── producer/ │ └── transaction_generator.py # 模拟 500+ 笔/秒的交易,包含欺诈模式 ├── spark_jobs/ │ └── fraud_detector.py # Spark Streaming + ML + 规则引擎 ├── models/ │ └── train_model.py # Isolation Forest 训练脚本 ├── dashboard/ │ └── app.py # Streamlit 实时仪表板 ├── config/ │ └── hadoop.env # Hadoop 配置 ├── Dockerfile.spark # 包含 ML 依赖的自定义 Spark 镜像 ├── docker-compose.yml # 完整堆栈编排 └── start.ps1 # 一键启动脚本 ## 设置与运行 ### 前置条件 - Docker Desktop - Python 3.8+ - Java 8+ ### 步骤 1 — 克隆仓库 ``` git clone https://github.com/vinayp2219/fraud-detection-pipeline.git cd fraud-detection-pipeline ``` ### 步骤 2 — 下载 Kafka-Spark 连接器 jar 包 ``` Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/spark/spark-sql-kafka-0-10_2.12/3.4.1/spark-sql-kafka-0-10_2.12-3.4.1.jar" -OutFile "spark_jobs/spark-sql-kafka.jar" Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/kafka/kafka-clients/3.4.0/kafka-clients-3.4.0.jar" -OutFile "spark_jobs/kafka-clients.jar" Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/spark/spark-token-provider-kafka-0-10_2.12/3.4.1/spark-token-provider-kafka-0-10_2.12-3.4.1.jar" -OutFile "spark_jobs/spark-token-provider.jar" Invoke-WebRequest -Uri "https://repo1.maven.org/maven2/org/apache/commons/commons-pool2/2.11.1/commons-pool2-2.11.1.jar" -OutFile "spark_jobs/commons-pool2.jar" ``` ### 步骤 3 — 构建并启动 ``` docker compose build spark spark-worker .\start.ps1 ``` ### 步骤 4 — 打开仪表板 ## 结果 - 首次运行处理了 **6,481** 笔交易 - 检测到 **255** 个欺诈告警(欺诈率 3.9%) - 检测到 **4 种欺诈模式**:high_amount、velocity、location_anomaly、new_merchant_high_amount - 管道延迟:每个微批次 **< 3 秒** - 使用 Docker Compose 将管道从数据模拟完整连接到实时 Streamlit 仪表板 - 使用包含 ML 依赖的自定义 Spark Docker 镜像容器化所有管道组件,确保可复现部署
标签:Apache Kafka, Apex, Docker, HBase, Isolation Forest, Kubernetes, MLOps, Plotly, PySpark, Python, scikit-learn, Spark Structured Streaming, SQLite, Streamlit仪表板, 事件驱动架构, 分布式系统, 响应大小分析, 大数据, 安全防御评估, 实时分析, 实时欺诈检测, 异常检测, 数据工程, 数据管道, 无后门, 机器学习, 死信队列, 流处理, 混合规则引擎, 特征工程, 电商安全, 目录扫描, 行为指纹, 请求拦截, 软件工程, 软件成分分析, 逆向工具, 金融科技