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, 二维码支付, 云计算, 交易拦截, 交易风控, 动态信任分, 反欺诈系统, 在线支付, 域名枚举, 实时检测, 异常检测, 搜索引擎查询, 机器学习, 模式识别, 欺诈检测, 测试用例, 用户行为追踪, 神经网络, 规则引擎, 设备指纹, 风控系统, 风险评分