R igraph 手册页

如果您从 R 中使用 igraph,请使用此选项

cluster_spinglass {igraph}R 文档

基于统计力学在图中查找社区

描述

此函数尝试通过自旋玻璃模型和模拟退火在图中查找社区。

用法

cluster_spinglass(
  graph,
  weights = NULL,
  vertex = NULL,
  spins = 25,
  parupdate = FALSE,
  start.temp = 1,
  stop.temp = 0.01,
  cool.fact = 0.99,
  update.rule = c("config", "random", "simple"),
  gamma = 1,
  implementation = c("orig", "neg"),
  gamma.minus = 1
)

参数

输入图可以是定向的,但边的方向被忽略。

weights

边的权重。它必须是正数值向量、NULLNA。如果它是 NULL 并且输入图具有“weight”边属性,则将使用该属性。如果为 NULL 并且不存在此类属性,则边将具有相等的权重。如果图具有“weight”边属性,但您不想将其用于社区检测,请将其设置为 NA。较大的边权重意味着此函数的连接更强。

vertex

此参数可用于计算给定顶点的社区,而无需计算所有社区。请注意,如果存在此参数,则会忽略其他一些参数。

spins

整数常数,要使用的自旋数。这是社区数量的上限。在此处提供一个(合理地)大数没有问题,在这种情况下,某些自旋状态将不会被填充。

parupdate

逻辑常数,是否并行(同步)更新顶点的自旋。如果使用该函数的第二种形式(即,存在“vertex”参数),则忽略此参数。它也没有在“neg”实现中实现。

start.temp

实数常数,起始温度。如果使用该函数的第二种形式(即,存在“vertex”参数),则忽略此参数。

stop.temp

实数常数,停止温度。如果温度降至此水平以下,则模拟终止。如果使用该函数的第二种形式(即,存在“vertex”参数),则忽略此参数。

cool.fact

模拟退火的冷却因子。如果使用该函数的第二种形式(即,存在“vertex”参数),则忽略此参数。

update.rule

字符常数,给出模拟的“null-model”。可能的值:“simple”和“config”。 “simple”使用具有与基线概率相同数量边的随机图,“config”使用具有与输入图相同顶点度的随机图。

gamma

实数常数,算法的 gamma 参数。这指定了社区中存在和不存在的边的重要性之间的平衡。粗略地说,社区是一组在社区内具有许多边,而在社区外(即在社区本身和图的其余部分之间)具有少量边的顶点集。默认值 1.0 使现有链接和不存在的链接同样重要。较小的值使现有链接更重要,较大的值使缺失链接更重要。

implementation

字符标量。目前,igraph 包含自旋玻璃社区发现算法的两种实现。更快的原始实现是默认的。可以通过在此处提供“neg”来选择另一个考虑负权重的实现。

gamma.minus

实数常数,算法的 gamma.minus 参数。这指定了社区中存在和不存在的负加权边的重要性之间的平衡。gamma.minus 的较小值会导致负内部连通性较低的社区。如果此参数设置为零,则该算法将简化为图着色算法,使用自旋数作为颜色数。如果选择“orig”实现,则忽略此参数。

详细信息

此函数尝试在图中查找社区。社区是一组节点,社区内有许多边,社区外(即社区本身和图的其余部分之间)有少量边。

对于具有负权重的边,此想法是相反的,即社区内的负边很少,社区之间的负边很多。请注意,只有“neg”实现支持负边权重。

spinglass.cummunity 函数可以解决与社区检测相关的两个问题。如果未给出 vertex 参数(或为 NULL),则(近似)解决常规社区检测问题,即通过优化能量函数将顶点划分为社区。

如果给出了 vertex 参数且不为 NULL,则它必须是顶点 ID,并且使用相同的能量函数来查找给定顶点的社区。另请参见下面的示例。

如果未给出 vertex 参数,即使用第一种形式,则 cluster_spinglass 返回 communities 对象。

如果存在 vertex 参数,即使用第二种形式,则返回一个命名的列表,其中包含以下组件

community

数值向量,给出与 vertex 位于同一社区中的顶点的 ID。

cohesion

结果的凝聚力分数,请参阅参考文献。

adhesion

结果的粘附力分数,请参阅参考文献。

inner.links

vertex 社区内的边数。

outer.links

vertex 社区和图的其余部分之间的边数。

作者

Jorg Reichardt 提供了原始代码,Gabor Csardi csardi.gabor@gmail.com 提供了 igraph 胶水代码。

Vincent Traag (http://www.traag.net/) 实现了对原始函数的更改,以包括负关系的可能。

参考

J. Reichardt 和 S. Bornholdt:社区检测的统计力学,Phys。修订版 E,74,016110 (2006),https://arxiv.org/abs/cond-mat/0603718

M. E. J. Newman 和 M. Girvan:在网络中查找和评估社区结构,Phys。修订版 E 69, 026113 (2004)

V.A. Traag 和 Jeroen Bruggeman:具有正负链接的网络中的社区检测,https://arxiv.org/abs/0811.2329 (2008)。

参见

communities, components

示例


  g <- sample_gnp(10, 5/10) %du% sample_gnp(9, 5/9)
  g <- add_edges(g, c(1, 12))
  g <- induced_subgraph(g, subcomponent(g, 1))
  cluster_spinglass(g, spins=2)
  cluster_spinglass(g, vertex=1)


[包 igraph 版本 1.3.5 索引]