一、社群发现基础:图论基础概念、社群定义、团伙欺诈场景概述、课程整体框架

1.1 图论基础概念——从一张关系网说起

做反欺诈这些年,我越来越觉得,单看单个用户的行为,就像盲人摸象。你只能摸到一条腿,却看不到整头大象。而图,恰恰是帮我们看清全貌的工具。

图是什么?说白了,就是一堆节点和一堆边的集合。节点可以是一个人、一个设备、一张银行卡。边就是他们之间的关系——转账、同设备登录、共用手机号等等。

我习惯把图分成两种:

  • 无向图:边没有方向。比如A和B共用一台设备,这个关系是双向的。
  • 有向图:边有方向。比如A给B转账,方向就很明确。

在实际的团伙欺诈场景里,我们更多用的是有向图。为什么?因为资金流向本身就是有方向的,你想想看,骗子把钱从A转到B,再转到C,这个链条一旦断了,你就很难追踪。

核心概念速查表

术语含义反欺诈场景举例
节点图中的实体用户ID、设备指纹、IP地址
实体间的关系转账、同设备登录、同IP注册
节点连接的边数一个设备关联了多少个账号
连通分量互相可达的节点子集一个完整的欺诈团伙
路径从一个节点到另一个节点的走法资金流转的完整链路

我记得刚入行那会儿,遇到一个薅羊毛团伙。单看每个账号,行为都挺正常的——有登录、有浏览、有下单。但一画图就露馅了:200多个账号,全挂在同一台设备上。这就是典型的「高密度子图」,也是我们后面要重点讲的内容。

1.2 社群定义——团伙在图中长什么样

社群,学术上叫community。定义其实挺直观的:内部连接紧密,外部连接稀疏的一组节点。

你想想看,一个正常的社交网络里,你的朋友之间互相认识的概率很高。但一个欺诈团伙呢?他们之间频繁转账、共用设备,内部关系密不透风,对外却几乎不联系。这就是社群。

常见的社群定义方式有三种:

  1. 基于模块度:衡量社群划分质量的一个指标。值越大,说明内部越紧密。我个人习惯用模块度来快速验证一个团伙是不是真的「抱团」。
  2. 基于连通性:只要节点之间能通过边互相到达,就算一个社群。简单粗暴,但容易把不相关的节点也包进来。
  3. 基于密度:设定一个阈值,比如内部边密度大于0.5才算社群。这种方式更精细,适合做精准打击。

避坑指南

我曾经在一个项目里,直接用连通分量来定义团伙,结果把两个完全不相干的正常用户群也合并了。后来加了密度约束,才把误杀率降下来。所以,定义社群时,一定要结合业务场景。薅羊毛团伙和洗钱团伙,他们的图结构差异很大,不能一刀切。

1.3 团伙欺诈场景概述——我们到底在打什么

团伙欺诈,说白了就是一群人合起伙来薅平台羊毛、骗补贴、洗钱。跟单人欺诈最大的区别在于:单人欺诈靠规则就能防住,团伙欺诈必须靠图

我遇到过最常见的几种场景:

  • 薅羊毛:注册大量小号,用同一批设备、同一批IP,集中抢优惠券。这种团伙的图结构通常是「星型」——一个设备连几百个账号。
  • 刷单炒信:商家和刷手之间互相下单、互相好评。图里会出现大量的「三角结构」——A给B下单,B给C下单,C又给A下单。
  • 洗钱:资金从A到B到C再到D,中间可能经过几十层。这种图的特点是「链状」——路径长、节点多、单笔金额小。

注意

团伙欺诈的识别,难点不在于算法,而在于特征工程。你想想看,如果连图都建不对,后面的社群发现算法再牛也没用。我见过太多团队,一上来就上Louvain、Label Propagation,结果跑出来的社群全是噪声。为什么?因为建图时没考虑边的权重、时间衰减、关系强度。

1.4 课程整体框架——我们怎么学

这门课,我把它分成四个模块。每个模块解决一个核心问题:

模块核心问题你会学到什么
基础篇图是什么?社群是什么?图论基础、社群定义、团伙欺诈场景
算法篇怎么找到社群?Louvain、Label Propagation、GN算法
实战篇怎么落地到业务?特征提取、模型融合、线上部署
进阶篇怎么应对对抗?动态图、时序图、对抗样本防御

我个人建议,如果你刚接触图算法,先把基础篇吃透。别急着调包跑模型,先把图建好、把特征想清楚。我见过太多人,Louvain跑得飞起,但连模块度是什么意思都说不清楚。嗯,这样不行。

下面这张图,是我自己整理的课程知识体系。你可以把它当成一张地图,随时回来看看自己走到哪了。

社群发现与团伙欺诈识别 · 知识体系 基础篇 图论 · 社群定义 算法篇 Louvain · LPA · GN 实战篇 特征 · 模型 · 部署 进阶篇 动态图 · 对抗 图论基础概念 社群定义 团伙欺诈场景 课程框架 Louvain算法 Label Propagation GN算法 模块度优化 图特征提取 模型融合 线上部署 效果评估 动态图分析 对抗样本防御 核心目标:从图中发现团伙,从团伙中识别欺诈 每个模块都配有真实案例 + 可运行代码 建议按顺序学习,基础不牢地动山摇

这张图里,每个模块之间是递进关系。基础篇打底,算法篇给工具,实战篇教你怎么用,进阶篇帮你应对对抗。我建议你学完一个模块,就回去看看这张图,确认自己没走偏。

学习建议

别急着跑代码。先花一周时间,把图论基础概念吃透。什么叫度?什么叫连通分量?什么叫最短路径?这些概念在后面的算法里会反复出现。我见过太多人,Louvain调参调得飞起,但连「模块度」的物理意义都说不清楚。嗯,这样不行。

专注资料整理