MinThu63/Fraud-Detection-ML

GitHub: MinThu63/Fraud-Detection-ML

基于Random Forest的端到端金融交易欺诈检测ML pipeline,覆盖数据生成、特征工程、模型训练与评估全流程。

Stars: 0 | Forks: 0

# 🏦 金融科技欺诈检测 用于检测欺诈性金融交易的机器学习 pipeline。使用 Python、MySQL、Pandas 和 scikit-learn 构建。 ## 目录 - [动机](#motivation) - [功能](#features) - [架构](#architecture) - [项目结构](#project-structure) - [技术亮点](#technical-highlights) - [快速开始](#getting-started) - [截图](#screenshots) - [路线图](#roadmap) - [许可证](#license) ## 动机 银行每天处理数以百万计的交易。人工审查每笔交易以排查欺诈是不可能的。本项目构建了一个 AI 系统,能够自动从历史数据中学习欺诈模式并实时标记可疑交易——这与 DBS 银行和 PayPal 等公司所采用的方法相同。 无需编写诸如“如果金额 > $10,000 → 欺诈”的硬性规则,模型可以学习复杂的模式: ## 功能 - **合成数据生成** — 创建具有正常和欺诈模式的逼真交易数据 - **MySQL 集成** — 使用 SQL 存储和查询交易数据 - **数据预处理** — 处理缺失值,使用 Pandas 进行特征工程 - **ML 欺诈检测** — 准确率达 98% 的 Random Forest 分类器 - **模型评估** — 精确率、召回率、混淆矩阵、ROC-AUC 评分 - **特征重要性** — 展示哪些因素对检测欺诈最为重要 - **端到端 pipeline** — 单条命令即可运行完整的工作流程 ## 架构 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Data Generation │────▶│ MySQL │────▶│ Preprocessing │ │ (generate_data) │ │ (database) │ │ (Pandas) │ └─────────────────┘ └─────────────────┘ └────────┬────────┘ │ ▼ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ Predictions │◀────│ ML Model │◀────│ Feature Matrix │ │ (fraud/normal) │ │ (Random Forest) │ │ (X, y) │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ``` **工作流程:** 1. 生成 10,000 笔合成交易(5% 欺诈率) 2. 加载到 MySQL 数据库 3. 使用 SQL 查询并提取数据 4. 使用 Pandas 清理数据并进行特征工程 5. 在 80% 的数据上训练 Random Forest 模型 6. 在 20% 的未见测试数据上进行评估 7. 输出带有置信度分数的预测结果 ## 项目结构 ``` fintech-fraud-detection/ ├── data/ │ └── generate_data.py # Generates synthetic transaction data ├── notebooks/ │ └── exploration.py # EDA and visualizations ├── src/ │ ├── database.py # MySQL connection and queries │ ├── preprocessing.py # Data cleaning and feature engineering │ ├── model.py # ML model training and evaluation │ └── predict.py # Full pipeline (entry point) ├── .gitignore ├── requirements.txt └── README.md ``` ## 技术亮点 | 领域 | 详情 | |------|---------| | **语言** | Python 3.12 | | **数据库** | MySQL 8.4 | | **ML 算法** | Random Forest(100 棵树,平衡的类别权重) | | **准确率** | 整体 98%,欺诈召回率 90% | | **数据** | 10,000 笔交易,5% 欺诈率(不平衡) | | **特征** | 从 7 个原始列中提取 20 个工程特征 | **使用的关键技术:** - 针对不平衡数据的类别权重平衡 - 针对偏斜金额的对数变换 - 针对分类特征的特征独热编码 - 用户级行为特征(消费比例) - 分层训练/测试集划分以保持欺诈比例 ## 快速开始 ### 前置条件 - Python 3.10+ - MySQL 8.0+ - pip ### 安装说明 ``` # Clone repo git clone https://github.com/MinThu63/Fraud-Detection-ML.git cd Fraud-Detection-ML # Install dependencies pip install -r requirements.txt # Generate synthetic data python data/generate_data.py # Update src/database.py (line 19) 中的 MySQL 密码 # Load data 到 MySQL python src/database.py --load # Run full pipeline python src/predict.py ``` ## 截图 ### 模型评估 模型在 2,000 笔未见交易上的表现。精确率告诉我们有多少欺诈标记是正确的。召回率告诉我们有多少真正的欺诈被捕获了。该模型每 100 起欺诈能抓出 90 起,同时仅产生 29 次误报。 ``` Classification Report: precision recall f1-score support Normal 0.99 0.98 0.99 1900 Fraud 0.76 0.90 0.82 100 accuracy 0.98 2000 Confusion Matrix: True Negatives: 1871 (correctly identified normal) False Positives: 29 (normal flagged as fraud) False Negatives: 10 (fraud missed!) True Positives: 90 (correctly caught fraud) ROC-AUC Score: 0.9882 ``` ### 预测示例 模型接收交易的详细信息并输出欺诈概率。交易 #18 存在多个危险信号(国际交易 + 网络购物),因此模型以 77.5% 的置信度对其进行标记。交易 #1 尽管是国际交易,但看起来很正常——因为低金额使其保持安全。 ``` Transaction #18: Amount: $208.91 | Hour: 12:00 | Category: online_shopping | International: Yes Predicted: 🚨 FRAUD (confidence: 77.5%) Transaction #1: Amount: $32.94 | Hour: 15:00 | Category: online_shopping | International: Yes Predicted: ✅ Normal (confidence: 99.4%) ``` ### 特征重要性 展示了模型在做出决策时最依赖的因素。交易金额是最强的信号(16%),其次是交易是否为国际交易(12.5%)以及是否发生在夜间(10%)。这与现实世界中的欺诈模式相符。 ``` amount 0.1608 ████████ amount_log 0.1268 ██████ is_international 0.1257 ██████ is_night 0.1017 █████ hour 0.0992 ████ amount_vs_user_avg 0.0943 ████ cat_electronics 0.0718 ███ ``` ## 路线图 - [ ] 添加模型对比(Logistic Regression vs XGBoost vs Random Forest) - [ ] 基于 Flask 的实时预测 API - [ ] 用于欺诈监控的仪表板 - [ ] SMOTE 过采样以实现更好的欺诈召回率 - [ ] 深度学习方法(用于序列交易的 LSTM) - [ ] 与信用评分模型集成 ## 许可证 本项目是开源的,可在 [MIT 许可证](LICENSE) 下获取。
标签:Apex, Python, ROC-AUC, scikit-learn, 不平衡数据处理, 交易监控, 人工智能, 代码示例, 分类算法, 反欺诈, 异常检测, 数据分析, 数据库查询, 数据生成, 数据科学, 数据预处理, 无后门, 机器学习, 欺诈检测, 特征工程, 用户模式Hook绕过, 端到端机器学习, 资源验证, 逆向工具, 金融数据分析, 金融科技, 金融风控, 随机森林, 风控模型