Skip to content

Latest commit

 

History

History
852 lines (644 loc) · 28.9 KB

File metadata and controls

852 lines (644 loc) · 28.9 KB
sidebar_position 5

Clustering & Community 聚类与社区算子集

算子类别:Clustering & Community(聚类系数、社区发现、传递性与环结构)

算法数量:23 个

适用阶段:网络结构洞察、圈层/团伙识别、群落质量评估、闭环/循环检测、关系紧密度量化、图划分优化、二部图社区分析

产品定位:为“网络是否存在紧密小圈子 / 如何把人群或实体切成社区 / 这个切法好不好 / 是否存在闭环循环 / 如何做二分或多社区划分 / 如何识别三元结构模式”提供统一算子能力底座。


一、算子集概述

Clustering & Community 算子集覆盖四大类能力:

  1. 局部紧密度与网络聚集性

    • 节点邻居之间是否彼此相连?
    • 网络整体三角闭合程度如何?
    • 是否存在小圈子、团伙或局部高密度结构?
    • 典型算法:clustering, average_clustering, triangles, transitivity, square_clustering
  2. 社区发现与图划分

    • 在没有标签的情况下,如何自动发现社区、阵营、圈层?
    • 如何进行大规模网络快速社区划分?
    • 如何进行二分划分或指定社区数量划分?
    • 典型算法:greedy_modularity_communities, naive_greedy_modularity_communities, louvain_communities, leiden_communities, girvan_newman, label_propagation_communities, asyn_lpa_communities, asyn_fluidc, kernighan_lin_bisection
  3. 可重叠社区与二部图社区分析

    • 一个节点是否可以同时属于多个社区?
    • 二部图如何进行模块度意义下的二分划分?
    • 典型算法:k_clique_communities, spectral_modularity_bipartition
  4. 环结构与循环检测

    • 图中有哪些简单环?
    • 无向图的基础环集合是什么?
    • 是否存在最小权重环基?
    • 典型算法:simple_cycles, cycle_basis, minimum_cycle_basis
  5. 社区结果评估与合法性校验

    • 社区划分质量如何?
    • 是否是严格分区?
    • 组内边是否足够多,组间边是否足够少?
    • 典型算法:modularity, partition_quality, is_partition
  6. 三元结构模式分析

    • 有向图中三节点之间有哪些典型结构模式?
    • 网络是否存在闭合三元组、传递关系、循环三元组?
    • 典型算法:triadic_census

二、算子能力分类

能力类型 对应算子 功能描述
节点聚类系数 clustering 计算指定节点或全部节点的局部聚类系数
平均聚类系数 average_clustering 计算全图或指定节点集合的平均聚类系数
三角闭合计数 triangles 统计节点参与的三角形数量
全局传递性 transitivity 计算网络整体三角闭合程度
四环聚类 square_clustering 计算节点参与 4-cycle 的局部冗余结构倾向
社区发现-贪心模块度 greedy_modularity_communities Clauset-Newman-Moore 贪心合并最大化模块度
社区发现-朴素贪心模块度 naive_greedy_modularity_communities 使用朴素贪心策略进行模块度优化,适合教学或小图验证
社区发现-分层拆分 girvan_newman 迭代移除关键边,得到层级社区结构
社区发现-同步标签传播 label_propagation_communities 通过邻居多数标签扩散形成社区
社区发现-异步标签传播 asyn_lpa_communities 异步更新标签传播,支持权重和随机种子
社区发现-k clique k_clique_communities 基于 k 团渗透发现可重叠社区
社区发现-Louvain louvain_communities 多层模块度优化,适合大图快速社区划分
社区发现-Leiden leiden_communities Louvain 改进版,更稳定并强调社区内部连通性
社区发现-异步流体 asyn_fluidc 基于流体扩散思想划分指定数量社区
图二分划分 kernighan_lin_bisection 使用 Kernighan-Lin 启发式将图划分为两个部分
二部图谱模块度二分 spectral_modularity_bipartition 基于谱方法对二部图进行模块度二分
环结构-简单环枚举 simple_cycles 枚举图中的所有简单环
环结构-环基 cycle_basis 输出无向图的基础环集合
环结构-最小环基 minimum_cycle_basis 输出无向图中总权重较小的环基
三元结构普查 triadic_census 统计有向图中不同三节点结构模式数量
方案质量-模块度 modularity 对给定社区划分计算模块度 Q 值
方案质量-覆盖/性能 partition_quality 计算社区划分的 coverage 和 performance
方案合法性 is_partition 检查社区列表是否为严格 partition

