高效图聚类算法


20

我正在寻找一种在大型图形上查找聚类的有效算法(它具有大约5000个顶点和10000条边)。

到目前为止,我正在使用在JUNG java库中实现的Girvan–Newman算法,但是当我尝试去除很多边缘时,它的速度相当慢。

您能建议我一个适合大图的更好的选择吗?


你看过k均值了吗?
奥德

您能否给我一些参考,以了解如何在图形上使用它?
mariosangiorgio 2012年


我切换到VoltageClusterer的JUNG实现,它肯定是很快的。jung.sourceforge.net/doc/api/edu/uci/ics/jung/algorithms/...
mariosangiorgio

1
这不是更适合< cs.stackexchange.com >吗,因为它更涉及计算机科学而不是软件工程师?
Oeufcoque Penteano '04年

Answers:


13

我个人建议马尔可夫聚类。我过去使用过几次,效果很好。

亲和传播是另一个可行的选择,但似乎不如Markov聚类一致。

还有其他各种选择,但是这两个都是开箱即用的,非常适合聚类图的特定问题(您可以将其视为稀疏矩阵)。您正在使用的距离度量也是一个考虑因素。如果您使用适当的指标,您的生活将会更加轻松。

我在寻找性能基准时发现了这篇论文,它是对该主题的很好的调查。


谢谢,我将介绍您建议的所有算法。
mariosangiorgio 2012年

校正:这些算法需要作为输入权重来反映相似性,而不是距离。度量属性(三角形不等式)不包含在内。转换权重使其处于自然范围内可能很有用,例如,对于此处描述的(Pearson)相关性(micans.org/mcl/man/clmprotocols.html#array),以及对于此处描述的BLAST E值(micans.org/mcl/man/clmprotocols.html#blast)。
micans 2013年

10

层次聚类

这是朋友推荐给我的。根据维基百科

在这种方法中,定义了一种相似性度量来量化节点对之间某种(通常是拓扑)相似性。常用的度量包括余弦相似度,Jaccard索引和邻接矩阵行之间的汉明距离。然后根据此度量将相似的节点分组为社区。有几种执行分组的常用方案,最简单的两个是单链接聚类,其中并且当且仅当不同组中的所有节点对的相似度均低于给定阈值时,才将两个组视为独立的社区,并进行完整的链接聚类,其中每个组内的所有节点的相似度都大于阈值。

马尔可夫群

这就是我在您的情况下使用的。这是一个非常有用的算法。我找到了有关该算法的漂亮PDF链接。这是一个很棒的算法,而且由于缺乏更好的术语,因此非常“强大”。试试看,看看。


5

对于这里的问题,我认为您应该考虑一种将顶点边缘映射到每个顶点的一组坐标的方法。我不确定是否有更好的方法可以做到这一点。但是,我认为您可以通过将每个顶点表示为一个尺寸开始,然后,特定顶点的边值将成为您需要为该特定尺寸使用的值。之后,您可以做一个简单的Euclid距离并进行处理。


1
经过阅读后,我在这里找到,我认为您应该看看。
viki.omega9 2012年
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.