cmosantos/transaction-anomaly-detection-python
GitHub: cmosantos/transaction-anomaly-detection-python
一个使用 Isolation Forest 算法和业务规则自动检测可疑金融交易的 Python 异常检测项目。
Stars: 0 | Forks: 0
# 使用 Python 进行交易异常检测
本项目演示了如何使用 Python、数据预处理、业务规则以及无监督机器学习模型来检测可疑的金融交易。
其目标是模拟一个真实的欺诈监控场景,在该场景中,企业需要根据金额、交易时间、国家、商户类别以及是否为跨境使用来识别异常交易。
## 项目概述
金融机构、支付平台、SaaS 公司和电子商务企业每天处理成千上万笔交易。部分交易可能会呈现出异常模式,例如金额极高、深夜时段消费,或者来自预期之外国家的活动。
本项目应用异常检测技术来识别那些需要分析师或支持团队审查的交易。
该解决方案使用:
- Python 进行数据处理
- Pandas 进行数据集操作
- Scikit-learn 进行机器学习
- Isolation Forest 进行异常检测
- 简单的业务规则以提高可解释性
- 用于安全测试的合成交易数据
## 仓库结构
```
transaction-anomaly-detection-python/
│
├── data/
│ └── sample_transactions.csv
│
├── docs/
│ └── project-delivery-ptbr.md
│
├── src/
│ ├── anomaly_detector.py
│ └── generate_sample_data.py
│
├── .gitignore
├── LICENSE
├── README.md
└── requirements.txt
```
## 工作原理
本项目遵循简单的机器学习工作流程:
1. 生成包含金融交易的合成数据集。
2. 使用 Pandas 加载数据集。
3. 对数值和类别特征进行预处理。
4. 训练 Isolation Forest 模型以检测异常模式。
5. 添加业务规则标记,使输出更易于理解。
6. 导出包含异常分数和审查状态的最终结果。
## 数据集
该数据集包含具有以下字段的合成交易:
| 列名 | 描述 |
|---|---|
| transaction_id | 唯一交易标识符 |
| user_id | 模拟的客户/用户标识符 |
| amount | 交易金额 |
| merchant_category | 交易发生的商户类型 |
| country | 处理交易的国家 |
| hour | 交易发生的小时 |
| transaction_date | 交易日期 |
| is_international | 指示交易是否为跨境交易 |
## 检测逻辑
该模型使用 Isolation Forest,这是一种常用于识别数据集中异常值的无监督机器学习算法。
本项目还添加了业务规则信号,包括:
- 高交易金额
- 夜间交易
- 跨境交易
- 多种风险指标的组合
最终输出将每笔交易分类为:
- `Approved`:交易遵循正常模式
- `Review`:由于行为异常,应予审查该交易
## 使用技术
- Python
- Pandas
- Scikit-learn
- Isolation Forest
- CSV 数据处理
## 如何运行本项目
克隆仓库:
```
git clone https://github.com/your-username/transaction-anomaly-detection-python.git
cd transaction-anomaly-detection-python
```
创建虚拟环境:
```
python -m venv .venv
```
在 Windows 上激活虚拟环境:
```
.venv\Scripts\activate
```
安装依赖项:
```
pip install -r requirements.txt
```
生成样本数据集:
```
python src/generate_sample_data.py
```
运行异常检测脚本:
```
python src/anomaly_detector.py
```
输出文件将生成于:
```
data/transactions_with_anomalies.csv
```
## 示例输出
运行项目后,终端将显示如下摘要:
```
Transaction Anomaly Detection Summary
---------------------------------------------
Total transactions: 500
Transactions flagged for review: 20
Anomaly rate: 4.00%
```
生成的 CSV 包含以下附加列:
- anomaly_score
- is_anomaly
- status
- high_amount_flag
- night_transaction_flag
- foreign_transaction_flag
- risk_reason
## 商业价值
本项目模拟了异常检测如何支持欺诈预防、客户支持、财务运营和风险分析。
在实际环境中,此类解决方案可以帮助团队优先处理可疑交易,减少人工审查工作量,缩短响应时间,并支持基于数据的决策制定。
## 局限性
本项目使用合成数据和简化模型。要在生产环境中使用,需要真实的历史数据、标记的欺诈案例、更严格的验证、特征工程、监控、安全控制以及与交易系统的集成。
## 作者
Cláudio Menezes de Oliveira Santos
初级 IT 支持分析师,专注于 Microsoft 365、云计算、自动化、人工智能和实用技术项目。
标签:Apex, Scikit-learn, 代码示例, 孤立森林, 异常检测, 数据分析, 机器学习, 逆向工具, 金融风控