三、通用输入输出约定

  • 输入 G:NetworkX Graph / DiGraph

    • 聚类系数多数用于无向图,也可支持部分有向或加权形式
    • 简单环枚举常用于有向图,也可用于部分无向场景
    • 社区发现多数用于无向图
    • 二部图相关算法要求输入符合二部图结构
  • 常见输出

    • 指标类:float
    • 计数类:dict / int
    • 社区结果:list[set] / iterable[set] / iterator[tuple[set]]
    • 环结构:list[list[node]] 或迭代器
    • 二分结果:tuple[set, set]
    • 校验类:bool

说明:

  • 社区发现算法的输出通常是节点集合列表。
  • k_clique_communities 允许重叠社区,因此其结果不一定满足严格 partition。
  • 模块度、覆盖率、性能等评估指标通常要求社区结果覆盖全部节点且互不重叠。
  • 环枚举和 clique 类算法可能产生指数级结果,大图中应设置限制或先做子图筛选。

四、算子详细说明

4.1 局部紧密度与聚集性

1. clustering —— 节点聚类系数

功能说明
计算节点聚类系数,衡量一个节点的邻居之间互相连接的比例,也就是“邻居是否也彼此认识”。

产品价值

  • 识别紧密朋友圈或局部团伙核心
  • 发现高密度关系区域中的关键节点
  • 可作为反欺诈、社群分析和推荐系统的结构特征

典型场景

  • 社交网络:找朋友圈最紧密的用户
  • 交易网络:识别闭合交易关系中的账户
  • 合作网络:发现高协作密度成员
  • 风控网络:识别局部团伙结构

关键参数

  • nodes:单个节点、多节点或全图
  • weight:边权,表示关系强度

适用与特性

  • 图类型:无向图为主
  • 输出:{node: score} 或单节点分数
  • 复杂度:通常与节点度数平方相关

2. average_clustering —— 平均聚类系数

功能说明
返回全图或指定节点集合的平均聚类系数,取值通常在 0 到 1 之间,用于概括网络整体抱团程度。

产品价值

  • 一句话概括网络整体聚集程度
  • 适合跨网络、跨时间窗口、跨区域对比
  • 可用于监控网络是否出现团伙化或圈层化趋势

典型场景

  • 社交网络整体抱团程度评估
  • 风控网络团伙化趋势监测
  • 不同城市路网局部冗余程度对比
  • 组织协作网络紧密程度比较

关键参数

  • nodes:只计算某个子群
  • weight:考虑关系强度
  • count_zeros:是否将聚类系数为 0 的节点计入平均值

适用与特性

  • 图类型:无向图为主
  • 输出:float
  • 复杂度:通常与节点度数平方相关

3. transitivity —— 全局传递性

功能说明
计算网络整体传递性,即闭合三元组占所有三元组的比例,用于衡量全局“三角闭合”程度。

产品价值

  • 判断网络整体是否具有“朋友的朋友也是朋友”的倾向
  • 可用于分析网络是否更像随机网络、小世界网络或团伙网络
  • 适合全局结构特征建模

典型场景

  • 社交网络:整体三角闭合程度
  • 合作网络:合作关系是否容易形成三人闭环
  • 风控网络:资金或账户是否形成闭合结构
  • 知识网络:概念之间是否形成高度传递关系

适用与特性

  • 图类型:无向图为主
  • 输出:float
  • 复杂度:通常与三角形计数相关

4. triangles —— 三角形数量统计

功能说明
统计每个节点参与的三角形数量,或返回指定节点的三角形数。

