考虑负权重的图聚类算法

机器算法验证 相关性 聚类 图论 网络 图形
2022-03-30 11:58:28

我有一个带有加权有向边的图形实例,其值可以在 [-1,1] 范围内。我需要在此图上进行聚类,以找出顶点相关性更高的组。

我搜索了几种基于聚类或社区检测图的算法,但由于权重为负,它们中的大多数都不起作用。到目前为止,我已经应用了 spinglass(它在igraph库中被称为,它是一种基于 Potts 模型的算法)算法,它似乎适用于正权和负权重。

是否有任何其他算法可以对具有负边和正边权重的图进行聚类或社区检测?

更新:边权重表示相关性,1 表示两个顶点强相关,-1 表示负相关,0 表示独立。

4个回答

您是否尝试将值映射到 [0;2]?

然后许多算法可能会起作用。

考虑例如 Dijkstra:它需要非负边权重,但如果您知道a边的最小值,您可以运行它x-a并获得最短的无循环路径。

更新:对于相关值,您可能对绝对值感兴趣abs(x)(这是相关的强度!),或者您可能想暂时将图表分成两部分:首先仅对正相关进行聚类,然后对负相关进行聚类当符号对聚类非常重要并且以前的方法不起作用时。

是的,有一种称为“亲和传播”的算法适用于负权重;我相信这是在 sklearn 中实现的(请参阅此处的文档)。可以在此处找到有关幕后发生的事情的参考

希望这就是你要找的!

在我看来,您描述的问题被称为Correlation Clustering Problem这些信息应该可以帮助您找到一些实现,例如:

请注意,为了处理签名网络,还修改了一些社区检测算法,例如Amelio'13Sharma'12Anchuri'12等。但是,我找不到任何公开可用的实现。

看看这段代码,它的可扩展性很强,适用于正边缘和负边缘,并将相关聚类 (CC) 解决为特例 (r = 0)。但是,对于 CC(最大化正链接和最小化集群内的负链接)的情况,我会建议专门用于解决此目标的其他方法。

为了说明,相关聚类(与社区检测文献所追求的不同)没有考虑聚类的正密度,所以当一个网络没有或很少有负关系时(大多数现实世界的情况),所有的网络都被放在一个大簇。