增量式和分层式k-median算法的实验评估 incexp

Abstract

  在本文中,我们考虑具有可证明性能保证的不同增量和分层k-中值算法,并比较它们在不同基准k-中值数据集上的运行时间和输出解的质量。 我们确定这些算法对所有数据集输出的解决方案的质量比其性能保证提供的要好得多。 由于一些增量k-中值算法需要k-中值问题的近似解,所以我们还比较了一些现有的k-中值算法的运行时间和这些数据集上获得的解的质量。

1 Introduction

  一家公司正在建设设施,以便为其客户提供服务。 由于资金有限,目前只能建设一些,但打算在未来扩大以改善其客户服务。 它的扩张计划是一系列的设施,它将为它提供资金。 它是否可以计划未来的扩张?如果按照顺序打开前k个设施,这个解决方案的价值接近于最优打开任何k个设施选择的解决方案的价值? 该公司的问题是增量k-中值问题,最初由Mettu和Plaxton提出[10]。

  标准k-中值问题近年来一直是算法界密集研究的对象。给定度量空间中的一组设施和一组客户的位置以及参数k,k-中值问题要求找到一组k设施去打开,使得客户到这些打开设施的距离之和最小。由于度量k-中值问题是NP-hard [8],因此许多研究人员专注于为其获取近似算法。用于最小化问题的α-近似算法运行在多项式时间内,并且输出其成本至多是最优解的成本的α倍。因子α有时被称为算法的近似因子或性能保证。成本至多是最优成本的α倍的解决方案有时称为α近似。已知此问题的最佳近似算法具有3 +ε的性能保证,并且归因于Arya,Garg,Khandekar,Meyerson,Munagala和Pandit [2];它基于本地搜索启发方法。

  在增量k-中值问题中,我们给出了没有参数k的k-中值问题的输入,并且必须产生一系列设施。 对于每个k,考虑按照一定顺序开放第k个设施的成本与最优k中值解决方案的成本的比率。 该问题的目标是找到一个排序,以最大限度地减少所有的k值对应的比率的最大值。 如果对所有k的比率的最大值不超过α,则称该问题的算法为α竞争。 这个值α被称为算法的竞争比率。 Mettu和Plaxton [10]给出了增量k-中值问题的 29.86-竞争 算法。 后来Lin,Nagarajan,Rajaraman和Williamson [9]给出了增量k-中值问题3的确定性16-竞争和随机10.88-竞争算法3。 他们的算法使用k-中值近似算法或Lagrangean Multiplier Preserving(LMP)设施定位算法作为黑箱。

  我们还考虑了分层k-中值问题的算法。在层次聚类中,我们通过从其自己的聚类中的每个点开始,并重复合并选定的聚类对直到所有点位于单个聚类中,为k的所有值给出具有k个聚类的聚类。我们还考虑了这个问题的一个变种,其中每个群集都有一个点指定为中心,当我们将两个群集合并在一起形成一个群集时,两个中心之一成为新群集的中心。考虑到k聚类的一些目标函数,我们再次希望确保对于任意k,我们以这种方式获得的k聚类的代价与最优k聚类的代价并不太远。对于分层k-中值问题,k-聚类的目标函数是它的k-中值成本;即每个点到其中心的距离的总和。 Plaxton [11]给出了一个 238.88-竞争 算法的问题。 Lin等人[9]后来给出了确定性的 40.42-竞争和随机 20.06-竞争 算法的问题。他们的算法再次使用k-中值近似算法或LMP设施位置算法作为黑盒子。

  在本文中,我们考虑在不同k-中值基准数据集上的这些增量和分层k-中值算法的性能,并比较它们的运行时间和输出解决方案的质量。由于Lin等人的算法需要k-中值近似算法或LMP设施位置算法作为黑箱,我们还比较了一些现有的k-中值和LMP设施位置算法的性能。特别是,我们实施了五种不同的k-中值和LMP设施定位算法。第一个是Arya等人的单一交换本地搜索算法。 [2],它给出了 5-近似 解。我们还考虑了Charikar,Guha,Tardos和Shmoys [4]的线性规划(LP)舍入算法,该算法将LP最优化以得到 8-近似 解。 Jain,Mahdian,Markakis,Saberi和Vazirani [7]给出了一个贪婪的双重Lagrangean Multiplier Preserving(LMP)设施位置(FL)算法,该算法给出了某些k值的 2-近似 k中值解。我们还考虑使用标准k-中值线性程序并使用CPLEX进行优化解决。最优解可以是分数,但仍然为k-中值问题提供了一个好的下界。即使该算法不是多项式时间,我们也可以使用CPLEX最优地解决k-中值整数程序。这些线性和整数程序给我们提供了其他算法解决方案质量的界限。

  在给定这些算法的情况下,我们针对增量k-中值问题实施Lin等算法的几种变体。 我们使用Arya等人的k-median局部搜索算法,K-median的Charikar等人的LP舍入算法以及的Jain等人的贪婪算法(设施定位的LMP算法)来实现他们的算法。 另外,我们实现了Mettu和Plaxton的原始算法,用于增量k-中值问题。 我们能够使用线性和整数规划解决方案来限制我们获得的结果的质量。

  我们还实现了Lin等人提出的用于分层k-中值问题的几种变体。 再次,我们使用Arya等人的k-median局部搜索算法,Charikar等人的LP舍入算法和Jain等人的贪心算法来实现他们的算法。 另外,我们实现Plaxton的分层k中值问题算法。 Plaxton的算法需要增量k-median算法作为黑箱,最初使用Mettu和Plaxton算法作为子程序。 我们实现了Plaxton算法的这种变体,也是一个使用Lin等人的算法给出Arya等人本地搜索算法的变体。

  我们在43个不同的k-median实例上测试了我们的算法,这些实例来自文献。 特别是,我们使用OR库[40]中的40个实例,Galvao和ReVelle [2]的两个实例,以及来自Alp,Erkut和Drezner [1]的一个实例。

  根据我们获得的结果,我们确定所有这些算法在解决方案质量方面的表现都比它们各自的竞争/近似比表明的要好得多。 特别是,虽然我们知道对增量和分层k中值问题没有 竞争比率好于10的多项式时间算法,但我们通常获得的结果在增量问题的k中值LP松弛的10%以内,以及20% 的k-中值LP松弛的分层k-中值问题。 考虑到增量和等级问题的解决方案结构所需的强大约束,我们发现这很令人惊讶。

  Mettu和Plaxton用于递增k-中值的算法和Plaxton用于分级k-中值的算法产生的解决方案不如Lin等人的那些; 然而,我们实现Mettu-Plaxton算法的速度明显快于Lin算法的实现速度,至少部分是因为Lin等人的算法要求所有k值的k-中值问题的近似解。

  我们的论文结构如下。 在第2部分中,我们描绘了我们实现的各种算法。 在第3节中,我们讨论我们使用的数据集。 在第4节中,我们给出了我们获得的实验结果。 在第5节中,我们给出了我们的结论以及由我们的工作引起的一些未解决的问题。 由于空间原因,算法的详细陈述和完整的结果表被忽略,并将出现在论文的完整版本中。