产品价值

  • 三角形越多,节点越处于闭合小圈子中
  • 可作为团伙识别、局部密度和社群核心判断特征
  • 与聚类系数配合可以区分“连接多”和“连接紧密”

典型场景

  • 社交网络:参与多个朋友圈闭环的用户
  • 交易网络:闭合交易关系中的账户
  • 合作网络:频繁形成三方合作的小组成员
  • 推荐网络:共同兴趣闭环分析

关键参数

  • nodes:单节点、多节点或全图

适用与特性

  • 图类型:无向图
  • 输出:dictint
  • 复杂度:通常与节点度数和边数相关

5. square_clustering —— 四环聚类系数

功能说明
衡量节点参与四元环结构的倾向。四环结构常用于表示两条不同路径连接同一目标的局部冗余关系。

产品价值

  • 适合分析二部图或近似二部结构中的闭合关系
  • 可发现局部替代路径和结构冗余
  • 在用户-商品、作者-论文、账户-设备等网络中比三角形更有解释力

典型场景

  • 用户-商品网络:多个用户共同购买多个商品
  • 作者-论文网络:多个作者共同参与多篇论文
  • 账户-设备网络:多个账户共享多个设备
  • 路网分析:局部替代路径冗余

关键参数

  • nodes:只计算部分节点

适用与特性

  • 图类型:无向图为主
  • 输出:{node: score}
  • 复杂度:通常与局部邻域规模相关

4.2 社区发现与图划分

6. greedy_modularity_communities —— 贪心模块度社区

功能说明
通过贪心合并策略最大化模块度,输出社区列表。该算法从小社区开始逐步合并,使模块度提升最大。

产品价值

  • 经典、稳定、解释性较强
  • 适合中大规模无向图的默认社区发现
  • 支持通过分辨率参数控制社区尺度

典型场景

  • 社交网络自然圈层识别
  • 交易网络团伙初筛
  • 企业关系网络集团划分
  • 知识网络主题簇识别

关键参数

  • weight:边权
  • resolution:社区尺度,较大通常得到更小社区
  • cutoff:最少社区数量
  • best_n:最多社区数量

适用与特性

  • 图类型:无向图
  • 输出:list[set]
  • 适合:中大规模社区划分

7. girvan_newman —— Girvan-Newman 分层社区

功能说明
迭代移除最关键边,默认通常选择边介数最高的边,使图逐步分裂,从而得到从粗到细的层级社区结构。

产品价值

  • 解释性强,适合展示社区如何被拆分
  • 能输出多层级社区方案
  • 适合小图或需要层次结构说明的场景

典型场景

  • 小规模组织关系拆分
  • 复杂网络教学演示
  • 关键边驱动的社群分裂分析
  • 需要可解释拆分路径的风控调查

关键参数

  • most_valuable_edge:自定义最关键边选择策略

适用与特性

  • 图类型:无向图
  • 输出:社区划分迭代器
  • 注意:复杂度较高,不适合超大图

8. label_propagation_communities —— 同步标签传播社区

功能说明
基于邻居多数标签扩散形成社区。节点不断根据邻居标签更新自身标签,最终相同标签的节点形成社区。

产品价值

  • 无需指定社区数量
  • 速度快,适合大图快速粗分群
  • 可作为后续精细社区发现的预处理结果

典型场景

  • 大规模社交网络快速圈层划分
  • 推荐系统用户兴趣群初筛
  • 通信网络粗粒度分区
  • 风控网络团伙候选发现

适用与特性

  • 图类型:无向图
  • 输出:generator[set(node)]
  • 复杂度:每轮通常 O(V + E)

9. asyn_lpa_communities —— 异步标签传播社区

功能说明
异步更新节点标签的标签传播算法。更新顺序会影响结果,可通过随机种子提高可复现性,也可通过权重影响邻居标签的重要性。

产品价值

  • 相比同步标签传播更灵活
  • 支持权重和随机性控制
  • 适合大图快速社区发现

典型场景

  • 权重社交网络圈层发现
  • 大规模交易网络初步团伙识别
  • 组织沟通网络快速分群
  • 推荐网络兴趣社区划分

