文章

Leiden社区检测应用案例与建边范式简介

Leiden社区检测应用案例与建边范式简介

– title: Leiden社区检测应用案例与建边范式简介 date: 2026-08-10 11:15:00 categories: [AI, ML] tags: [AI, ML, 聚类, Leiden] image: path: /assets/img/posts/common/ml.jpg —

Leiden 社区检测应用案例与建边范式简介

Leiden 在公开竞赛与工业落地中,往往是解题手段而非赛题本身:先按业务规则建边构图,再用社区检测圈出「团伙 / 模块」,最后把社区号、中心性等喂给下游模型或业务系统。本文从 IEEE-CIS 欺诈团伙单细胞 Leiden 特征工程等公开案例出发,归纳可复用的建图范式、数据例子与工程技巧,并说明弱共现边(如同批次事件、同场次)相对「同卡同设备」这类强身份关联,必须加码去噪与边权

最重要的设计决定是:绝大多数人应该没有社群结论。系统要敢于输出「此人无可判定关系」,而不是硬塞进某个群。这一点反直觉,但它决定了整套东西是可信还是虚假繁荣。

参考与延伸阅读


目录


1. 第一原则:建边规则大于算法选型

决定社区检测成败的,往往不是换 Louvain 还是 Leiden,而是:

你怎么定义两个人(或两笔交易)之间的边。

建边质量典型后果
强关联、可区分(同设备、同卡、同订单批次…)Leiden 能切出有业务意义的紧密小团
过宽泛(粗粒度地理属性两两连边、全网共用邮箱域名…)图爆炸或糊成巨型无意义社区,算法再好也救不回

落地流水线应固定为:

1
2
3
4
5
① 业务规则定义建边(强边可独立;宽泛属性只作权重加成)
        ↓
② 基于边规则构图(节点 + 边权;必要时剪超级节点)
        ↓
③ Leiden / Louvain 切社群 → 社区标签、中心性、风险分 / 下游特征

2. 核心范式:共享实体建图 → 社区 → 特征

公开案例与工业方案高度同构,可概括为:

1
2
3
4
5
6
7
实体 / 事件表
    ↓ 共享实体 = 连边(异构图或投影到同构图)
人—人 或 交易—交易 关系图
    ↓ Leiden / Louvain 社区检测
Fraud Island / 共现团伙 / 功能模块
    ↓ 社区大小、密度、中心性、已知标签率…
复合风险分 或 喂给 XGBoost / 业务看板
步骤含义
共享实体建边不靠「全员两两算相似度」,而靠「共同指向同一卡/设备/事件批次」间接相连
社区 = 团伙雏形共享中枢实体的稠密小团,往往是异常团伙或功能模块
图指标当特征社区号、度、PageRank、社区内已知坏样本率 → 提升下游识别或关联扩展

3. 案例一:IEEE-CIS 欺诈团伙检测

IEEE-CIS Fraud Detection 是与「关系型团伙发现」最同构的公开赛之一。Kaggle 上几乎没有以 Leiden 为题目的比赛;Leiden / Louvain 出现在选手与厂商的图方案中,用来圈 Fraud Rings / Fraud Islands

3.1 有哪些数据(与建图相关)

本质是「交易表 + 身份/设备相关字段」。能把不同交易串起来的,是共享实体

字段含义图里的角色
TransactionID交易 ID交易节点
isFraud是否欺诈(有标签)监督目标 / 标签传导
card1card6卡信息卡实体
addr1 / addr2账单地址地址实体
P_emaildomain付款邮箱域名邮箱实体
DeviceInfo / DeviceType设备设备实体
TransactionDT交易时间时间窗 / 边权

3.2 怎么建边:共享实体 = 连边

不是「交易两两算相似度」,而是建异构图(或再投影成交易—交易同构图):

1
2
3
(交易 T1) ──USED_CARD──> (卡 C_1001)
(交易 T1) ──USED_DEVICE─> (设备 D_安卓X)
(交易 T1) ──USED_EMAIL──> (邮箱 proton.com)

若 T2 也指向同一设备 / 邮箱 / 地址,则 T1 与 T2 间接相连

3.3 具体数据例子

交易card1设备邮箱addr1isFraud
T1C_1001D_安卓Xproton.com999?
T2C_1002D_安卓Xproton.com999?
T3C_1003D_安卓Xproton.com9991(已知欺诈)
T4C_1004D_安卓Xproton.com999?
T5C_5555D_iPhone私人grace@gmail2040

建边后的结构示意:

1
2
3
4
5
6
7
        C_1001   C_1002   C_1003(欺诈)   C_1004
            \       |         |         /
             ▶──── 设备 D_安卓X ────◀     (多张卡共用一台设备)
             ▶──── 邮箱 proton.com ──◀
             ▶──── 地址 999 ────────◀

        C_5555 ── D_iPhone私人 ── grace@gmail   (一人一卡一设备)

