mwandikikepha/Fraud-detection

GitHub: mwandikikepha/Fraud-detection

一套面向移动支付场景的端到端欺诈检测系统,覆盖数据验证、特征工程、模型训练到容器化部署的完整MLOps流程。

Stars: 0 | Forks: 0

# 移动支付欺诈检测 **挑战:** AI 工程挑战 — 端到端 ML 欺诈检测 Pipeline ## 项目功能 本项目构建了一个能够自动检测移动支付欺诈交易系统的系统。其工作流程如下: 1. 接收交易数据(金额、时间、位置、发送方、接收方) 2. 提取有助于识别可疑模式的特征 3. 训练机器学习模型以标记欺诈行为 4. 使用 Docker 和 Argo Workflows 将所有内容打包为自动化 pipeline ## 项目结构 ``` ai_project/ ├── README.md # This file ├── config.py # All paths and settings in one place ├── main.py # Runs the full pipeline with one command ├── requirements.txt # All Python libraries needed ├── data/ │ ├── transactions.csv # Training data (50,000 transactions) │ ├── test_transactions.json # Test data (10,000 transactions) │ └── test_predictions.csv # Our fraud predictions (submitted) ├── models/ │ ├── fraud_detection_model.pkl # Trained XGBoost model │ └── scaler.pkl # Feature scaler ├── notebooks/ │ └── fraud_detection1.ipynb # Full analysis notebook ├── dockerfiles/ │ └── Dockerfile # Packages the pipeline into a container ├── argo/ │ └── workflow.yaml # Argo pipeline definition └── src/ ├── validate_data.py # Step 1: Check data quality ├── feature_engineering.py # Step 2: Create model features ├── train_model.py # Step 3: Train the model ├── evaluate_model.py # Step 4: Evaluate performance └── predict.py # Step 5: Generate predictions ``` ## 阶段 1:数据科学 ### 数据说明 - 50,000 条已标记的移动支付交易数据(2024年1月–6月) - 14 列:交易 ID、时间戳、发送方、接收方、金额、类型、余额、设备、位置 - 欺诈率:4%(2,000 条欺诈 / 48,000 条正常) ### 探索性数据分析 (EDA) 的主要发现 | 发现 | 详情 | |---------|--------| | 夜间欺诈 | 凌晨 12 点至 4 点的交易发生欺诈的可能性高出 15 倍 | | 高金额 | 欺诈交易的中位数金额为 5,474 肯尼亚先令 (KES),而正常交易为 1,368 肯尼亚先令 | | 整数金额 | 10% 的欺诈交易使用整数金额,而正常交易仅为 0.002% | | 位置 | 欺诈交易的来源位置分布更广 | | 交易类型 | 所有类型的欺诈率相似 — 单独作为信号较弱 | ### 提取的特征 | 特征 | 描述 | |---------|-------------| | `is_night` | 如果交易发生在凌晨 12 点至 4 点之间,则为 1 | | `hour` | 一天中的小时 | | `day_of_week` | 星期几 | | `is_weekend` | 如果是周六或周日,则为 1 | | `amount_to_balance_ratio` | 发送方正在发送的余额比例 | | `balance_after_ratio` | 交易后剩余的余额比例 | | `is_round_amount` | 如果金额是整数,则为 1 | | `sender_tx_count` | 此发送方发起的总交易数 | | `sender_tx_per_day` | 此发送方每天发起的交易数 | | `sender_avg_amount` | 发送方的平均交易金额 | | `amount_vs_avg` | 此金额对于该发送方是否异常? | | `sender_unique_receivers` | 此发送方使用过多少个不同的接收方 | | `receiver_tx_count` | 此接收方接收的总交易数 | | `device_tx_count` | 此设备被使用的频率 | | `location_distance` | 此交易距离发送方常用位置有多远 | ### 模型结果 | 模型 | AUC | F1 | Precision | Recall | |-------|-----|----|-----------|--------| | Logistic Regression | 0.9971 | 0.8529 | 0.7789 | 0.9425 | | Random Forest | 0.9990 | 0.9078 | 0.8610 | 0.9600 | | XGBoost | 0.9995 | 0.9428 | 0.9381 | 0.9475 | | LightGBM | 0.9995 | 0.9371 | 0.9246 | 0.9500 | **获胜者:XGBoost** — 最高的 AUC 和 F1 分数。 ### 最终模型性能(消除数据泄漏后) | 指标 | 值 | |--------|-------| | Accuracy | 98% | | Precision | 79% | | Recall | 78% | | F1 Score | 0.78 | | AUC-ROC | 0.9995 | ### 按重要性排名的主要特征 1. `location_distance` — 欺诈交易发生在远离发送方常用位置的地方 2. `amount` — 欺诈涉及更高的金额 3. `hour` — 一天中的时间是一个强烈的信号 4. `device_tx_count` — 设备使用频率 5. `is_night` — 夜间交易风险更高 ## 阶段 2:MLOps ### Docker 整个 pipeline 被打包到一个 Docker 容器中,以确保可复现性。 **构建镜像:** ``` docker build -f dockerfiles/Dockerfile -t fraud-detection . ``` **运行 pipeline:** ``` docker run -v $(pwd)/data:/app/data -v $(pwd)/models:/app/models fraud-detection ``` ### Argo Workflow 该 pipeline 被定义为一个包含 5 个按顺序执行的步骤的 Argo Workflow: ``` validate-data → engineer-features → train-model → evaluate-model → export-model ``` 每个步骤都在 `fraud-detection` Docker 容器内运行。 **使用 Argo 运行(需要安装 Kubernetes + Argo):** ``` argo submit argo/workflow.yaml argo watch fraud-detection-pipeline-xxxxx ``` ## 如何在本地运行 ### 1. 设置环境 ``` pip install -r requirements.txt ``` ### 2. 运行完整 pipeline ``` python main.py ``` ### 3. 或分步运行 ``` python src/validate_data.py python src/train_model.py python src/evaluate_model.py python src/predict.py ``` ### 4. 使用 Docker 运行 ``` docker build -f dockerfiles/Dockerfile -t fraud-detection . docker run -v $(pwd)/data:/app/data -v $(pwd)/models:/app/models fraud-detection ``` ## 测试预测 测试集的预测结果保存在 `data/test_predictions.csv` 中。 - 测试集交易总数:10,000 - 被标记为欺诈:306 (3.06%) - 预期欺诈率:~4% 格式: ``` transaction_id,predicted_fraud 6739205AC695C940,0 0891D338A86BFD86,1 ... ``` ## 局限性与未来改进 - **更多历史数据** — 如果每个用户有更多的交易历史,行为特征将会更具说服力 - **实时特征** — 速度特征(过去一小时的交易次数)将提升检测效果 - **阈值调优** — 根据误报与漏报的业务成本调整欺诈阈值 - **模型监控** — 随着欺诈模式的变化,随时间追踪模型性能
标签:Apex, Argo Workflows, Docker, MLOps, XGBoost, 交易监控, 人工智能, 反欺诈, 子域名突变, 安全防御评估, 容器化部署, 异常检测, 数据科学, 数据验证, 机器学习, 模型评估, 欺诈检测, 特征工程, 用户模式Hook绕过, 移动支付, 端到端机器学习, 自动化流水线, 请求拦截, 资源验证, 逆向工具, 金融科技