7.2 欺诈检测:用拓扑指纹揪出团伙


文档摘要

7.2 欺诈检测:用拓扑指纹揪出团伙 本节摘要:欺诈者可以伪造身份属性,但很难伪造关联拓扑——一个设备被十个账号共用、一笔资金绕了一圈回到原地,这些"形状"就是指纹。本节讲两类核心指纹(共享实体与环路)的图查询实现,用社区算法批量挖团伙,并给出把图查询接进风控引擎的工程口径。 风控场景的数据通常是账户、设备、IP、银行卡、交易。个体规则(单笔金额异常)早被欺诈者摸透,图的价值在于跨账户的形状——那是团伙作案时藏不住的部分。 一、建模:风控域的图信号 建模口径与推荐场景相反:事件尽量升级为节点或带权边并保留时间属性——风控要回放时间线, 边上的 与 是后续一切时间窗查询的原料。 二、指纹一:共享实体(一号多机,一机多号) 正常用户一台设备一个账号;

7.2 欺诈检测:用拓扑指纹揪出团伙

本节摘要:欺诈者可以伪造身份属性,但很难伪造关联拓扑——一个设备被十个账号共用、一笔资金绕了一圈回到原地,这些"形状"就是指纹。本节讲两类核心指纹(共享实体与环路)的图查询实现,用社区算法批量挖团伙,并给出把图查询接进风控引擎的工程口径。

风控场景的数据通常是账户、设备、IP、银行卡、交易。个体规则(单笔金额异常)早被欺诈者摸透,图的价值在于跨账户的形状——那是团伙作案时藏不住的部分。

一、建模:风控域的图信号

// 风控域建模:账户为中心,设备/IP/卡为共享实体 CREATE (a1:Account {id: 'A-001', openedAt: date('2026-07-01')}) CREATE (a2:Account {id: 'A-002', openedAt: date('2026-07-01')}) CREATE (d:Device {id: 'DEV-X'}) CREATE (b:BankCard {no: '**6208'}) CREATE (a1)-[:USES_DEVICE]->(d) CREATE (a2)-[:USES_DEVICE]->(d) CREATE (a1)-[:OWNS]->(b) CREATE (a2)-[:OWNS]->(b) CREATE (a1)-[:TRANSFER {amt: 9800, at: datetime()}]->(a2)

建模口径与推荐场景相反:事件尽量升级为节点或带权边并保留时间属性——风控要回放时间线,TRANSFER 边上的 atamt 是后续一切时间窗查询的原料。

二、指纹一:共享实体(一号多机,一机多号)

正常用户一台设备一个账号;欺诈团伙批量注册时设备与网络资源必然复用:

// 一台设备被 3 个以上 7 天内新开的账号共用 → 高危信号 MATCH (d:Device)<-[:USES_DEVICE]-(a:Account) WHERE a.openedAt >= date() - duration('P7D') WITH d, collect(a.id) AS accounts, count(a) AS cnt WHERE cnt >= 3 RETURN d.id, accounts, cnt
d.id | accounts | cnt --------|---------------------------------------|---- "DEV-X" | ["A-001", "A-002", "A-003"] | 3
// 变式:两层共享(同设备 + 同收款卡)几乎实锤关联 MATCH (a1:Account)-[:USES_DEVICE]->(d:Device)<-[:USES_DEVICE]-(a2:Account) WHERE id(a1) < id(a2) AND (a1)-[:OWNS]->(:BankCard)<-[:OWNS]-(a2) RETURN a1.id, a2.id, d.id AS 共同设备

单条指纹只够"标记",两条以上叠加才够"拦截"——风控引擎的组合规则就建立在指纹叠加计数上。

三、指纹二:资金环路(钱绕一圈回到原地)

洗钱与虚假交易的经典形状是环路。2.3 节的变长路径在这里正面登场:

// 3~5 跳的资金环路:起点即终点,总额归集 MATCH path = (a:Account)-[:TRANSFER*3..5]->(a) WHERE all(r IN relationships(path) WHERE r.at >= datetime() - duration('P30D')) WITH a, path, reduce(s = 0.0, r IN relationships(path) | s + r.amt) AS 环路金额 RETURN a.id, length(path) AS 跳数, 环路金额 ORDER BY 环路金额 DESC LIMIT 10
a.id | 跳数 | 环路金额 --------|------|--------- "A-001" | 4 | 39200.0 "A-017" | 3 | 28500.0

三个工程要点:上界必须给(2.3 的铁律,交易图极稠密);时间窗必须加(30 天前的环路不是今天的风险);金额用 reduce 沿路径累加,输出物是人能读懂的"这圈转了多少钱"。

图:两类拓扑指纹的形状

图:两类拓扑指纹的形状

四、批量挖团伙:社区算法进场

指纹查的是"已知的形状",社区检测发现"未知的抱团"。5.3 的 Louvain 落到风控图上:

// 投影:账户 + 共享关系(设备/IP/卡都折算成关联) CALL gds.graph.project('risk-net', 'Account', { USES_DEVICE: {orientation:'UNDIRECTED'}, OWNS: {orientation:'UNDIRECTED'} }) // Louvain 社区检测,写回团伙编号 CALL gds.louvain.write('risk-net', { writeProperty: 'gangId', includeIntermediateCommunities: false }) YIELD communityCount, modularity
communityCount: 4122 -- 图被划成四千多个社区 modularity: 0.71 -- 模块度越高,社区划分越"像团伙" 之后按 gangId 聚合 → 每个团伙输出账号清单、共享设备数、总交易额

风控引擎的标准接力:离线跑社区 → 团伙名单进规则引擎 → 命中即进入人工复核队列。图的产出是候选团伙,最终裁决仍留给人与业务规则——这套分工在合规上更站得住。

本节要点回顾

  • 欺诈的软肋在拓扑:属性可伪造,关联形状难伪造;
  • 指纹一共享实体:星形结构 + 新账号时间窗过滤;
  • 指纹二资金环路:变长路径回起点,上界与时间窗缺一不可;
  • 社区算法批量发现未知团伙,图产出候选、规则与人工裁决;
  • 风控建模保留时间与金额属性,方便回放与累加。

欺诈是找"坏结构",下一节的知识图谱是建"好结构"——把事实连成可问答的网。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U