2 Algorithms

2.1 k-中值问题

在本节中,我们考虑了k-median问题的五种不同算法:Arya等[2]提出的单一交换局部搜索算法; Charikar等[4]的线性规划(LP)舍入算法将LP最优化得到的整数解不超过最优LP解的成本的8倍; Jain等[7]提出的贪婪双重Lagrangean Multiplier Preserving(LMP)设施定位(FL)算法,该算法给出了某些k值的2近似k中值解; 标准k-median线性规划,我们使用CPLEX进行最优解决; 和k-median整数程序,即使该算法不是多项式时间,我们也可以使用CPLEX进行最优解决。 线性规划的最优解可以是分数的,但仍然为k-中值问题提供了一个好的下界。 我们现在依次讨论这些算法。 由于空间原因,我们无法给出完整的描述。

局部搜索算法。 我们考虑Arya等人[2]的单交换局部搜索算法,该算法计算出 5-近似 解。 本地搜索算法通过以任意解决方案开始,并重复进行当前解决方案的有效交换,直至不再存在有效的交换。 交换关闭了当前解决方案中的一个设施,并打开之前曾关闭过的设施。 如果交换后新解决方案的成本低于交换前解决方案的成本,交换将被视为有效。

  Arya等人证明如果只把通过一个确定因子改进解决方案的交换看作有效交换,成本部搜索算法可以在输入大小的多项式时间中运行。但是,为了简单起见,我们认为任何改善成本的交换都是有效的交换。 我们为每个基数k运行这个本地搜索算法。 在这个过程之后,我们对k的每个值都有局部最优解。

  我们没有实现Arya等人的多交换(涉及多个设施的交换)本地搜索算法,因为它的运行时间过长,即便它可以更好地保证3 +ε。 我们使用基数k -1的局部最优解作为基数k的局部搜索迭代的起始解。 由于该解决方案已经是基数k的很好解决方案,我们减少了后续迭代的运行时间。 平均而言,这将本地搜索的运行时间提高了大约40%。

