Kishore-1803/Temporal-GNN-for-Financial-Fraud-Detection
GitHub: Kishore-1803/Temporal-GNN-for-Financial-Fraud-Detection
使用时间图神经网络在动态信任网络中检测金融欺诈行为。
Stars: 0 | Forks: 0
# 🛡️ 时间图神经网络(Temporal GNN)用于金融欺诈检测




本项目致力于利用深度学习在动态信任网络中检测欺诈交互行为。通过采用带有基于 GRU 的状态更新(隐式记忆)的**时间图神经网络(TGNN)**,本项目对用户交互的动态演化进行建模,以识别异常和欺诈行为。
## 📊 数据集:Bitcoin OTC 信任网络
本项目使用 **Bitcoin OTC Trust Network** 数据集。
该数据集代表了在名为 Bitcoin OTC 的平台上进行比特币交易的用户之间的“谁信任谁”网络。由于比特币用户是匿名的,因此需要记录用户的声誉以防止与欺诈和风险用户进行交易。
- **节点(Nodes):** 平台上的个人用户。
- **边(Edges):** 一个用户对另一个用户给出的场外信任评分。
- **原始特征(Raw Features):** 时间戳和评分值。
- **工程特征(Engineered Features):** 历史交互统计信息(计数、比率等)。
- **欺诈率(Fraud Rate):** 约 10% 的交互代表欺诈或不可信行为。
## 🧠 关于时间图神经网络(Temporal GNN)模型
本项目的核心是一个自定义的 PyTorch 实现的**时间图神经网络(Temporal Graph Neural Network, TGNN)**,旨在同时捕捉结构关系和时间动态。欺诈行为往往隐藏在交互的*时机*和*序列*中,这使得静态图模型不足以应对。
我们的 `TemporalModel` 架构包括:
- **特征投影(Feature Projection):** 一个线性层,将原始边特征投影到稠密向量空间。
- **连续时间跟踪(Continual Time Tracking):** 纳入时间顺序和交互时机,以理解突发性关系与稀疏关系。
- **基于 GRU 的状态更新(GRU-based State Updates):** 两个并行的 `GRUCell` 循环模块分别更新交互的“源”(用户)和“目标”(项目)节点。这些单元通过摄取历史节点嵌入、投影的边特征和交互时机,持续演化各个节点的表示。
- **MLP 分类器(MLP Classifier):** 一个标准的多层感知机(MLP),包含顺序的稠密层、ReLU 激活函数和 Dropout 正则化。它处理两个交互节点的拼接、不断更新的嵌入,并输出最终的欺诈概率分数。
## 🛠️ 方法论:我们如何进行
系统通过建模图的时间动态来预测欺诈交互(边):
1. **数据预处理与特征工程(Data Preprocessing & Feature Engineering):**
- 加载并按时间顺序排序 Bitcoin OTC 数据集,以模拟真实时间的图演化。
- 将信任/不信任评分映射为二值标签(可信 `0` vs. 欺诈 `1`)。
- 构建丰富的历史特征(例如,节点交互计数、历史负评分比率),这些特征**严格**基于每个事件之前的交互计算,确保**零数据泄露**。
2. **时间图构建(Temporal Graph Construction):**
- 构建一个动态图,其中节点和边随时间流入并更新,内存占用也动态变化。
3. **训练与对比学习(Training & Contrastive Learning):**
- **不平衡学习(Imbalanced Learning):** 针对约 10% 的欺诈率这一严重类别不平衡问题,采用带类别权重的二值交叉熵损失(`BCEWithLogitsLoss`)。
- **时间负采样(Temporal Negative Sampling):** 对于每个真实交互,在相同时间戳采样一个随机的“假”目标交互,以教导模型区分真实未来边与结构噪声。
4. **评估(Evaluation):**
- 使用学习率调度(`ReduceLROnPlateau`)监控模型在时间上的 PR-AUC 和 ROC-AUC。
- 在时间切分上使用严格的分类指标进行评估,重点关注捕获少数欺诈类(高召回率场景)。
## 🏆 最终结果
时间图神经网络(Temporal GNN)在识别网络中的欺诈行为方面表现出色。
### 整体性能
| 模型 | 数据集 | ROC-AUC | PR-AUC | 欺诈率 | 框架 |
|-------|---------|---------|--------|------------|-----------|
| 时间图神经网络(Temporal GNN,GRU + 内存) | Bitcoin OTC 信任网络 | **0.8857** | **0.7131** | 10% | PyTorch |
### 分类报告(阈值 = 0.5)
| 类别 | 精确率(Precision) | 召回率(Recall) | F1 分数 | 支持(Support) |
|-------|-----------|--------|----------|---------|
| **可信(0)** | 0.95 | 0.84 | 0.89 | 6024 |
| **欺诈(1)** | 0.47 | 0.77 | 0.58 | 1095 |
| *准确率(Accuracy)* | | | **0.83** | *7119* |
| *宏平均(Macro Avg)* | 0.71 | 0.81 | 0.74 | *7119* |
| *加权平均(Weighted Avg)* | 0.88 | 0.83 | 0.85 | *7119* |
## 🚀 快速开始
### 前置条件
请确保已安装以下依赖:
- Python 3.8+
- PyTorch
- Jupyter Notebook
- `pandas`, `numpy`, `scikit-learn`, `matplotlib`
### 运行项目
1. 克隆本仓库。
2. 确保数据集位于 `Dataset/` 目录中:`Dataset/soc-sign-bitcoinotc.csv`。
3. 在 Jupyter Notebook 或 VS Code 中打开 `TGNN.ipynb`。
4. 顺序运行各个单元格,以预处理数据、训练时间图神经网络并复现结果。
标签:Apex, DNS解析, GNN, GRU, NoSQL, Python, PyTorch, Temporal GNN, 信任关系分析, 凭据扫描, 动态图建模, 区块链分析, 历史交互统计, 图神经网络, 声誉系统, 开源项目, 异常检测, 无后门, 时序图神经网络, 时间信任网络, 时间序列建模, 机器学习, 欺诈率, 欺诈行为识别, 比特币OTC信任网络, 深度学习, 用户交互, 节点特征投影, 逆向工具, 金融欺诈检测, 隐式记忆