本教程通过图上的洗钱账户识别的例子来介绍和实现一个简单的反洗钱识别算法,洗钱账户识别是给出一张金融行为图(如节点为账户,交易为边)需要判断图中哪些节点是有洗钱行为的异常节点。本教程通过加载和预处理数据、构造和提取特征、训练分类器得到一个可以应用的反洗钱识别工具。此案例以金融行为图上的反洗钱识别为例介绍。反洗钱识别是依据金融行为图的特征对图中的节点进行分类,识别图中的有洗钱行为的异常节点,可以形式化为一个类别不平衡的二分类问题,其中无洗钱行为的正常节点为多数类(负类),有洗钱行为的异常节点为少数类(正类)。
使用来自互联网的金融行为图数据集,数据集中的数据以稀疏矩阵的形式存在。
Python3.7环境下测试了本教程代码。
本教程包括以下内容:从原始的数据文件中加载数据、对数据进行预处理、构建图、训练分类器、结果展示。解决反洗钱识别问题的思路可以分成构建图和训练分类器两个步骤。其中构建图是根据边列表生成邻接矩阵。分类器本教程选择使用能够利用图的拓扑结构,并且能够缓解类别不平衡状况的自动加权图卷积神经网络算法的。
- #统一导入工具包
- import time
- import os
- import random
- import pickle
- import numpy as np
- import scipy.sparse as sp
- import copy as cp
- import torch
- import tor