Ka,b biclique の定義に依存するBiclique Communities メソッド ( Lehmann, Schwartz, & Hansen, 2008 ) を R で再現しようとしています。次の例は、隣接する 2 つの K2,2 バイクリークを示しています。最初のクリークは {A,B,1,2} で、2 番目のクリークは {B,C,2,3} です。これをより広範なデータセットに適用できるように、R を使用してこれらのクリークを識別できるようにしたいと考えています。
これまでの試行を R に含めましたが、次の 2 つの問題に悩まされています。
- 標準の walktrap.community を使用すると、コミュニティは認識されますが、セット {B,2} が両方のクリークに属することは許可されません
- 更新されたclique.community関数を使用すると、これはクリークを識別していないように見えるか、正しく理解していません (またはその両方)。
コード例:
library(igraph)
clique.community <- function(graph, k) {
clq <- cliques(graph, min=k, max=k)
edges <- c()
for (i in seq_along(clq)) {
for (j in seq_along(clq)) {
if ( length(unique(c(clq[[i]], clq[[j]]))) == k+1 ) {
edges <- c(edges, c(i,j))
}
}
}
clq.graph <- simplify(graph(edges))
V(clq.graph)$name <- seq_len(vcount(clq.graph))
comps <- decompose.graph(clq.graph)
lapply(comps, function(x) {
unique(unlist(clq[ V(x)$name ]))
})
}
users <- c('A', 'A', 'B', 'B', 'B', 'C', 'C')
resources <- c(1, 2, 1, 2, 3, 2, 3)
cluster <- data.frame(users, resources)
matrix <- as.data.frame.matrix(table(cluster))
igraph <- graph.incidence(matrix)
clique.community(igraph, 2)
walktrap.community(igraph)