' ufactor'用于不平衡聚类的metis中的参数

时间:2017-07-08 13:13:37

标签: cluster-analysis metis

我一直在使用METIS来群集社交媒体用户。

默认情况下,它输出的是每侧具有相同顶点数的集群,这在现实世界中并不理想。所以,我试图找到方法来放松相同数量的顶点"并且可以通过最小化切割值获得不平衡分区。

我在手册中找到了一个参数ufactor,这对我的情况来说是合适的(我认为),但我并没有理解它到底在做什么。我有大图,并试用了ufactor的某些值。对于一个数据集ufactor=1000非常有效,但对于另一个数据集,它甚至无法对图形进行分区。我无法解释这个结果,因为我不明白它真正在做什么。以下是我在手册中找到的内容:

  

指定分区之间允许的最大负载不平衡。值x表示该值       允许的负载不平衡是(1 + x)/ 1000。第j个约束的负载不平衡定义为       max_i(w [j,i])/ t [j,i]),其中w [j,i]是第j个约束的总权重的一部分       被分配给第i个分区,t [j,i]是第j个约束的期望目标权重       分区(即通过-tpwgts指定的分区)。对于-ptype = rb,默认值为1(即加载       不平衡1.001)和-ptype = kway,默认值为30(即负载不平衡为1.03)。

有人可以帮我解释一下吗?在这里,jth约束是什么?什么是-ptype=rb/kway

1 个答案:

答案 0 :(得分:1)

首先,我要提一下,我认为METIS是错误的工具,因为它用于图形分区,其中重点是最小化分区之间的边数保持分区平衡(或多或少大小相同)

您可能想要做的是社交网络中的社区检测,即搜索最大化内部连接的群集(来自同一群集的节点之间的大量边缘) )和最小化外部连接(不同群集之间的边数较少) 这可以通过最大化所谓的Modularity聚类

来实现

有几种方法可以解决这个问题,一种流行的启发式方法是Label propagation 如果您不想自己实施该算法,我建议使用像NetworKit这样的框架(不幸的是,我还不知道其他任何此类框架),它实现了Label propagation ,一些modularity-based algorithms和许多有用的工具。

但回到原来的问题:

什么是-ptype=rb/kway

有多种方法可以解决图分区问题:您可以尝试直接将图分区到所需的分区数(k-way分区),也可以将图重复分成两半,直到您拥有所需的分区数(递归二分,rb)

什么是第j个约束?

METIS允许您同时尝试和优化多个平衡约束,即如果您在图表上有多种类型的计算,这些计算应该在计算节点之间或多或少地平衡。

参见手册:

  

许多重要类型的多相和多相   物理计算要求多个量同时进行负载平衡。   [...]
  METIS包括分区例程,可用于在存在这种多重平衡的情况下对图形进行分区   限制。现在为每个顶点分配一个m个权重的向量,并且分区例程的目标是   最小化边缘切割受制于m个权重中的每一个权重均匀分布的约束   域。

编辑:既然您澄清了想要查看固定数量的群集,我会看到图分区在这里有用。让我来说明ufactor的含义:

分区图的不平衡(在这个简单的情况下)计算为每个分区的不平衡的最大值,大致是商partition size / average partition size。因此,如果我们允许最大不平衡为2,这意味着最大分区是平均分区的两倍。但请注意,ufactor并未直接指定不平衡,它指定允许的不平衡量与1相比有多少permille。 所以ufactor=143实际上意味着你的最大允许不平衡是1.143,这是有道理的,因为你的集群彼此之间的距离不是很远。因此,在您的情况下,您可能会使用较大的ufactor值来允许组的大小完全不同。

大不平衡的后果

如果您的不平衡太大,可能会发生所有强连接部分都落在同一分区中,而只有隔离节点放在其他分区中。这是因为算法试图最小化不同分区之间的切割边的数量,如果我们将所有高度节点放在同一个分区中,这将会更低。

光谱分区怎么样,......?

METIS的一般方法如下:
大多数输入图形太大而无法直接分区,这就是使用所谓的多级方法的原因:

  • 图表首先粗化(节点在尝试保留图形结构时合并),直到其大小可以直接分区为止
  • 使用初始分区技术对最粗糙的图进行分区,我们可以使用各种方法(组合二分法,谱分割,使用ILP的精确解,......)。
  • 然后未分解,其中在每个步骤中,在本地搜索中将少量节点从分区移动到分区,以改善整体边缘切割。< / LI>

我的个人推荐

但是我应该注意到,虽然图形分区可能是您案例的有效模型,但METIS本身可能不适合您:

正如您可以在METIS主页上看到的那样,它主要用于相当稀疏的图形(有限元方法,线性规划,VLSI和运输等),而社交网络则更密集且具有不同的结构(度数遵循幂律分布)

METIS的粗化方法使用重边匹配来组合节点,这些节点在某种程度上紧密相连,这对于预期的应用程序非常有用,对于社交网络而言,基于聚类的粗化技术可能会更有效率 另一个通常稍微慢一点的库,但是为社交网络实现了一些预设,KaHIP,请参阅manual了解详细信息。

(但我应该提一下,我在这方面有偏见,因为我与这个图书馆一起工作;-))