Kishore-1803/Temporal-GNN-for-Financial-Fraud-Detection

GitHub: Kishore-1803/Temporal-GNN-for-Financial-Fraud-Detection

使用时间图神经网络在动态信任网络中检测金融欺诈行为。

Stars: 0 | Forks: 0

# 🛡️ 时间图神经网络(Temporal GNN)用于金融欺诈检测 ![PyTorch](https://img.shields.io/badge/PyTorch-%23EE4C2C.svg?style=for-the-badge&logo=PyTorch&logoColor=white) ![Python](https://img.shields.io/badge/python-3.8+-blue.svg?style=for-the-badge&logo=python&logoColor=white) ![Jupyter Notebook](https://img.shields.io/badge/jupyter-%23FA0F00.svg?style=for-the-badge&logo=jupyter&logoColor=white) ![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge) 本项目致力于利用深度学习在动态信任网络中检测欺诈交互行为。通过采用带有基于 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信任网络, 深度学习, 用户交互, 节点特征投影, 逆向工具, 金融欺诈检测, 隐式记忆