Louvain是一种无监督算法(执行前无需输入社区的数量或大小),分为模块优化和社区聚合两个阶段【1】。第一步完成后,接下来是第二步。两者都将执行,直到网络中不再有变化并且实现最大模块化。
是表示邻接矩阵权重的邻接矩阵条目,= ∑是节点的度数,如果函数(,)为1,则是节点所属的族。=,否则为0。= 1 ∑ 2是图中所有边的权重之和。
Louvain将在模块化优化中随机排序网络中的所有节点。然后,它将逐个删除和插入不同社区中的每个节点,直到验证模块性(输入参数)没有显著增加:
假设内部链接的权重之和是中间节点所有链接的权重之和,事件节点所有链接的权重之和,以及从该节点到社区中各节点的链接的权重之和是图中所有边的权重之和。
进一步提高算法性能的一种方法是简化(2)并计算而不是完成以下表达式:
尽管需要为每个实验社区计算总和σ,但k/(2m)特定于要分析的节点。这样,只有在模块优化中考虑其他节点时,才会重新计算后一个表达式。
完成第一步后,属于同一社区的所有节点将合并为一个巨型节点。连接巨型节点的链接是先前连接到同一社区的节点的总和。这一步还会生成一个自循环,它是给定社区中所有链接的总和,然后分解为一个节点(图1)。
》图1卢万算法的步骤顺序。改编自【1】。
因此,通过在第一遍后对社区进行聚类,它固有地考虑了网络中是否存在分层组织。算法1中的伪代码。
【1】戴维·布隆德尔,法学博士。纪尧姆河。《大型网络中社区的快速发展》,J. Stat。机甲。2008年12月12日
(本文转自Luís Rita的文章《卢万算法》,参考资料:
https://towardsdatascience . com/louvain-algorithm-93 FDE 589 f 58c)
网友评论