动态社区发现¶
属于这一类的算法生成的社区会随着时间的推移而演变。
动态算法的组织方式类似于[Rossetti18]中提出的分类法
即时优化,
时间权衡
有关提取和操作动态社区的可用方法的详细信息,请参阅TemporalClustering文档。
即时优化¶
第一类方法直接来源于将静态社区发现方法应用于动态情况。 使用一系列步骤来模拟网络演化,并为每个步骤确定一个最优分区。 通过指定连接在不同(可能是连续的)时刻发现的拓扑结构的关系,从这些最优分区中定义动态社区。
cdlib 实现了一种模板化方法,将每个静态社区发现算法转换为遵循标准两阶段方法的动态算法:
识别:在演化的每一步检测静态社区;
匹配:在每一步中,将在步骤t找到的社区与在步骤t − 1找到的社区对齐。
这里是一个基于动态快照序列图的Louvain分区的两步示例(其中每个快照都是一个LFR合成图)。
from cdlib import algorithms
from cdlib import TemporalClustering
from networkx.generators.community import LFR_benchmark_graph
tc = TemporalClustering()
for t in range(0,10):
g = LFR_benchmark_graph(n=250, tau1=3, tau2=1.5, mu=0.1, average_degree=5, min_community=20, seed=10)
coms = algorithms.louvain(g) # here any CDlib algorithm can be applied
tc.add_clustering(coms, t)
关于第二阶段(快照的节点聚类匹配),请参考cdlib文档中的Community Events and LifeCycle部分。
时间权衡¶
属于时间权衡类别的算法迭代处理网络的演化。 此外,与即时最优方法不同,它们考虑网络和在前一步骤(或前n步)中发现的社区,以识别当前步骤中的社区。 属于这一类的动态社区发现算法可以通过一个迭代过程来描述:
初始化:为网络的初始状态找到社区;
更新:在步骤t使用图t和过去的信息为每个传入步骤找到社区。
目前 cdlib 包含以下时间权衡算法:
|
TILES 旨在逐步识别和更新流图中的社区。 |
[Rossetti18]
罗塞蒂、朱利奥和雷米·卡扎贝特。“动态网络中的社区发现:一项调查。”《ACM计算调查》(CSUR)51.2(2018):1-37。