Prakhar-Gupta76/FraudFlex
GitHub: Prakhar-Gupta76/FraudFlex
FraudFlux 是一个实时支付欺诈检测系统,通过可配置规则与机器学习异常检测的结合,在支付决策前为每笔交易生成可解释的风险评分和建议操作。
Stars: 0 | Forks: 0
# FraudFlux
**实时支付风险智能平台**
## 关于本项目
FraudFlux 是一个实时支付欺诈检测系统,旨在在做出支付决策之前评估
每一笔模拟交易。它结合了
可配置的欺诈规则和基于机器学习的异常检测,以
生成风险评分、风险类别、建议操作以及人类可读的
说明。
该项目展示了银行和支付应用程序如何在交易流速度下检测
可疑行为,同时减少对
合法客户不必要的拦截。
FraudFlux 是一个教育和作品集项目。它的第一个版本仅处理
模拟交易,不得将其视为生产级银行或
支付安全系统。
## 项目目标
FraudFlux 旨在:
- 模拟正常和欺诈性支付交易的连续流。
- 使用客户、设备、位置、商户、金额、
身份验证和交易频率信号评估交易。
- 将确定性的欺诈规则与异常检测模型相结合。
- 为每笔交易分配从 `0` 到 `100` 的风险评分。
- 将交易归类为低风险、中风险或高风险。
- 建议批准、要求额外验证或临时冻结。
- 解释促成可疑决策的信号。
- 为分析师提供一个监控和审查警报的 dashboard。
- 衡量检测质量、误报情况、吞吐量和评分延迟。
## 首个 MVP 范围
首个 MVP 将包含:
- 一个模拟交易流生成器。
- 一个用于交易事件的 Kafka broker。
- 一个 Python 欺诈评分 worker。
- 一个可配置的规则引擎。
- 一个机器学习异常检测器。
- 一个风险评分 API。
- 用于存储交易、警报和分析师决策的 PostgreSQL。
- 一个用于实时监控和警报调查的 Web dashboard。
Apache Flink、Feast、Redis 和高级基础设施监控计划
作为后续升级,在首个工作版本中不作要求。
## 使用的交易信息
每笔模拟交易可能包括:
- 交易 ID 和时间戳
- 客户和账户 ID
- 金额和货币
- 商户和商户类别
- 支付渠道
- 设备 ID 和设备信任状态
- IP 地址和大概位置
- 身份验证结果
- 最近的失败尝试
- 最近的交易频率
- 客户的正常消费范围
- 客户的已知设备和常用位置
敏感或受保护的个人特征不得用于判定
风险。
## 风险评分方法
FraudFlux 根据两个组成部分计算最终得分:
```
Final Risk Score = Rules Score + ML Anomaly Contribution
```
- 规则引擎最多可贡献 `70` 分。
- 异常模型最多可贡献 `30` 分。
- 最终得分上限为 `100`。
- 仅计算同一规则组中权重最高的规则。例如,
一笔金额不能同时受到 `3x` 和 `5x` 金额的处罚。
这些是初始的 MVP 设置。之后必须使用评估
结果以及漏报欺诈与误报之间的业务成本对其进行校准。
## 初始欺诈规则
### 金额规则
将交易金额与客户的正常消费
行为进行比较。
| 条件 | 得分 |
| --- | ---: |
| 金额至少是客户正常金额的 3 倍 | +10 |
| 金额至少是客户正常金额的 5 倍 | +20 |
| 金额至少是客户正常金额的 10 倍 | +30 |
仅应用满足条件的最高金额规则。
### 交易频率规则
| 条件 | 得分 |
| --- | ---: |
| 2 分钟内发生 3 到 5 笔交易 | +10 |
| 2 分钟内发生超过 5 笔交易 | +20 |
| 在多个商户处重复进行小额支付 | +15 |
仅应用满足条件的最高一般频率规则。当
交易模式符合时,也可能适用单独的
测卡规则。
### 设备规则
| 条件 | 得分 |
| --- | ---: |
| 交易使用新设备 | +15 |
| 设备被多个不相关的客户账户共享 | +20 |
| 设备已存在于内部拒绝列表中 | +40 |
仅应用满足条件的最高设备规则。
### 位置规则
| 条件 | 得分 |
| --- | ---: |
| 交易发起于客户通常所在的区域之外 | +10 |
| 交易发起于异常的国家/地区 | +15 |
| 检测到与前一笔交易之间存在不可能的旅行 | +30 |
不可能的旅行是指两次相距甚远的交易之间的时间
太短,无法进行现实的物理旅行。仅应用满足条件的最高位置规则。
### 身份验证规则
| 条件 | 得分 |
| --- | ---: |
| 3 次或更多最近的身份验证失败尝试 | +10 |
| 5 次或更多失败尝试后紧接着支付成功 | +20 |
| 已知身份验证或设备凭据已泄露 | +40 |
仅应用满足条件的最高身份验证规则。
### 商户和行为规则
| 条件 | 得分 |
| --- | ---: |
| 商户类别对客户来说不常见 | +10 |
| 对客户而言,支付发生在异常时段 | +5 |
| 休眠账户突然进行高额支付 | +15 |
| 商户近期的欺诈或争议率异常 | +15 |
当这些规则代表不同的信号时,可以将其结合使用。
## ML 异常贡献
异常检测器评估完整交易是否偏离了
客户的正常行为。它可能会考虑:
- 偏离客户平均水平的金额。
- 最近时间窗口内的交易数量。
- 与常用位置的距离。
- 距离上一笔交易的时间。
- 设备是否为新设备。
- 商户类别的罕见程度。
- 一天中时段的偏差。
- 最近的身份验证失败情况。
模型输出被标准化为介于 `0` 和 `30` 之间的贡献分。
异常得分不能证明存在欺诈;它是与
规则一起使用的辅助证据。
## 风险类别和决策
| 最终得分 | 风险类别 | 建议的 MVP 决策 |
| ---: | --- | --- |
| 0-39 | 低 | 批准 |
| 40-69 | 中 | 要求额外验证 |
| 70-100 | 高 | 临时冻结并创建分析师警报 |
高风险类别不代表对欺诈的最终法律判定。
在 MVP 中,“冻结”和“拦截”仅为模拟状态。
## 决策覆盖
某些高置信度信号可能会覆盖常规阈值:
- 处于已确认拒绝列表中的设备或凭据会产生高风险警报。
- 已确认遭到泄露的账户会产生高风险警报。
- 缺失或无效的核心交易数据将阻止自动批准,
并将交易发送以供审查。
- 服务或模型故障不得悄无声息地将交易归类为安全;
它会产生明确的系统审查状态。
覆盖操作必须记录在说明和审计历史中。
## 可解释的警报
每个中风险或高风险结果都应包含:
- 最终风险评分和风险类别。
- 建议的决策。
- 触发的规则。
- 每条规则贡献的分数。
- ML 异常贡献。
- 重要的行为偏差。
- 模型和规则集版本。
- 交易处理时间。
示例:
```
Risk score: 82/100
Category: High
Recommended action: Hold for review
Reasons:
- New device: +15
- Amount is 6.4 times the customer's normal amount: +20
- Impossible travel detected: +30
- ML anomaly contribution: +17
```
## 分析师审查
分析师可以将警报标记为:
- 确认的欺诈
- 合法交易
- 需要进一步调查
分析师的标签、备注、身份和审查时间应作为
审计记录予以保留。分析师反馈稍后可能会成为带标签的训练数据,但
在重新训练模型之前必须对其进行验证。
## 评估规则
项目不得仅将准确率作为成功的唯一指标,因为欺诈
交易非常罕见。MVP 应报告:
- Precision
- Recall
- F1 score
- Precision-recall AUC
- False-positive rate
- 检测到的欺诈金额
- 被错误冻结的合法金额
- 每秒处理的交易数
- 中位数和 p95 评分延迟
使用合成数据产生的结果必须清晰地标记为模拟
结果,且不得作为现实世界的银行业务性能呈现。
## 项目原则
- 每一项风险决策都必须是可解释且可审计的。
- 规则和阈值必须是可配置和带有版本的。
- 同一事件不得创建重复的支付决策。
- 事件时间戳必须与处理时间戳区分开来。
- 缺失的数据和系统故障必须是可见的,不能被悄无声息地忽略。
- 不得将敏感数据写入普通的应用程序日志中。
- 受保护的个人属性绝不能用作欺诈信号。
- 分析师反馈未经验证不得用于训练。
- 必须长期监控模型性能和误报情况。
- 对于模棱两可和高影响的决策,仍可进行人工审查。
## 免责声明
FraudFlux 旨在用于学习、演示和系统设计实践。
未经专业的安全审查、法律审查、
适当的数据治理、广泛验证和监管合规,其模拟的决策不得用于批准、拒绝或拦截真实的
金融交易。
标签:Apex, Kafka, SonarQube插件, 实时计算, 机器学习, 欺诈检测, 测试用例, 逆向工具, 金融科技, 风险控制