关键参数

  • weight:边权影响标签传播
  • seed:随机种子,控制结果可复现性

适用与特性

  • 图类型:无向图
  • 输出:generator[set(node)]
  • 复杂度:每轮通常 O(V + E)

10. k_clique_communities —— k 团渗透社区

功能说明
以 k-clique 为基本单元,若两个 k-clique 共享 k-1 个节点,则它们属于同一社区。该方法允许节点属于多个社区。

产品价值

  • 适合发现非常紧密的核心圈子
  • 支持重叠社区,更符合真实社交和合作网络
  • 对团伙、共谋、小团体识别具有较强解释性

典型场景

  • 社交网络:允许一个人属于多个朋友圈
  • 合作网络:作者参与多个研究团队
  • 风控网络:账户同时参与多个团伙结构
  • 生物网络:蛋白参与多个功能模块

关键参数

  • k:最小 clique 大小,越大越严格
  • cliques:可传入预计算 clique 列表以减少重复计算

适用与特性

  • 图类型:无向图
  • 输出:generator[frozenset(node)]
  • 注意:结果可重叠,不一定是严格 partition

11. louvain_communities —— Louvain 社区

功能说明
经典多层模块度优化方法。算法先进行局部节点移动提升模块度,再将社区压缩为超节点进行多层优化。

产品价值

  • 工业界常用的大图社区发现算法
  • 速度快,效果通常较好
  • 支持多层社区结构和分辨率控制

典型场景

  • 大规模社交网络社区划分
  • 交易网络团伙识别
  • 通信网络结构分区
  • 知识图谱主题社区发现

关键参数

  • weight:边权
  • resolution:社区尺度
  • threshold:模块度提升阈值
  • max_level:最大层数
  • seed:随机种子

适用与特性

  • 图类型:无向图
  • 输出:list[set]
  • 特点:结果可能受随机性影响,建议设置 seed

12. leiden_communities —— Leiden 社区

功能说明
Leiden 是 Louvain 的改进方法,通常更稳定,并强调社区内部连通性,避免出现内部断裂但仍被划为同一社区的问题。

产品价值

  • 社区质量通常比 Louvain 更稳健
  • 适合对社区内部连通性有要求的场景
  • 更适合严谨的社区结构分析和产品化输出

典型场景

  • 大规模社交网络严谨分群
  • 金融风控团伙识别
  • 生物网络功能模块识别
  • 组织网络稳定圈层划分

关键参数

  • weight:边权
  • resolution:社区尺度
  • max_level:最大层数
  • seed:随机种子

适用与特性

  • 图类型:无向图
  • 输出:list[set]
  • 特点:通常比 Louvain 更稳定

13. naive_greedy_modularity_communities —— 朴素贪心模块度社区

功能说明
使用朴素贪心方式进行模块度优化。相比优化版本更直观,但性能较弱,更适合教学、小图验证或算法结果对照。

产品价值

  • 算法逻辑更容易解释
  • 适合小规模图上的社区发现验证
  • 可作为贪心模块度算法的参考实现或对照方案

典型场景

  • 小规模网络社区划分
  • 教学演示模块度最大化过程
  • 与优化版贪心模块度算法做结果对比
  • 调试社区划分逻辑

关键参数

  • weight:边权
  • resolution:社区尺度

适用与特性

  • 图类型:无向图
  • 输出:社区集合列表
  • 注意:不建议用于超大图

14. spectral_modularity_bipartition —— 谱模块度二分

功能说明
基于谱方法对二部图进行模块度意义下的二分划分,将节点划分为两个模块。

产品价值

  • 适合二部图结构的社区划分
  • 能保留用户-物品、作者-论文等两侧关系的原始结构
  • 避免直接投影到单侧图造成信息损失

典型场景

  • 用户-商品网络社区划分
  • 作者-论文网络研究方向划分
  • 机构-项目网络模块识别
  • 账户-设备网络风险簇拆分

适用与特性

  • 图类型:二部图
  • 输出:二分结果
  • 适合:二部图模块度分析

15. asyn_fluidc —— 异步流体社区

