2

我一直在使用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] 是第 i 个分区的第 j 个约束的期望目标权重(即,通过 -tpwgts 指定的)。对于-ptype=rb,默认值为1(即负载不平衡1.001),对于-ptype=kway,默认值为30(即负载不平衡1.03)。

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

4

1 回答 1

2

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

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

有几种方法可以解决这个问题,一种流行的启发式方法是标签传播
如果您不想自己实现算法,我建议您使用像NetworKit这样的框架(不幸的是,我还不知道任何其他此类框架),它实现了标签传播、一些基于模块化的算法和许多有用的工具。

但回到你原来的问题:

是什么-ptype=rb/kway

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

第 j 个约束是什么?

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

参见手册:

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

编辑:既然你澄清说你想查看固定数量的集群,我看到了图形分区在这里有什么帮助。让我说明一下什么ufactor意思:

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

严重失衡的后果

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

光谱分区呢,...?

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

  • 首先对图进行化(在尝试保留图结构的同时合并节点),直到其大小变得可以直接分区
  • 最粗略的图是使用初始分区技术进行分区的,我们可以使用多种方法(组合二分法、谱二分法、使用 ILP 的精确解……)。
  • 然后对图进行粗化,在每个步骤中,在局部搜索中将少量节点从一个分区移动到另一个分区,以改善整体边缘切割。

我的个人推荐

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

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

METIS 的粗化方法使用重边缘匹配来组合以某种方式靠近的节点,这对于预期的应用非常有用,但是对于社交网络,基于聚类的粗化技术可能会更有效。
另一个一般来说速度有点慢,但特别为社交网络实现了一些预设的库是KaHIP,请参阅手册了解详细信息。

(但是我应该提到我在这方面有偏见,因为我与这个库进行了广泛的合作;-))

于 2017-07-08T13:38:44.113 回答