LP舍入算法。我们考虑Charikar等人[4]的LP四舍五入算法,该算法以k-中值问题的标准LP松弛(k -P)的分数最优解作为输入,并产生一个整数解,该整数解不超过LP最佳成本的8倍。

    该算法如下。它从对于特定k值的最佳LP分数解开始。首先,该算法通过合并附近的客户并结合他们的需求来简化问题实例,比如具有非零需求的客户彼此远离其他的问题实例。然后通过合并附近的分数设施来简化最优分数解的结构。产生的解决方案只在有非零需求的设施上具有非零分数值,并且设施的LP变量不小于1/2.然后该算法将此解决方案修改为另一个解决方案,其中设施的LP变量取值仅为0, 1/2, 1。然后它打开不超过k个这些设施,根据它们与其他具有正LP值的设施的距离来选择它们。

    Jain等人的贪婪LMP FL算法。 Jain等人[7]给出了一种LMP贪心的设备位置问题的双重拟合算法。 在这个算法中,我们为每个客户维护一个双重价值vj,vj它连接到一个开放设施的总贡献。 该双重vj的某些部分支付j的连接成本,剩余部分支付给设施开放成本。 当设施有足够的客户贡献来匹配设施开放成本时,我们会统一增加客户的双重身份并开设设施。 如果连接成本通过双重值支付,我们说客户连接到设施。 如果客户连接到开放的设施,我们会停止增加客户的双重身份。

    由于该设施定位算法是设施位置(FL)问题的LMP2-近似算法,因此我们可以获得Lin等人描述的k-中值问题的有界包络(bounded envelope)。[9]。 有界包络给出了一些k值的k-中值问题的 2-近似解 以及所有k值 k-中值解的值的相应分段线性下界,其中下界的断点出现 在我们有2个近似解的k值上。 Lin等给出了用LMP FL算法计算有界包络的过程。

使用CPLEX解决线性程序。 我们使用CPLEX求解器来解决标准k-中值问题的线性规划松弛(k-P)。 为了加快线性规划求解器的运行时间,我们试图给出(k-1)次运行的最优解作为基数k的所有的k值的迭代的起始解。 但是线性程序的平均运行时间并没有显着改善。

使用CPLEX解决整数程序。 我们使用CPLEX求解器最优地求解整数程序(k-IP); (k-IP)与(k-P)相同,除了我们要求决策变量为0-1。 CPLEX求解器为求解器提供了一个良好的初始猜测,从而可以修剪许多低质量的解决方案。 我们给出具有k-1设施的最优整数解作为具有基数k的CPLEX整数程序迭代的初始猜测。 由于基数较小值的k-中值问题的最优解是具有较大基数的k-中值问题的可行解,所以初始猜测是可行的。 尽管这使得求解器在某些情况下可以更快地找到最优的整体解,但它并不适用于所有情况,平均而言,运行时间的改善并不重要。

2.2 增量式k-中值算法

Mettu和Plaxton的算法。 Mettu和Plaxton的[10]增量k-中值算法使用分层贪婪方法来选择要打开的增量顺序中的下一个工具。 这种方法背后的基本思想如下:他们不是基于单一的贪婪标准选择下一个点,而是贪婪地选择一个区域,然后递归地选择较小的区域,直到区域缩小为单个设施,然后该设施成为下一个打开的设施。 因此,下一个设施的选择受到一系列贪婪标准的影响,这些标准针对连续的细粒度级别。

Lin等人的增量k-中值算法。 我们实现了Lin等[9]的用于这些数据集上的增量k-中值问题增量算法ALTINCAPPROX。 我们使用Arya等人的局部搜索算法和单次交换以及Charikar等人的LP舍入技术为这些数据集中的所有可能的k生成良好k-中值解。 我们将这些解决方案按照几何(级别?)成本增加分到桶中。 我们从每个桶中提取最高成本的解决方案。 然后,我们按照中值减小的顺序来考虑每一个解决方案,并且使用每个这样的解决方案来寻找具有与下一个更大的解决方案中包含的相同数量的中值的另一个解决方案。 这给了我们一系列的k-median解决方案,使得任何更小的解决方案都是任何更大解决方案的一个子集。 这一系列的解决方案给了设施的自然排序。

我们还使用通过在数据集上运行Jain等算法获得的k-中值有界包络来实现Lin等[9]的增量算法BoundedIncApprox。 通过使用从这个算法获得的一些k值的2-近似解决方案,我们可以应用上面给出的过程来获得设施的排序。


2.3 分层k-中值问题