3.4 切出怎样的社群

社区成员(示意)业务解读
社区 A(Fraud Island)多张卡 + 同一设备 + 同一邮箱 + 同一地址小而极密;内含已知欺诈 → 风险可传导给同社区未知交易
社区 B(正常)一卡一设备一邮箱孤立小社区,符合「正常人一张卡配自己的设备」

抓团伙的本质:正常人是「一张卡配一台自己的设备」;欺诈团伙常是「一台设备 / 一个邮箱后面挂了一堆卡」——共享中枢实体的稠密小团 = Fraud Ring。

Neo4j 等方案还会用 PageRank、中心性等找中枢设备,再把社区特征喂给树模型;开源复现可见 finance-ieee-cis-fraud


4. 从欺诈图映射到弱共现团伙

把 IEEE-CIS 的「交易—卡—设备」换成「主体—共享事件 / 共享群组」等共现关系,整套 pipeline 可几乎平移。以下为通用映射(非特定行业配置)。

4.1 对应表(可直接当建模蓝图)

IEEE-CIS 做法弱共现 / 事件共现场景对应
交易节点 + 共享实体(卡 / 设备 / 邮箱)主体节点 + 共享事件(订单批次、场次 ID、群组号、会话…)
两笔交易共用一张卡 → 连边两主体共享同一事件 / 群组 → 连边
Louvain / Leiden 切 Fraud IslandLeiden 切共现团伙 / 关系模块
设备节点的度 = 一台设备挂多少卡共享枢纽节点的度 = 挂接了多少主体
PageRank 找中枢设备PageRank / 介数找枢纽节点、关键联络点
社区大小 / 密度 / 内部欺诈率 → 特征社区大小 / 密度 / 已知坏样本率 → 复合风险分

4.2 建边强度分级(务必区分强弱)

边类型(示意)建议说明
强身份 / 强组织共现(同设备、同明确群组号)强边,可直接建关联可解释、区分度高
同批次事件(同日同场次等)可建边,建议加权常见共现,但可能含大量偶然同场
同地点粗粒度 + 同时间窗弱边宜要求跨窗口复现再加权
粗粒度人口 / 地理属性一致仅对已有边加成不单独建边
过宽泛属性(如省级地理分区)禁止单独建边易图爆炸、切出无意义巨型社区

原则:强边可独立成立;弱边需组合或复现;宽泛属性只作加成。

4.3 必须改造的关键差异(不能照搬)

维度IEEE-CIS弱共现场景影响
标签isFraud,可有监督多数场景弱标签 / 无标签更依赖无监督社区 + 结构异常;标签多用于传导与验证
边的可靠性同卡 ≈ 强身份关联同场次 / 同批次 = 关联(无关主体也可同场)去噪、边权、复现次数比欺诈图更关键
正交信号主要靠图常可叠行为规则、密度聚类等图 + 行为交叉,信号更丰富

一句话:IEEE-CIS 的边「天然偏强」,弱共现边「天然偏弱」——所以更吃建边定义与去噪,再次回到第一原则。

4.4 可复用技术栈

层级建议
算法Louvain 作基线 → Leiden 作升级(API 接近)
实现python-igraph + leidenalg
存储小图内存跑;需多跳查询(「与已知坏样本 2 跳内共现」)可上 Neo4j GDS 等

5. 案例二:单细胞基因组学中的 Leiden 特征

Open Problems – Multimodal Single-Cell 等赛题中,Leiden 是该领域标准聚类手段之一。对团伙检测更有启发的是:社区结果如何变成模型特征,而不是细胞生物学细节本身。

以第 3 名方案为例(writeup / 代码)常见套路:

1
2
3
4
5
邻居图 / 相似度图
    ↓ Leiden 聚类(如聚成数十个社区)
社区标签
    ↓ 社区内均值聚合、再 SVD 等降维
进入下游预测模型的特征
单细胞做法欺诈 / 共现团伙侧类比
Leiden 社区 IDcommunity_id
社区均值向量社区级统计:规模、密度、平均中心性、已知坏样本率
降维后喂模型拼进分类模型或排序打分

看点:社区不是终点;社区 → 特征 / 风险分 才对应完整闭环。调参上可参考 scanpy 聚类教程resolution 与社区粒度的对比。


6. 工程技巧清单

6.1 超级节点剪枝(最重要)

领域典型超级节点若不处理
欺诈图gmail.com 等超高邮箱域名全图糊成一团
弱共现图超大场次、高频热点场所、巨型群组数百人同场两两连边 ≈ 数万噪声边

