2. 图论基础:图的基本概念
图论这东西,听着高大上,说白了就是研究“什么东西跟什么东西怎么连”的学问。咱们做团伙识别,最核心的就是人和人之间的关系——谁跟谁有通话、转账、见面,这些关系用图来建模再合适不过。
我刚开始用图论做风控的时候,犯过一个低级错误:把无向图当有向图用。结果团伙里资金流向全画反了,模型完全跑偏。后来我养成了一个习惯:动手之前,先拿纸笔画一遍图的结构,搞清楚方向、权重、属性,再写代码。这个习惯帮我省了不少回头改 bug 的时间。
2.1 图的核心要素:节点、边、度、路径
先聊聊最基础的几个概念。一个图由两部分组成:节点和边。
- 节点(Vertex / Node):代表实体。在团伙识别里,节点可以是人、手机号、银行卡、IP地址……你想扩展什么实体,就加什么节点。
- 边(Edge):代表关系。比如A给B打过电话,这就是一条边。
- 度(Degree):一个节点连了多少条边。度高的节点往往很关键——可能是核心成员,也可能是公用设备。
- 路径(Path):从一个节点到另一个节点经过的边的序列。路径长度就是经过的边数。在团伙里,路径越短,关系越紧密。
我做过一个案子:一个“卡头”节点度高达2000多,但路径深度很短——他直接联系所有下线,几乎不通过中间人。这种结构就是典型的星型拓扑,属于高危模式。
2.2 有向图 vs 无向图:方向决定了关系的性质
很多人在这一步就懵了:“我到底用有向还是无向?”我的判断标准很简单:看关系能不能倒过来。
| 图类型 | 边是否有方向 | 典型场景 | 团伙识别中的例子 |
|---|---|---|---|
| 无向图 | 无 | 社交好友、共同群组 | 两人在同一个微信群,关系是双向的 |
| 有向图 | 有 | 转账、通话、关注 | A转账给B,B不一定转回给A |
嗯,这里要注意:有向图的入度和出度是两个独立指标。入度高的节点可能是收赃的,出度高的节点可能是打款的。我在一场反洗钱分析里遇到过,一个节点出度30、入度只有2,明显是资金扩散的关键点。
2.3 加权图与属性图:把关系“量化”和“丰富”
光有方向和连接还不够。我们还需要知道关系的强度和类型。这里就引入加权图和属性图。
- 加权图(Weighted Graph):每条边带一个权重,比如转账金额、通话时长、见面次数。权重越大,关系越“重”。
- 属性图(Attributed Graph):节点和边都可以附带任意属性。比如节点可以有“职业”、“年龄”,边可以有“时间戳”、“地点”。
在团伙识别里,加权图能帮你量化“紧密程度”,属性图则帮你做更深度的判断。举个例子:两个节点之间只有一次小额转账,权重极低;但如果你看到他们有多笔大额转账,且时间都在凌晨,那这属性组合就很可疑。
我建议你:先把关系抽象成加权有向图,然后再把监控到的额外字段挂到节点或边上作为属性。这样既保留了结构信息,又不丢失细节。
2.4 一张图搞懂所有概念
下面这张图把上面说的要素全放在一个例子里。咱们一边看一边回顾。
你看这张图:节点有颜色区分类型(设备、人、银行卡),边带箭头表示方向,边上标注了权重。节点B的度是3(两条出边、一条入边)。你学会分解了吗?
2.5 实战避坑:别把“无向图”当默认选项
很多人一开始图省事,所有关系都建无向图。结果后面做路径分析时发现,资金流方向跟实际完全相反。我曾经在一个项目中,用无向图跑社区发现,抓到一群“紧密连接的团伙”,结果一查全是单向转账——那些人根本互相不认识,只是都向同一个上家打钱。无向图把这种模式硬生生拉成了双向关系,严重失真。
教训:任何带有时间戳、金额、方向的关系(转账、通话、登录设备),一定用有向图建模。无向图只适合“好友关系”、“同属一个群”这种对称关系。
2.6 加权图在团伙识别中的典型用法
咱们做变量衍生,很多时候就是从加权图里提取统计量。我总结了几种最常用的:
- 加权度:某个节点的所有出边权重之和。比如一个人累计转出金额,反映其资金流出规模。
- 加权路径:路径上边权的总和(或乘积),用来度量两个实体间的“总关联强度”。
- 最短加权路径:边权为“成本”或“距离”时,找最小权重路径。比如最短通话时长路径,可判断传导效率。
还有一个容易被忽略的点:属性图的信息密度很高,但别忘了归一化。节点属性可能有几十维,如果不做标准化,度的差异会把其他属性淹没。我自己写特征工程时,都会先对数值属性做分箱或 rank 化,再跟图结构特征一起喂模型。
好,这一章就到这。图论基础是后面所有变量衍生操作的基石,希望你能自己动手画几个图例,把概念练熟。后面咱们就开始讲如何在图上做特征提取了。