【问题标题】:Infomap community detection understandingInfomap社区检测理解
【发布时间】:2018-07-09 18:21:53
【问题描述】:
【问题讨论】:
标签:
algorithm
cluster-analysis
graph-theory
【解决方案1】:
InfoMap 算法背后的基本思想是使用图的社区分区作为Huffman code,它压缩有关随机游走者探索您的图的信息。
让我们解开这意味着什么。中心对象是一个随机游走者,它探索网络,步行者在两个节点之间转移的概率由其马尔可夫转移矩阵给出。此时,我们已经使用每个节点的单独代码字有效地编码了我们的网络。然而,在大多数现实世界的网络中,我们知道网络的某些区域,一旦随机游走者进入一个区域,它往往会在那里停留很长时间,并且区域之间的移动相对较少。这允许我们将代码字组合成霍夫曼代码:我们可以为每个区域使用前缀代码,然后为模块内的每个节点使用唯一代码字,但我们可以为每个模块重用这些节点级代码字。通过查看街道名称可以收集相同的直觉;为美国的每条街道设置一个唯一的街道名称会很疯狂,相反,我们使用州和城镇,然后指定街道名称,允许我们在城镇之间重复使用街道名称(有多少条主街道?)。
这就是优化算法出现的地方:当您使用太少的模块时,您实际上仍然回到为每个节点使用单独代码字的水平,但是使用了太多的模块,以及前缀代码的数量变得太大。因此,我们需要找到一个最佳分区,将节点分配给模块,以使压缩随机游走者运动所需的信息最小化(他们论文中的方程式 1)。
可能的分区数量在节点数量(由贝尔数给出)中呈超指数增长,因此不可能进行暴力搜索。相反,作者利用Louvain method(最初为模块化最大化而设计)的变体来帮助他们找到合适的分区。您询问的 2 个“改进”(问题 4)只是帮助有效探索分区空间的启发式方法:子模块探索检查以验证我们没有创建太大的模块并且应该被分解成更小的模块,而单节点移动允许单个节点在模块之间切换。
InfoMap 算法和 Modularity 都是最优社区检测方法的实例:它们都有一个质量函数,然后搜索图分区的空间以找到优化该质量函数的分区。不同之处在于质量函数:InfoMap 侧重于压缩随机游走者运动所需的信息,而 Modularity 基于边缘密度定义模块(模块内的边缘比偶然预期的多)。