我们测试了Lin等[9]的分层k-中值算法与Plaxton先前已知的分层k-中值算法[11]。

Plaxton的算法。 Plaxton的算法将增量k-中值解作为输入,并为每个设施的按照增量顺序寻找父函数。 从排序中获得的分层k-中值解可被认为是按照顺序重复关闭最后一个还在开放的设施来并将其客户分配给较早的设施而获得的。 这个映射完全由由Plaxton算法中的父函数捕获。 用于排序的父函数按照顺序将每个设施映射到该顺序中较早的设施。 父设施是某设施关闭时其客户将分配到的设施。也就是子设施关闭,客户分配给父设施。

  Plaxton的父函数分配如下:给定问题的增量k-median解决方案,按照增量解决方案的相反顺序为每个设施分配一个父设施。 设施 f 的父母由顺序中最早的设施确定,该设施或者是最近的设施或者满足某个方程。 方程实质上是找出一个设施,其与 f 的距离不超过 f 的客户与f  的平均距离。

  我们在增量k-中值的解上运行Plaxton的父函数算法,解由运行Mettu和Plaxton算法以及AltIncApprox算法获得。其中AltIncApprox算法使用Arya等人在数据集上的局部搜索解决方案。

  Lin等人的分层k-中值算法。 对数据集上的分层k-中值问题,我们运用Lin等人的通用算法AltIncApprox [9],使用不同的k-中值算法作为黑箱。 我们使用Arya等人的局部搜索算法和Charikar等人的LP舍入算法来生成良好的k中值解。 我们还使用通过在数据集上运行Jain等人算法获得的k-中值有界包络来实现Lin等[9]的增量算法BoundedIncApprox。 正如Lin等人的增量k-中值算法一样。 我们必须找到k-中值问题的近似解,然后我们把这些问题放在几何级增加的成本的桶中,然后从每个桶中取出最昂贵的解。 我们按照大小递减的顺序考虑这些解决方案,并且使用每个解决方案来找到与已经考虑的更大的解决方案的分层聚类一致的k聚类。


3 数据集

在我们的实验中,我们使用以下数据集来比较k-中值,增量k-中值和分层k-中值算法。

1. OR库:这40个无容量限制的k-中值问题的数据集是OR库[3]的一部分,这是由J. E. Beasley创建的各种OR问题的测试数据集的集合。 这40个测试问题被命名为pmed1,pmed2,...,pmed40,它们的大小范围从n = 100到900.如[3]中所述,我们将Floyd算法应用于邻接成本矩阵以获得完整的成本矩阵。

2.Galvao:这套实例(Galvao100和Galvao150)是从Galvao和ReVelle [6]的工作中获得的。 尽管这些数据集的大小很小(n = 100和n = 150),但某些k值(中值数)的完整性差距大于传统数据集。

3.阿尔伯达省:这个数据集是使用阿尔伯塔省所有人口中心的316个节点的网络生成的(参见Alp,Erkut和Drezner [1]),其中,最短距离是使用阿尔伯塔省实际道路网上的最短路径度量来计算得出的。

4 实验结果

4.1 k-中值问题

在本节中,我们比较了所描述数据集上五种不同算法的运行时间和解决方案的性能:k-median线性规划的CPLEX求解器,k-中值整数规划的CPLEX求解器,Arya等人单交换本地搜索算法,Charikar等人的LP舍入算法和Jain等人的贪心算法的有界包络。所有的实验都是在具有2GB物理内存的英特尔酷睿2 2.40GHz处理器的机器上完成的。使用CPLEX Version 10.1.0解决数据集上的线性程序和整数程序。 Arya等人的单一交换局部搜索算法和Jain等人算法使用MATLAB版本7.0解决。我们用于终止二分搜索的有界包络的误差为0.01(参见Lin等[9]的有界包络过程)。出于空间原因,我们无法提供完整的结果表格;然而,图1和图2显示了在pmed40和Galvao150两个样本数据集上,给以不同的k值,整数最优,Arya等人的局部搜索算法,Charikar等人的LP舍入算法和Jain等人的贪心算法的k-中值解的成本和线性程序的比较。这种表现是典型的。

尽管Arya等人的算法的性能保证是5,但实际上Arya等人的本地搜索算法的实际表现要好得多。 平均而言,局部最优值与线性编程最优值相差1%以内。 Charikar等人的LP舍入算法性能更好,因为大多数LP解决方案已经积分或非常接近整数,除了一些小的k值。 请注意,Jain等人的贪心LMP FL算法只给出了一个有界的包络,并没有给出所有k值的k中值解。 在这里我们可以看到LP舍入算法和局部搜索算法比Jain等人的算法表现更好。

