如何在加权社交网络/图中进行社区检测?


42

我想知道是否有人可以建议对具有加权无向边的图形执行社区检测/图形分区/聚类。所讨论的图形大约有300万个边,每个边都表示其连接的两个顶点之间的相似度。特别地,在该数据集中,边缘是个体,顶点是对其观察到的行为的相似性的度量。

过去,我遵循了一个建议,即在stats.stackexchange.com上到达这里,并使用igraph的纽曼模块化聚类的实现,并对结果感到满意,但这是在未加权的数据集上。

我应该看什么特定的算法?

Answers:


20

纽曼模块化聚类(快速贪婪函数)的igraph实现也可以与加权边一起使用。只需将权重属性添加到边缘并照常进行分析即可。以我的经验,由于没有领带,它在带重量的情况下甚至跑得更快。


非常感谢您向我指出这一点,我完全错过了文档中有关重量的参考。
laramichaels

9

我知道Gephi可以处理无向加权图,但是我似乎记得它必须存储在GDF中,它非常接近CSV或Ucinet DL。请注意,它仍然是Alpha版本。现在,关于对图形进行聚类,除了最新版本中提供的MCL算法外,Gephi似乎都缺乏聚类管道。2009年有一个Google Code项目,即Gephi Network Statistics(以Newman的模块化指标为特色),但我不知道是否已经朝这个方向发布了一些东西。无论如何,它似乎允许进行某种模块化/集群计算,但另请参见使用R和Gephi进行的社交网络分析使用R和Gephi进行社交网络分析的数据准备(非常感谢@Tal)。

如果您习惯使用Python,则值得尝试NetworkX(以下是带有相应代码的加权图示例)。然后,您可以通过多种方式进行分析。

您还应该查看INSNA-社交网络分析软件或Tim Evans的有关复杂网络和复杂性的网页。


您好,只是让您知道Gephi无法处理加权无向图以通过模块识别社区。谢谢。-Gautam

@Gautam很高兴知道,谢谢。我对Gephi并不是很熟悉,但是我认为它正在积极开发中。
chl

7

Gephi实现了Louvain模块化方法:http ://wiki.gephi.org/index.php/Modularity

干杯


@Seb您知道R中的任何实现吗?
John Colby


3

如果您使用的是python,并且已使用NetworkX创建了加权图,则可以使用python-louvain进行聚类。其中G是加权图:

import community 
partition = community.best_partition(G, weight='weight')


1

SLPA(现称为GANXiS)是一种快速算法,能够检测社交网络(无向/有向和无加权/加权)中不相交和重叠的社区。结果表明,该算法在现实社会和基因网络上产生了有意义的结果。它是最新技术之一。它可以在

https://sites.google.com/site/communitydetectionslpa/

查看更多评论arxiv.org/abs/1110.5813


1

我有一个用于非重叠,加权/未加权网络的Java实现,该网络可能可以处理300万个节点(我已经对其一百万个节点数据集进行了测试)。但是,它的作用类似于k-means,并且需要将要检测的分区数作为输入(keans中的k)。你可以找到更多的信息在这里,这里是代码在github上

干杯,

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.