繁体   English   中英

R,igraph walktrap.community在完全连接的图的情况下拆分所有节点

[英]R, igraph walktrap.community splits all nodes in the case of a fully connected graph

使用walktrap.community方法在图形中定义社区非常有效-在我测试过的所有算法中,效果最佳。 需要注意的是,在没有自我链接的完全连接图的情况下(每个节点都彼此连接,但不是自身连接),每个节点都被分配了自己的社区。

我没有网络分析方面的经验,但这似乎是一个有趣的案例,并且它当然不是所希望的行为。 如何避免在实际数据中出现这种分裂?

library(igraph)
match.mat = matrix(T, nrow=8, ncol=8)

diag(match.mat)[1:8] = T
topology = which(match.mat, arr.ind=T)
g = graph.data.frame(topology, directed=F)
cm = walktrap.community(g)
membership(cm)

# 2 3 4 5 6 7 8 1 
# 1 1 1 1 1 1 1 1 

plot(cm, g)

分组网络

diag(match.mat)[1:8] = F
topology = which(match.mat, arr.ind=T)
g = graph.data.frame(topology, directed=F)
cm = walktrap.community(g)
membership(cm)

#2 3 4 5 6 7 8 1 
#1 2 3 4 5 6 7 8 

plot(cm, g)

分割网络

从概念上讲,我不确定缺少自我链接会如何导致每个节点被拆分-可能所有社区都被捆绑在一起并因此分裂了? 但是,在这方面,所有自我联系的情况似乎是等效的。

谢谢!

http://www-rp.lip6.fr/~latapy/Publis/communities.pdf

如果您已仔细阅读本文,您将注意到Walktrap基于随机行走过渡矩阵构建节点距离度量。 但是,此转换矩阵需要是遍历遍历的,因此其底层邻接矩阵需要是连通的且不可分割。 通过将自环添加到节点来实现非双向性。 因此,您需要将自循环添加到图形中的每个节点。 将来在igraph程序包中包含此更正可能是一个好主意,但据我所知,他们正在使用Latapy和Pons的C实现,为此,该图需要具有自循环。 希望这能回答您的问题!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM