在线装袋(bagging)和推动(boosting)外文翻译资料

 2022-08-11 11:08

英语原文共 6 页,剩余内容已隐藏,支付完成后下载完整资料


在线装袋(bagging)和推动(boosting)

摘要

bagging和boost是两种最著名的集成学习方法,具有理论性能保证和较强的实验结果。然而,这些算法主要用于批处理模式,即,它们要求整个训练集同时可用,在某些情况下,还要求随机访问数据。在这篇论文中,我们展示了在线版本的装袋和增强,只需要一次通过训练数据。我们在先前提出的工作的基础上,描述了一些理论结果。我们还比较了在线和批处理算法在精度和运行时间方面的实验结果。

关键词:装袋;助推;集成学习;在线学习。

1介绍

传统的监督学习算法生成一个单一的模型,如朴素贝叶斯分类器或多层感知器(MLP),并使用它来分类的例子。集成学习算法结合了多个基本模型的预测,每个模型都使用传统算法进行学习。bagging[3]和boosting[4]是众所周知的集成学习算法,与单个基本模型相比,它们已被证明可以提高泛化性能。对boosting性能的理论分析支持了上述结果。

在之前的工作[1][2]中,我们开发了bagging和boosting的在线版本。在线学习算法对每个训练实例只进行一次“到港”处理,不需要存储和再处理,并维护一个反映目前所见的所有训练实例的当前模型。在数据连续到达的情况下,这种算法比典型的批处理算法运行速度更快。对于大的训练集,它们的速度也更快,因为大多数批处理算法所需的训练集的多次遍历开销非常大。在第2节和第3节中,我们分别介绍了我们的在线bagging和在线boosting算法。特别地,我们描述了如何镜像批量装袋和增强算法用于生成各种基本模型的方法,这些模型有助于提高集成性能。

最近还有其他一些开发在线集成学习算法的努力。开发了一种在线bagging算法[7],该算法由用户选择每个训练实例被纳入每个基本模型训练集的概率。经过大量调优,该算法与在线装袋[5]的性能相当。同一篇论文[7]包含了一个在线boosting算法,试图复制Breiman的Arc-x4算法。在[8]中,作者开发了一种无损的在线bagging算法,该算法根据伽马分布为每个基本模型绘制训练示例权值。然而,他们的算法相对于批量bagging算法是无损的,该算法使用Dirichlet分布来绘制其权重,而不是原始的bagging算法。

在之前的工作中,我们还讨论了一些初步的理论结果,并对我们的在线算法与相应的批处理算法在许多不同大小的数据集上的分类精度进行了一些经验比较。在第2节和第3节中,我们简要描述了一些附加的理论结果。在第4节中,我们回顾了之前工作中的实验结果,这些结果展示了我们的在线算法相对于它们的批处理算法的性能。在本文中,我们通过比较它们的运行时间来扩展这些结果。我们使用两个不同的基本模型来测试我们的在线bagging和boosting算法:朴素贝叶斯分类器和mlp。我们选择朴素贝叶斯分类器,因为有一个无损的在线学习算法。对于给定的训练集,无损在线学习算法返回的模型与相应的批处理算法返回的模型相同。对于mlp,我们被迫使用有损的在线学习算法。特别是,我们不允许MLP的反向传播算法以通常允许的方式在多个时点内循环遍历整个训练集。总的来说,在使用朴素贝叶斯基模型时,我们的在线装袋和增强算法在分类精度方面与它们的批量同类算法有可比性。在线mlp相对于批处理mlp所经历的损失导致了在线bagging的显著损失和相对于批处理版本的增加。在线bagging往往大大改善在线mlp;然而,在我们的测试中,在线增强从来没有显著地优于单个在线mlp。我们还比较了批处理算法和在线算法的运行时间。如果在线基础模型学习算法没有明显慢于相应的批处理算法,那么bagging和在线bagging算法在我们的测试中,它们的运行时间没有太大的差异。另一方面,我们的在线增强算法运行速度明显快于批量增强。例如,在我们最大的数据集上,批处理助推的运行时间是在线助推的两倍,以实现可比较的分类精度。

2在线bagging

给定大小为N的训练数据集T,标准批量装袋创建M个基本模型。每个模型都通过调用批量学习算法进行训练,该算法通过从原始训练集中抽取替换后的随机样本来创建一个大小为N的引导样本。图1给出了bagging的伪代码。

图1.bagging算法

每个基本模型的训练集包含每个原始训练示例的K个副本,其中

也就是二项分布。当N→infin;时,K的分布趋于泊松(1)分布:P(K = K) ~ exp(- 1)/ K ![1][2]中讨论的,我们可以在线执行装袋如下:每一个培训例子d = (x, y)呈现给我们的算法,对于每一个基本模型,选择示例K ~Pdisson(1)倍,并相应地更新基础模型使用网络基本模型学习算法L(参见图2)。新例子分类相同的方式在网上和批处理bagging——未加权投票的基础模型。

图2.在线bagging算法

在线bagging是一个很好的近似批量装袋的程度,他们的基本模型学习算法产生类似的模型时训练类似分布的训练例子。在过去的工作[1][5]中,我们证明了如果向两种bagging算法提供相同的原始训练集,那么当原始训练集的大小增长到无穷大时,分批和在线bagging提供给基本模型的训练集上的分布收敛。我们还证明了在给定相同训练集的情况下,bagging和online bagging返回的分类器收敛于同一个分类器,因为在两种情况下模型和训练实例的数量都趋于无穷。首先,随着训练样本数量的增加,基本模型学习算法会返回收敛于同一分类器的分类器。第二种是,给定一个固定的训练集T,在线和批处理的基础模型学习算法对任意数量的T副本返回相同的分类器。例如,通过重复T中的每个例子来加倍训练集,可以得到与T相同的分类器。例如,这个条件适用于决策树和朴素贝叶斯分类器,但不适用于mlp,因为将训练集加倍可以有效地使反向传播训练的epoch数量加倍。由于篇幅有限,正式细节请参阅[5]。

图3.adaboost算法

3在线boosting

我们的在线boosting算法被设计成AdaBoost的在线版本。(代码如图3所示)AdaBoost生成一个序列的基本模型h1,h2,hellip;hellip;,hm加权训练集(用D1,D2,K,DM进行加权)。这样,当生成模型hm时,被模型hmminus;1错误分类的训练示例被给予总权重的一半,正确分类的示例被赋予剩下一半的权重。

图4.在线boosting算法

我们的在线boosting算法(图4)使用泊松分布模拟采样和替换,就像在线装袋一样。唯一的区别是,当一个基本模型分类训练的例子,这个例子的泊松分布的参数lambda;是增加时提交给下一个基本模型;否则就会减少。就像在AdaBoost中一样,我们的算法给出了一个阶段被误分类的例子,下一个阶段被误分类的例子占总权重的一半;正确分类的示例给出了剩下的一半权重。这是通过跟踪每个基本模型的正确分类和错误分类的总权重来实现的分别为训练例子(和)和使用这些更新每个基本模型的误差Em。此时,一个训练示例的权重将以与AdaBoost相同的方式更新。

一个值得关注的方面是,在AdaBoost中,一个例子的权重是根据一个基础模型在整个训练集上的表现进行调整的,而在在线boosting中,权重的调整只是基于前面看到的例子中基础模型的表现。要了解为什么这可能是一个问题,请考虑运行AdaBoost和在线增强10000个训练集。在AdaBoost中,他的第一个基础模型h1对所有10000个样本进行了训练,然后对第10个样本进行测试。在在线boosting里,在测试第十个例子之前,h1只训练了前十个例子。显然,在测试第十个训练例子的时候,我们可以预期两个h1会有很大的不同;因此,在第十次训练的例子中,AdaBoost里的h2和online boosting里的h2可能会呈现不同的权值。这又可能导致在生成h3的每个算法时,第十个示例的权重不同,等等。直观地说,我们希望在线增强能够获得一个良好的训练示例组合,以便基本模型及其在线增强中的规范化错误能够快速地收敛到AdaBoost中。这种收敛越快,训练样本的权重调整就越相似,它们的表现也就越相似。我们证明了对于朴素贝叶斯基模型,在线和批处理的增强算法收敛于相同的分类器,因为模型的数量和训练实例趋于无穷。

4实验结果

在本节中,我们将讨论几个数据集上的结果,表1给出了这些数据集的名称和训练示例、测试示例、输入和类的数量。人口普查收入数据集带有固定的训练和测试集,我们在实验中使用它们。对于其余的数据集,我们使用了5倍交叉验证。我们使用一些小的数据集进行了测试,结果表明,即使给定少量的数据点,在线算法的性能也可以与批处理算法相媲美。当然,我们的结果与更大的数据集更重要。除了三个之外,所有的数据集都来自UCI KDD存储库[6]。剩下的三个是选择的合成数据集,因为单个朴素贝叶斯分类器的性能在这三个数据集之间有显著差异。这些数据集使我们能够比较在线和批量集成算法在不同难度数据集上的性能。

4.1精度

我们使用了两种不同的基本模型类型:朴素贝叶斯分类器和多层感知器(MLPs)。两种套袋算法都生成了100个碱基模型。这两种增强算法都可以生成多达100个基本模型。所有显示的结果都基于10次5次交叉验证(除了在人口普查收入数据集上,我们使用提供的培训和测试集)。每运行一次批量算法,所有在线算法就会运行5次,训练集的随机顺序也不同。这是为了考虑训练实例的顺序对在线学习算法性能的影响。在线MLP使用反向传播进行训练,每个训练实例到达后对MLP进行十次更新;然而,该算法仅按其呈现的顺序遍历整个训练集一次。批量MLP通过使用反向传播在10个epoch(整个训练集的10个循环)内更新MLP进行训练。对比算法都是用配对t检验(alpha;= 0.05)。

表1.我们实验中使用的数据集

表2表明,集成算法的性能明显好于或差于单一朴素贝叶斯分类器。批处理算法和在线装袋算法的性能是相当的。(差异无统计学意义)多与批量朴素贝叶斯算法比较。这是由于朴素贝叶斯分类器[3]的稳定性。也就是说,尽管训练集不同,袋装集成中的朴素贝叶斯分类器倾向于以相同的方式对新示例进行分类(我们对所有测试示例至少获得了90%的一致性)。

表3展示了使用朴素贝叶斯分类器运行增强算法的结果。在“在线提升”一栏中,任何后面带有“ ”或“-”的条目都表明在线提升的效果明显好于或差于批量提升。批量提升在很多情况下都明显优于在线提升,尤其是在较小的数据集上。然而,与单一朴素贝叶斯分类器相比,增强和在线增强的性能有显著的一致性。也就是说,当其中一个明显更好或更差时与单一朴素贝叶斯分类器相比,另一种分类器的方法往往是相同的。

表2.Bagging与Online Bagging, Naive Bayes

表3.Boosting与Online Boosting, Naiuml;ve Bayes

表4显示了mlp运行套袋的结果。装袋条目以黑体/斜体显示,表明bagging明显优于/低于批量MLP。在线bagging条目以粗体/斜体显示,表明在线bagging明显优于/低于在线MLP。在它们之后使用“-”进行在线bagging的条目表明,对于该数据集,它的性能明显差于批量装袋。在线MLP的性能总是明显低于批量MLP;因此,在线装袋常常比批量bagging差很多也就不足为奇了。然而,在线装袋在大多数情况下确实比在线mlp表现得更好。

表5给出了使用MLP运行boosting的结果。在线MLP和boosting列中的条目以黑体/斜体显示,表明它相对于批量MLP有显著的性能优势/性能不足。在线助boosting中的条目给出黑体/斜体表示它相对于在线MLP的表现明显优于/逊于在线MLP的时间。

表4. Bagging与Online Bagging, MLPs

表5. Boosting与Online Boosting, MLPs

后面带有“-”的条目表示在线增强的执行时间明显低于批量增强。显然,使用在线MLP而不是批量MLP的显著损失使得在线增强算法明显比批量增强更差。

4.2运行时间

在本节中,我们将报告和分析我们所实验的批处理和在线算法的运行时间。影响在线学习算法与批量学习算法运行时间差异的因素有很多。在线学习算法的主要优势是能够不断更新他们的模型与新训练的例子——批处理算法常常不得不扔掉以前学模型和学习一种新的模型后添加新的训练集的例子。这显然是非常浪费的计算,是不可能有比可以存储更多的数据。此外, 批处理bagging至少需要遍历数据集MT次,其中M是基模型的个数,T是基模型学习算法需要遍历训练集构建一个模型的次数。因此,每个训练实例都要检查MT次。另一方面,在线bagging只需要扫过训练集一次,也就是说每个训练实例只检查M次(1次更新每个基模型的参数)。在线算法不需要存储整个训练集。批处理算法有时比相应的在线算法运行得更快。这是因为批处理算法通常可以通过一次性检查整个训练集来一次性设置它们的模型参数,而在线算法则必须针对每个训练实例更新一次它们的参数。

表6.Naiuml;ve Bayes和Ensembles的运行时间(秒)

表7. MLPs和Bagging.的运行时间(秒)

批量和在线推送之间的比较还增加了基本模型数量的因素。批量助推,当调用M基的上限模型,可以选择生成更少的模型——回想一下,如果一个模型的错误大于0.5,那么boosting将丢弃该模型并返回到目前为止生成的集成。在线推广没有这种设置,因为它不知道每个基本模型的最终错误率是多少。这种差异会导致批量增加的训练时间减少。然而,批量提振需要经过训练集M(T 1)次循环——M个基本模型每一个都需要经过训练集T次循环才能学习模型,每一个循环需要计算训练集上的误差。在线提升只需要扫过训练集一次。lt;

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[237366],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。