功能说明
基于流体扩散思想进行社区发现。用户需要指定社区数量 k,算法通过异步更新逐步形成指定数量的社区。

产品价值

  • 可以显式控制社区数量
  • 速度较快,适合需要固定分群数量的场景
  • 与标签传播类算法一样,适合作为快速社区划分方法

典型场景

  • 需要固定划分为 K 个区域的网络
  • 用户分群数量已知的推荐系统
  • 运维网络固定分区
  • 风控策略中按指定数量生成候选团伙

关键参数

  • k:需要划分的社区数量
  • max_iter:最大迭代次数
  • seed:随机种子

适用与特性

  • 图类型:通常要求连通无向图
  • 输出:iterable[set(node)]
  • 注意:需要提前指定社区数量

16. kernighan_lin_bisection —— Kernighan-Lin 二分划分

功能说明
使用 Kernighan-Lin 启发式方法将图划分为两个部分,目标是减少两个部分之间的割边权重。

产品价值

  • 适合图二分、负载均衡和任务拆分
  • 可用于需要两个区域、两组节点或二分实验的场景
  • 比单纯社区发现更偏向“平衡切分”或“降低跨组连接”

典型场景

  • 计算任务图二分调度
  • 网络分区与负载均衡
  • A/B 分组中的结构化拆分
  • 电路或模块划分

关键参数

  • partition:可传入初始二分
  • max_iter:最大迭代次数
  • weight:边权
  • seed:随机种子

适用与特性

  • 图类型:无向图
  • 输出:tuple[set, set]
  • 特点:启发式算法,不保证全局最优

4.3 环结构与循环检测

17. simple_cycles —— 简单环枚举

功能说明
枚举图中的所有简单环。简单环指起点和终点相同,且中间节点不重复的环路。

产品价值

  • 发现资金回流、循环交易、循环依赖
  • 识别反馈回路和闭环传播结构
  • 可用于有向网络中的闭环风险排查

典型场景

  • 资金网络:循环交易链路
  • 软件依赖:循环依赖链
  • 生物网络:反馈调控环
  • 流程网络:异常闭环流程

关键参数

  • length_bound:限制环长度,避免输出爆炸

适用与特性

  • 图类型:有向图为主
  • 输出:环路径迭代器或列表
  • 注意:环数量可能非常多,建议设置长度上限

18. cycle_basis —— 环基

功能说明
为无向图输出一个 cycle basis,即能够组合生成所有环的基础独立环集合。

产品价值

  • 将复杂环结构分解为基础构件
  • 适合电路、路网、管网等环状结构分析
  • 比枚举所有环更适合做结构摘要

典型场景

  • 电路网络:基础回路分析
  • 道路网络:基本闭合街区识别
  • 管网系统:基础环路结构识别
  • 关系网络:基础闭环结构摘要

关键参数

  • root:可选起始节点

适用与特性

  • 图类型:无向图
  • 输出:list[list[node]]

19. minimum_cycle_basis —— 最小环基

功能说明
输出无向图的最小环基,即在权重意义下总长度或总成本较小的一组基础环。

产品价值

  • 相比普通环基,更偏向选择成本更低、规模更小或权重更优的基础环集合
  • 适合需要最简闭环解释的场景
  • 可用于电路、路网、管网中的低成本环结构分析

典型场景

  • 电路网络:最小基础回路分析
  • 路网网络:最短闭合街区识别
  • 管网系统:低成本基础环路分析
  • 化学结构:最小环系统识别

关键参数

  • weight:边权字段,表示距离、成本或长度

适用与特性

  • 图类型:无向图
  • 输出:list[list[node]]
  • 适合:中小规模图或需要最小闭环摘要的场景

20. triadic_census —— 三元结构普查

功能说明
统计有向图中所有三节点子图的结构类型数量。不同三元组模式可表示互惠、传递、循环、空连接等不同关系形态。

产品价值

  • 从三节点模式层面刻画有向网络结构
  • 可用于判断网络是否偏向传递关系、循环关系或互惠关系
  • 适合社交、交易、通信、组织和生态网络的微观结构分析