就运行时间而言,对所有数据集,LP求解器比局部搜索和贪婪算法运行得更快。 此外,对更大的数据集,IP求解器需要更多时间来求解所有的k的实例。



4.2 增量式k-中值

  在本节中,我们比较了所选数据集上的四种不同增量k-中值算法的性能:Mettu和Plaxton的增量k-中值算法(MPInc);Lin等人的AltIncApprox算法,其中解决方案来自Arya等人的单交换局部搜索算法 LInc);Charikar等人的LP四舍五入(LPR)和Lin等人的BoundedIncApprox算法,其中有界包络从Jain等人的贪婪LMP FL算法(GInc)获得。

  我们的实验在同样的数据集上,显示Lin等人的算法比Mettu和Plaxton算法表现得更好。 图3,4,5和6强化了这一推论,表明从Lin等人的增量算法获得的解决方案的成本与LP最优的比率总是优于Mettu和Plaxton算法相应的比率,其中的样本数据(pmed10,pmed25,pmed40和Galvao150)。 Mettu-Plaxton算法的运行速度比Lin等人的算法快得多; Lin等人使用k-median算法或有界包络算法作为黑箱,这使得它们非常慢。 然而,从Lin等人的算法获得的增量解的质量比Mettu-Plaxton算法的质量好得多。


4.3 分层k-中值

  在本节中,我们比较了Plaxton的分层k-中值算法与Lin等人的AltIncApprox分层k-中值算法的性能。 请注意,Plaxton算法将任何增量k-中值的解作为输入,并输出解一个父函数,父函数定义了分层解决方案。 我们将运行AltIncApprox和Mettu-Plaxton算法得到的增量k-中值解作为Plaxton分层算法(PHLI和PHMP)的输入,并将它们与Lin等人的分层k-中值算法的解决方案(HL,HG和 LPRH)在不同数据集上做比较。

 图7,8,9和10显示了在样本数据集pmed10,pmed25,pmed40和Galvao150上的不同k值下,不同层次k-中值算法的解的成本和最优线性程序解进行的比较。 我们考虑的算法是AltIncApprox算法(使用Arya等人的局部搜索k-中值解(HL)和Charikar等人的LP舍入解(LPRH)),BoundedIncApprox算法(使用来自Jain等人的贪婪算法的有界包络)(HG), Plaxton的基于AltIncApprox算法(PHLI)的增量解决方案的分层k-中值算法 和  基于Mettu和Plaxton的增量k-中值解决方案(PHMP)的Plaxton算法。

  AltIncApprox算法获得的分层解决方案比其他算法更好。 由于PHMP使用Mettu和Plaxton的增量k-中值解作为输入,而Mettu和Plaxton的增量k-中值在质量方面不如其他增量式算法好,因此PHMP算法的比率不如其他算法。 Lin等人的分层算法(HL)直接从k-median解算出分层解决方案,其性能优于Plaxton的分层算法,即便Plaxton将AltIncApprox的增量解决方案作为输入。


5.结论

  我们评估不同数据集上的不同k-中值,增量k-中值和分层k-中值算法,并在此显示我们的结果。 对于k-median问题,Charikar等人的LP舍入算法平均比其他k-median算法(如Arya等人的本地搜索算法)执行得更好和更快。 我们还注意到,在许多实际数据集中,大多数k值的k-中值问题的最优LP解决方案都是整数,这也使得LP舍入技术在解决方案的质量方面更好。

  当AltIncApprox算法在Arya等人的局部搜索算法和Charikar等人的LP舍入算法的k-中值解上运行时,其增量解决方案的质量比Mettu和Plaxton算法的好得多。 即使LP四舍五入算法在某些小的k值上表现不佳,Lin等人的增量和分层算法也通过把结果根据几何量级分组跳过了许多这些不好的解决方案,这使得相应的增量解决方案在质量上可以与Arya等人的局部搜索k-中值解相比较。

  Mettu和Plaxton的增量k-median算法比我们实现的其他增量k-median算法快得多。 然而,这里需要注意的一点是,我们在Arya等人的局部搜索算法和Charikar等人的LP舍入算法中找到了所有k值的良好k-中值解。 Lin等人的算法大部分都没有使用这些解决方案,因为它只使用每个几何增长桶中的一个解。 如果我们能够以更快的速度发现一系列几何级数增加的k-中值解决方案,这将是有用的。 这可能会导致Lin等算法运行时间的显着改进。

猜你喜欢

转载自blog.csdn.net/jemary_/article/details/80658824