Freddy-Fernandes/FraudDetection-Using-Spring-ML

GitHub: Freddy-Fernandes/FraudDetection-Using-Spring-ML

一个基于 Spring Boot 与机器学习/规则混合的在线交易实时反欺诈检测系统。

Stars: 0 | Forks: 0

# 在线交易欺诈检测系统 一个综合性的 Spring Boot 应用程序,使用 **机器学习** 和 **基于规则** 的方法来实时检测在线支付系统(包括二维码支付)中的欺诈交易。 ## 功能特性 ### 1. **混合欺诈检测** - **ML 检测**:基于神经网络的模式识别模型 - **规则检测**:针对已知欺诈模式的业务规则 - **行为分析**:用户行为跟踪与异常检测 ### 2. **实时欺诈预防** - 交易前欺诈检查(支付前) - 交易后欺诈验证(扫码后) - 即时阻断高风险交易 ### 3. **用户行为跟踪** - 交易模式分析 - 基于时间的模式(偏好时段/日期) - 基于位置的模式 - 设备指纹识别 - 商户类别偏好 ### 4. **欺诈指标** - 异常交易金额 - 高频交易速度 - 新设备/新地点检测 - 异常交易时间 - 整数金额检测 - 失败尝试跟踪 ### 5. **风险评分** - 动态用户信任分(0-100) - 交易欺诈分(0-1) - 风险等级:LOW、MEDIUM、HIGH、CRITICAL - 自动推荐:APPROVE、REVIEW、DECLINE ## 架构设计 ``` ┌─────────────────┐ │ Client App │ └────────┬────────┘ │ ▼ ┌─────────────────────────────────────┐ │ Spring Boot REST API │ │ ┌──────────────────────────────┐ │ │ │ Transaction Controller │ │ │ └──────────┬───────────────────┘ │ │ │ │ │ ┌──────────▼───────────────────┐ │ │ │ Fraud Detection Service │ │ │ │ ┌────────────┬────────────┐ │ │ │ │ │ ML Model │ Rule-Based │ │ │ │ │ └────────────┴────────────┘ │ │ │ └──────────────────────────────┘ │ │ │ │ │ ┌──────────▼───────────────────┐ │ │ │ User Behavior Service │ │ │ └──────────────────────────────┘ │ └─────────────────────────────────────┘ │ ▼ ┌─────────────────┐ │ PostgreSQL │ │ Database │ └─────────────────┘ ``` ## 技术栈 - **Java 17** - **Spring Boot 3.2.0** - **Spring Data JPA** - **PostgreSQL**(测试环境可使用 H2) - **DeepLearning4J** - 神经网络机器学习框架 - **Apache Commons Math** - 统计计算 - **Redis** - 缓存(可选) - **Lombok** - 减少样板代码 ## 安装要求 - Java 17 或更高版本 - Maven 3.6+ - PostgreSQL 12+(或使用 H2 进行测试) - Redis(可选,用于缓存) ## 安装说明 ### 1. 克隆仓库 ``` git clone cd fraud-detection-system ``` ### 2. 配置数据库 编辑 `src/main/resources/application.properties`: ``` # For PostgreSQL spring.datasource.url=jdbc:postgresql://localhost:5432/frauddb spring.datasource.username=your_username spring.datasource.password=your_password # For H2 (testing) # spring.datasource.url=jdbc:h2:mem:frauddb # spring.datasource.driver-class-name=org.h2.Driver ``` ### 3. 创建数据库 ``` CREATE DATABASE frauddb; ``` ### 4. 构建项目 ``` mvn clean install ``` ### 5. 运行应用 ``` mvn spring-boot:run ``` 应用将在 `http://localhost:8080` 启动。 ## API 端点 ### 用户管理 #### 注册用户 ``` POST /api/users/register Content-Type: application/json { "email": "user@example.com", "phoneNumber": "+1234567890", "name": "John Doe", "password": "securePassword123" } ``` #### 获取用户信息 ``` GET /api/users/{userId} ``` ### 交易处理 #### 处理交易(预欺诈检查) ``` POST /api/transactions Content-Type: application/json { "userId": "USR-ABC12345", "amount": 1500.00, "currency": "USD", "transactionType": "UPI", "merchantId": "MERCH-001", "merchantName": "Amazon", "merchantCategory": "E-COMMERCE", "ipAddress": "192.168.1.1", "country": "USA", "city": "New York", "latitude": 40.7128, "longitude": -74.0060, "deviceId": "DEVICE-XYZ789", "deviceType": "MOBILE", "deviceFingerprint": "abc123def456", "userAgent": "Mozilla/5.0..." } ``` **响应:** ``` { "transactionId": "TXN-A1B2C3D4", "userId": "USR-ABC12345", "amount": 1500.00, "currency": "USD", "transactionType": "UPI", "status": "APPROVED", "fraudStatus": "SAFE", "fraudScore": 0.15, "fraudReason": "Transaction appears normal", "approved": true, "message": "Transaction approved successfully", "transactionTime": "2024-02-06T10:30:00", "fraudAnalysis": { "mlScore": 0.12, "ruleBasedScore": 0.20, "riskLevel": "LOW", "triggeredRules": [], "recommendation": "APPROVE", "behaviorAnalysis": { "unusualAmount": false, "unusualTime": false, "unusualLocation": false, "unusualDevice": false, "highVelocity": false, "deviationFromNormal": 0.5 } } } ``` #### 处理二维码交易 ``` POST /api/transactions/qr Content-Type: application/json { "userId": "USR-ABC12345", "amount": 500.00, "currency": "USD", "transactionType": "QR_CODE", "qrCodeId": "QR-123456", "qrCodeData": "merchant_upi_id@bank", "deviceId": "DEVICE-XYZ789", "ipAddress": "192.168.1.1" } ``` #### 验证二维码交易(扫码后) ``` POST /api/transactions/qr/verify?qrCodeId=QR-123456&userId=USR-ABC12345 ``` #### 获取用户交易记录 ``` GET /api/transactions/user/{userId} ``` ### 欺诈检测 #### 获取用户欺诈统计 ``` GET /api/fraud/statistics/{userId} ``` **响应:** ``` { "userId": "USR-ABC12345", "trustScore": 95.5, "totalFraudAlerts": 2, "fraudulentTransactions": 1, "accountLocked": false } ``` #### 获取欺诈告警 ``` GET /api/fraud/alerts/{userId} ``` #### 获取未审核告警 ``` GET /api/fraud/alerts/unreviewed ``` #### 审核欺诈告警 ``` PUT /api/fraud/alerts/{alertId}/review?reviewedBy=admin&confirmedFraud=true&comments=Verified fraud ``` ## 欺诈检测规则 ### 基于规则的检测 1. **大额交易规则**:标记超过用户平均值 3 个标准差的交易 2. **速度规则**:标记 1 小时内 >10 笔或每天 >50 笔的交易 3. **异常时间规则**:标记凌晨 2 点至 6 点的交易 4. **新地点规则**:标记来自新国家的交易 5. **新设备规则**:标记来自未识别设备的交易 6. **低信任分规则**:标记信任分 < 50 的用户 7. **新账户规则**:标记注册不足 7 天的账户 8. **失败尝试规则**:标记近期失败尝试 >3 次的账户 9. **整数金额规则**:标记可疑的整数金额(如 1000、5000) 10. **金额限制规则**:标记超过配置限额的交易 ### 机器学习模型特征 神经网络模型使用 20 个特征: - 交易金额(归一化) - 与用户平均金额的比例 - 小时(一天中的时间) - 星期几 - 异常时间标记 - 最近 1 小时交易次数 - 最近 1 天交易次数 - 速度评分 - 异常地点标记 - 设备类型 - 交易类型 - 用户一致性评分 - 失败尝试次数 - 更多... ## 工作原理 ### 交易流程 1. **用户发起交易**(支付前或扫码前) 2. **系统提取特征** 从交易数据中 3. **行为增强** - 添加用户行为模式 4. **规则检查** - 应用业务规则 5. **ML 预测** - 神经网络分析模式 6. **分数组合** - 60% 机器学习 + 40% 规则 7. **风险评估** - 确定风险等级 8. **决策** - APPROVE、REVIEW 或 DECLINE 9. **更新用户档案** - 调整信任分 10. **告警创建** - 检测到可疑活动时 ### 欺诈分数解读 - **0.0 - 0.4**:安全 - 交易通过 - **0.4 - 0.7**:可疑 - 标记为审核 - **0.7 - 0.9**:欺诈 - 交易拒绝 - **0.9 - 1.0**:严重 - 账户封禁 ### 信任分系统 - 新用户初始为 100 分 - 成功交易:+0.5 分 - 可疑活动:-5 分 - 确认欺诈:-20 分 - 重复检测到欺诈时账户锁定 ## 配置 `application.properties` 中的关键配置属性: ``` # Fraud Detection Thresholds fraud.max.transaction.amount=10000 fraud.max.transactions.per.hour=10 fraud.max.transactions.per.day=50 # ML Model Settings ml.model.path=models/fraud_detection_model.zip ml.model.confidence.threshold=0.7 ml.model.retrain.threshold=1000 # Feature Flags fraud.velocity.check.enabled=true fraud.location.check.enabled=true fraud.device.fingerprint.enabled=true ``` ## 测试 ### 示例测试用例 ``` # Test 1: Normal transaction curl -X POST http://localhost:8080/api/transactions \ -H "Content-Type: application/json" \ -d '{ "userId": "USR-TEST001", "amount": 50.00, "currency": "USD", "transactionType": "UPI", "deviceId": "DEVICE-001", "ipAddress": "192.168.1.1" }' # Test 2: High amount (fraud trigger) curl -X POST http://localhost:8080/api/transactions \ -H "Content-Type: application/json" \ -d '{ "userId": "USR-TEST001", "amount": 50000.00, "currency": "USD", "transactionType": "UPI", "deviceId": "DEVICE-001", "ipAddress": "192.168.1.1" }' # Test 3: New device (fraud trigger) curl -X POST http://localhost:8080/api/transactions \ -H "Content-Type: application/json" \ -d '{ "userId": "USR-TEST001", "amount": 100.00, "currency": "USD", "transactionType": "UPI", "deviceId": "DEVICE-NEW-999", "ipAddress": "192.168.1.1" }' ``` ## 数据库架构 ### 主要表 - **users**:用户账户信息与信任分 - **transactions**:所有交易记录及欺诈分数 - **user_behavior**:行为模式与统计 - **fraud_alerts**:待审核的欺诈检测告警 ## 机器学习模型 ### 模型架构 - **输入层**:20 个特征 - **隐藏层 1**:64 个神经元(ReLU 激活) - **隐藏层 2**:32 个神经元(ReLU 激活) - **输出层**:2 个神经元(Softmax - 欺诈/非欺诈) ### 训练 模型初始使用随机权重创建。要使用真实数据训练: ``` // Collect labeled transaction data List transactions = ...; List labels = ...; // true = fraud, false = legitimate // Train the model mlFraudDetectionService.trainModel(transactions, labels); ``` ### 模型更新 - 模型训练后自动保存 - 在 N 次新欺诈确认后触发重新训练 - 可通过管理端点手动重新训练 ## 安全注意事项 ⚠️ **生产环境重要事项:** 1. **密码哈希**:实现 BCrypt 进行密码存储 2. **JWT 认证**:添加 JWT 令牌保障 API 安全 3. **HTTPS**:启用 SSL/TLS 4. **速率限制**:添加请求速率限制 5. **输入验证**:增强所有输入的验证 6. **SQL 注入**:使用参数化查询(已实现) 7. **XSS 保护**:实施内容安全策略 ## 监控与告警 ### 监控指标 - 欺诈检测准确率 - 误报率 - 漏报率 - 平均处理时间 - 交易量 - 告警量 ### 集成选项 - 高风险交易邮件告警 - 账户锁定短信通知 - 外部系统 Webhook 通知 - 实时监控仪表板 ## 后续增强 1. **高级 ML 模型**:LSTM、Transformer 模型 2. **基于图的欺诈检测**:网络分析 3. **实时流处理**:Apache Kafka 集成 4. **A/B 测试**:模型对比框架 5. **可解释 AI**:特征重要性可视化 6. **多货币支持**:增强的货币处理 7. **地理围栏:高级位置验证 8. **生物识别集成**:人脸/指纹验证 ## 故障排除 ### 常见问题 **问题**:模型未加载 - **解决方案**:检查 application.properties 中的模型路径 **问题**:高误报率 - **解决方案**:调整置信度阈值或重新训练模型 **问题**:交易处理缓慢 - **解决方案**:启用 Redis 缓存,优化数据库查询 ## 贡献 1. 叉仓库 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 许可证 MIT 许可证 ## 支持 如有问题和疑问: - 创建 GitHub 问题 - 邮箱:support@frauddetection.com - 文档:[Wiki](wiki-url) **使用 ❤️ 和 Spring Boot 及机器学习构建**
标签:Apex, SEO, Spring Boot, 二维码支付, 云计算, 交易拦截, 交易风控, 动态信任分, 反欺诈系统, 在线支付, 域名枚举, 实时检测, 异常检测, 搜索引擎查询, 机器学习, 模式识别, 欺诈检测, 测试用例, 用户行为追踪, 神经网络, 规则引擎, 设备指纹, 风控系统, 风险评分