典型场景

  • 社交网络:互粉、单向关注、三人闭环模式统计
  • 交易网络:三账户循环交易结构分析
  • 组织网络:层级传递关系和反馈关系识别
  • 通信网络:三节点消息流模式分析

适用与特性

  • 图类型:有向图
  • 输出:三元组类型计数字典
  • 适合:微观结构模式统计和网络画像

4.4 社区结果评估与校验

21. modularity —— 模块度评分

功能说明
对给定社区划分计算模块度 Q 值,衡量社区内部边是否多于随机期望、社区之间边是否相对较少。

产品价值

  • 为社区划分提供统一质量评分
  • 适合比较不同社区发现算法或不同参数结果
  • 是 Louvain、Leiden、贪心模块度等算法的核心优化目标

典型场景

  • 比较 Louvain 与 Leiden 的社区划分质量
  • 调整 resolution 参数后选择更合适的结果
  • 评估人工分群是否符合网络结构
  • 社区发现结果上线前质量校验

关键参数

  • communities:社区列表,通常应为严格 partition
  • weight:边权
  • resolution:分辨率参数

适用与特性

  • 输出:float
  • 注意:模块度越高通常越好,但需结合业务场景和社区尺度解释

22. partition_quality —— 覆盖率与性能

功能说明
计算社区划分的两个质量指标:

  • coverage:社区内部边占全部边的比例
  • performance:社区内部边和社区外部非边在所有节点对中的比例

产品价值

  • 从不同角度评估社区划分质量
  • coverage 强调组内连接是否多
  • performance 同时考虑组内连接和组间分离是否合理

典型场景

  • 社区划分方案质量评估
  • 人工分群与算法分群对比
  • 社群边界清晰度判断
  • 风控团伙切分效果评估

适用与特性

  • 输入:社区划分
  • 输出:(coverage, performance)
  • 注意:通常要求社区划分为严格 partition

23. is_partition —— 分区合法性校验

功能说明
检查给定社区列表是否为严格 partition,即是否覆盖全部节点且各社区之间互不重叠。

产品价值

  • 社区评估前的基础校验
  • 防止漏节点、重复分配节点导致指标失真
  • 适合社区发现结果进入下游流程前做质量检查

典型场景

  • 检查算法输出是否覆盖所有用户
  • 检查人工分群是否有重复成员
  • 在计算 modularity 前验证社区结果
  • 社区结果写入数据库前做合法性校验

适用与特性

  • 输入:图和社区列表
  • 输出:bool
  • 注意:可重叠社区如 k_clique_communities 通常不满足严格 partition

五、推荐使用指南(选型建议)

  • 想先衡量网络是否抱团

    • 全局抱团程度:average_clustering / transitivity
    • 局部抱团程度:clustering
    • 三角闭合结构:triangles
    • 四环冗余结构:square_clustering
  • 想快速得到社区

    • 大图默认优先:louvain_communities / leiden_communities
    • 快速粗分群:label_propagation_communities / asyn_lpa_communities
    • 指定社区数量:asyn_fluidc
  • 想要解释性或层级拆分

    • 分层社区:girvan_newman
    • 二分划分:kernighan_lin_bisection
    • 小图贪心验证:naive_greedy_modularity_communities
  • 想找重叠小圈子

    • 可重叠紧密社区:k_clique_communities
  • 想处理二部图社区

    • 二部图谱模块度二分:spectral_modularity_bipartition
  • 想查闭环、循环依赖或资金回流

    • 所有简单环:simple_cycles
    • 基础环集合:cycle_basis
    • 最小基础环集合:minimum_cycle_basis
  • 想做三节点模式分析

    • 有向三元结构统计:triadic_census
  • 想评估社区结果

    • 模块度:modularity
    • 覆盖率与性能:partition_quality
    • 合法性校验:is_partition