对策(可组合)

  • 高频共享实体剪除或大幅降权
  • 「共现次数 ≥ N」才建边
  • 大群组改为星型(成员连枢纽)或按子结构拆分
  • 宽泛属性(如粗粒度地理分区)绝不单独建边,仅作已有边加成

6.2 标签传导(Label Propagation)

社区内若有 1 个已知坏样本(如已标注欺诈交易),可抬升整社区风险分,将其余成员排入优先复核队列。适合「标签稀疏、需要关联扩展」的场景。

注意:无标签时不能虚构传导;有标签时也要防超级节点把风险误传到大规模正常样本。

6.3 图指标进下游

指标用途
社区大小 / 密度区分「松散大团」与「紧密小团伙」
节点度 / PageRank / 介数找中枢设备、枢纽节点
社区内已知坏样本率有监督或半监督风险分
community_id 本身类别特征或分组统计

6.4 与行为规则正交时的高价值信号

若流水线中同时有「单实体行为规则」(如个体行为模式检测)与「主体—主体社区」:

行为上像噪声(未命中规则)+ 结构上社区很紧密,往往是高价值可疑信号——可能在规避规则,但仍与固定一批主体反复共现。

「是否命中行为规则」与「是否有共现边」是两个正交维度,交叉分析通常比单路算法更稳。


7. 公开资源与选型建议

7.1 图 / 欺诈团伙(与弱共现场景最同构)

资源链接对应步骤
IEEE-CIS 比赛https://www.kaggle.com/c/ieee-fraud-detection建图 → 社区圈团伙范式
IEEE-CIS 数据说明https://www.kaggle.com/c/ieee-fraud-detection/data关系字段如何组织
Neo4j 官方图方案https://neo4j.com/developer/industry-use-cases/finserv/retail-banking/ieee-cis-fraud-graphs/社区 + 中心性找 Fraud Ring
GitHub 复现https://github.com/pedroleitao-neo4j/finance-ieee-cis-fraud工程落地参考

7.2 单细胞(学「社区 → 特征」)

资源链接看点
Open Problems Multimodalhttps://www.kaggle.com/competitions/open-problems-multimodalLeiden 为领域标配
第 3 名方案https://www.kaggle.com/competitions/open-problems-multimodal/writeups/makotu-3rd-place-solution社区结果造特征
第 3 名代码https://github.com/makotu1208/open-problems-multimodal-3rd-solution特征工程实现

7.3 算法与调参

资源链接看点
Leiden 论文https://www.nature.com/articles/s41598-019-41695-z三阶段原理
leidenalghttps://github.com/vtraag/leidenalgPython 主力实现
文档https://leidenalg.readthedocs.io/en/latest/intro.htmlModularity / CPM / 分辨率
scanpy 聚类教程https://scanpy.readthedocs.io/en/stable/tutorials/basics/clustering.htmlresolution 控粒度

7.4 继续挖掘

  • Notebook 搜索 Leiden:https://www.kaggle.com/search?q=leiden+in%3Anotebooks
  • 社区检测:https://www.kaggle.com/search?q=community+detection
  • Louvain(案例更多、思路互通):https://www.kaggle.com/search?q=louvain

7.5 想看什么 → 读哪条线

目标优先阅读
社区检测怎么抓团伙§3 IEEE-CIS + Neo4j 图方案
社区结果如何变特征 / 风险分§5 Open Problems 第 3 名
弱共现场景如何建边去噪§4、§6 超级节点与强弱边
resolution 怎么调scanpy 教程 + leidenalg 文档

8. 小结

要点结论
Leiden 在公开赛中的角色多为手段;欺诈团伙图方案与弱共现场景最同构
核心范式共享实体建图 → 社区切团伙 → 图指标当特征 / 风险分 → 可选标签传导
IEEE-CIS 可照搬的骨架把「交易—卡—设备」换成「主体—共享事件 / 群组」
必须额外加码处弱共现边天然偏弱 → 建边规则、去噪、超级节点剪枝
第一原则建边规则 > 算法选型;宽泛属性只加成、不单独建边

9. 参考与来源

资源链接
Leiden 论文https://www.nature.com/articles/s41598-019-41695-z
leidenalghttps://github.com/vtraag/leidenalg
IEEE-CIS Fraud Detectionhttps://www.kaggle.com/c/ieee-fraud-detection
Neo4j IEEE-CIS 图方案https://neo4j.com/developer/industry-use-cases/finserv/retail-banking/ieee-cis-fraud-graphs/
Open Problems Multimodal 第 3 名https://www.kaggle.com/competitions/open-problems-multimodal/writeups/makotu-3rd-place-solution
scanpy 聚类教程https://scanpy.readthedocs.io/en/stable/tutorials/basics/clustering.html
本文由作者按照 CC BY 4.0 进行授权