[英]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)
從概念上講,我不確定缺少自我鏈接會如何導致每個節點被拆分-可能所有社區都被捆綁在一起並因此分裂了? 但是,在這方面,所有自我聯系的情況似乎是等效的。
謝謝!
如果您已仔細閱讀本文,您將注意到Walktrap基於隨機行走過渡矩陣構建節點距離度量。 但是,此轉換矩陣需要是遍歷遍歷的,因此其底層鄰接矩陣需要是連通的且不可分割。 通過將自環添加到節點來實現非雙向性。 因此,您需要將自循環添加到圖形中的每個節點。 將來在igraph程序包中包含此更正可能是一個好主意,但據我所知,他們正在使用Latapy和Pons的C實現,為此,該圖需要具有自循環。 希望這能回答您的問題!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.