六、可直接回答的典型问题(示例)

  • “网络整体更像松散随机还是小世界?给我一个总体指标。”
  • “哪些节点的朋友圈最紧?列 Top-20 聚类系数。”
  • “哪些节点参与最多三角形?”
  • “这个二部网络是否存在明显四环冗余结构?”
  • “把网络自动分成几个自然社区,并输出每个社区成员。”
  • “用 Louvain 和 Leiden 分别划分社区,并比较模块度。”
  • “我希望固定分成 5 个社区,应该怎么划分?”
  • “把图二分成两个部分,尽量减少跨组连接。”
  • “找允许重叠的核心小圈子。”
  • “这个社区结果是不是严格分区?有没有漏节点或重复分配?”
  • “我有两种社区划分方案,哪个更好?给出 modularity 和 coverage/performance。”
  • “找出所有资金闭环或循环依赖链路,并限制环长度不超过 6。”
  • “输出无向图的最小环基,用于分析基础闭环结构。”
  • “统计有向图中的三元结构模式,看看传递关系和循环关系分别有多少。”

七、工程落地注意事项

  1. 先明确分析目标

    • 聚类系数回答“局部关系是否紧密”。
    • 社区发现回答“节点如何自然分组”。
    • 环结构算法回答“是否存在闭环或循环路径”。
    • 社区评估算法回答“这个划分好不好”。
  2. 社区发现算法没有唯一正确答案

    • Louvain、Leiden、标签传播、Girvan-Newman 机制不同,结果可能不同。
    • 建议结合 modularitypartition_quality 和业务解释综合选择。
    • 随机算法建议设置 seed 保证可复现。
  3. 大图优先选择高效算法

    • 大规模图优先使用 louvain_communitiesleiden_communitiesasyn_lpa_communities
    • girvan_newman 解释性强,但更适合小图。
    • clique、环枚举类算法在大图中可能非常慢。
  4. 重叠社区与严格分区要区分

    • k_clique_communities 允许节点属于多个社区。
    • modularitypartition_qualityis_partition 通常面向严格 partition。
    • 不要用严格分区指标直接评估重叠社区,除非先做转换。
  5. 二部图不要随意投影

    • 用户-商品、作者-论文等二部图投影后可能产生大量虚假边。
    • 二部图社区分析优先考虑 spectral_modularity_bipartition 等保留二部结构的方法。
    • 如需投影,应明确投影规则和边权含义。
  6. 环结构算法要控制输出规模

    • simple_cycles 的结果数量可能指数级增长。
    • 工程中建议使用 length_bound 或先筛选子图。
    • 若只需要结构摘要,无向图可优先使用 cycle_basisminimum_cycle_basis
  7. 三角形、四环、三元组适合做结构特征

    • trianglessquare_clusteringtriadic_census 可作为机器学习或风控规则特征。
    • 它们不一定直接给出社区,但能刻画局部模式和结构异常。
  8. 模块度存在分辨率限制

    • resolution 会影响社区大小。
    • 较高 resolution 往往得到更小社区,较低 resolution 往往得到更大社区。
    • 不同业务场景应选择不同尺度,不宜只追求最高模块度。

八、算子清单

序号 算子名称 中文说明
1 clustering 节点聚类系数
2 average_clustering 平均聚类系数
3 transitivity 全局传递性
4 triangles 三角形数量统计
5 square_clustering 四环聚类系数
6 greedy_modularity_communities 贪心模块度社区发现
7 girvan_newman Girvan-Newman 分层社区发现
8 label_propagation_communities 同步标签传播社区发现
9 asyn_lpa_communities 异步标签传播社区发现
10 k_clique_communities k 团渗透可重叠社区发现
11 louvain_communities Louvain 社区发现
12 leiden_communities Leiden 社区发现
13 simple_cycles 简单环枚举
14 cycle_basis 环基
15 modularity 模块度评分
16 partition_quality 覆盖率与性能评估
17 is_partition 社区分区合法性校验
18 naive_greedy_modularity_communities 朴素贪心模块度社区发现
19 spectral_modularity_bipartition 二部图谱模块度二分
20 minimum_cycle_basis 最小环基
21 triadic_census 三元结构普查
22 asyn_fluidc 异步流体社区发现
23 kernighan_lin_bisection Kernighan-Lin 图二分