第一章:图网络基础——从团伙欺诈到GCN/GAT
大家好,我是你们这堂课的主讲。做了这么多年风控算法,我越来越觉得,传统的特征工程就像拿着手电筒找坏人——你只能照亮你想到的地方。而图网络,说白了,就是给你一张全景地图。今天我们就来聊聊这张地图怎么画,怎么用。
1.1 图论核心概念:节点、边、邻接矩阵
先别急着上公式。图论这东西,你想想看,其实特别直观。
- 节点(Node):就是图中的一个个实体。在风控里,可以是用户、手机号、设备ID、银行卡号。我习惯叫它“点”。
- 边(Edge):表示节点之间的关系。比如“同一个IP登录过”、“转账给”、“共用过设备”。
- 邻接矩阵(Adjacency Matrix):这是图在计算机里的“身份证”。一个N×N的矩阵,A[i][j]=1表示节点i和j有边相连。
核心理解:邻接矩阵就是图的“连接表”。但实际风控场景中,图往往很稀疏——几百万用户,每个人只跟几十个人有关联。所以我们会用稀疏矩阵来存,不然内存直接爆炸。
举个例子。假设我们有4个用户:A、B、C、D。A和B是好友,B和C是好友,C和D是好友。那邻接矩阵长这样:
A B C D
A 0 1 0 0
B 1 0 1 0
C 0 1 0 1
D 0 0 1 0
嗯,这里要注意:无向图的邻接矩阵是对称的。有向图则不一定,比如“A转账给B”就是单向的。
1.2 图在风控中的价值:团伙欺诈与关联网络
为什么图在风控里这么重要?我直接说一个我踩过的坑吧。
几年前我做信贷风控,单点特征(收入、年龄、历史逾期)都做得挺漂亮了,AUC到了0.85。但团伙欺诈一上来,直接被打穿。为什么?因为团伙里的每个单点看起来都是“好人”——收入正常、历史干净。但他们共用设备、共用IP、互相转账形成闭环。这种模式,你拿逻辑回归根本看不出来。
图网络的价值就在这里:
- 团伙识别:通过关联关系,找到密集连接的子图。比如10个用户共用2台设备,这大概率是团伙。
- 风险传导:一个节点变坏,它的邻居风险也会升高。我管这叫“近墨者黑”。
- 异常检测:正常用户的图结构是“星型”(一个中心连几个点),欺诈团伙往往是“全连接”或“链式”。
避坑指南:我曾经犯过一个错——把所有关系都连成边。结果图太密了,每个节点都有上千个邻居,GCN直接跑不动。后来我学乖了,只保留“强关系”:比如7天内共用过设备、3天内互相转账。弱关系(比如同城)直接扔掉。
你想想看,一个用户有100个“弱关系”邻居,和只有5个“强关系”邻居,哪个更有信息量?显然是后者。
1.3 GCN与GAT的数学原理对比
好,到了硬核部分。但别怕,我会用大白话讲清楚。
1.3.1 图卷积网络(GCN)
GCN的核心思想就一句话:每个节点的新特征,等于它自己和邻居特征的加权平均。
数学上,第l层到第l+1层的更新公式是:
H^(l+1) = σ( D̂^(-1/2) · Â · D̂^(-1/2) · H^(l) · W^(l) )
别被符号吓到。我来拆解一下:
- Â = A + I(邻接矩阵加自环,让节点自己也能看到自己)
- D̂ 是 Â 的度矩阵(对角线上是每个节点的邻居数+1)
- D̂^(-1/2) · Â · D̂^(-1/2) 就是归一化操作。为什么要归一化?因为大度节点(比如大V)的邻居太多,如果不归一化,它的特征会淹没小度节点。
- W 是可学习的权重矩阵,σ是激活函数(比如ReLU)。
个人经验:GCN的归一化方式其实挺讲究的。我试过直接用平均(除以度),也试过用对称归一化。实践中,对称归一化(就是上面那个公式)对风控场景最稳。因为它既考虑了目标节点的度,也考虑了邻居的度,不会让“大V”邻居过度影响小节点。
1.3.2 图注意力网络(GAT)
GCN有个硬伤:所有邻居的权重是一样的。但现实中,邻居的重要性显然不同。比如你的“亲密好友”和“点赞之交”,能一样吗?
GAT就是来解决这个问题的。它引入了一个注意力机制,让模型自己学每个邻居的权重。
核心公式:
α_ij = softmax( LeakyReLU( a^T · [W·h_i || W·h_j] ) )
其中:
- h_i 和 h_j 是节点i和j的特征
- W 是共享的权重矩阵
- a 是一个可学习的注意力向量
- || 表示拼接操作
- 最后用softmax归一化,让所有邻居的注意力系数加起来等于1
更新时,每个节点的新特征就是邻居特征的加权和:
h_i' = σ( Σ α_ij · W · h_j )
1.3.3 两者对比
| 维度 | GCN | GAT |
|---|---|---|
| 邻居权重 | 固定(由度决定) | 可学习(注意力系数) |
| 表达能力 | 中等 | 更强(能区分不同邻居) |
| 计算效率 | 高(矩阵运算,可并行) | 稍低(需要计算每对邻居的注意力) |
| 适用场景 | 图结构较均匀,邻居重要性差异不大 | 图结构复杂,邻居重要性差异大 |
| 风控实战 | 适合大规模、稀疏图(如设备网络) | 适合小规模、高价值图(如交易网络) |
注意:GAT不是万能的。我试过在千万级节点的图上跑GAT,训练时间直接翻了三倍。而且注意力头数(multi-head)设太多,反而容易过拟合。我的建议是:先跑GCN baseline,如果效果不够好,再上GAT。别一上来就搞复杂的。
1.4 本章知识体系总览
下面这张图,是我自己画的本章核心逻辑。你可以把它当作一个“思维导图”来看:
这张图把本章的三个核心模块串起来了。从左到右看:先理解图的基础概念,再明白它在风控里能干什么,最后对比两种主流模型。我个人建议你把这个图存下来,后面学具体实现时,随时回来对照。
一个小技巧:如果你刚开始接触图网络,别急着调参。先把“节点定义”和“边定义”想清楚。我见过太多人模型调得飞起,结果发现边建错了——把“同IP”和“同设备”混在一起,模型根本学不到东西。图网络里,数据质量比模型复杂度重要十倍。
公众号:蓝海资料掘金营,微信deep3321