工作原理¶
AutoML 通常与一个或多个模型的超参数优化 (HPO) 相关联。或者与根据给定问题自动选择模型相关联。事实上,大多数 AutoML 框架都是这样做的。
AutoGluon 的独特之处在于它不依赖 HPO 来获得出色的性能[1]。它基于三个主要原则:(1) 训练各种不同的模型,(2) 在训练这些模型时使用套袋法 (bagging),以及 (3) 通过堆叠集成 (stack-ensembling) 这些模型将其预测能力结合成一个“超级”模型。以下各节将详细描述这些概念。
套袋法 (Bagging)¶
套袋法 (Bagging,又称 Bootstrap Aggregation) 是一种用于机器学习的技术,旨在提高算法的稳定性和准确性。核心思想是结合多个模型通常比任何单个模型能带来更好的性能,因为它可以减少过拟合并增强预测的鲁棒性。
一般来说,套袋法的 bootstrap 部分涉及从训练数据集中抽取许多随机子样本(有放回抽样,即同一数据点可以在一个样本中出现多次)。然后根据 bootstrap 样本训练不同的模型。
然而,AutoGluon 通过将套袋法与交叉验证结合来以不同的方式执行套袋法。除了套袋法的优点外,交叉验证还允许我们使用所有训练数据来训练和验证多个模型。这还能提高我们对训练模型得分的信心。该技术的工作原理如下:

分区:训练数据被分成 K 个折叠(或数据集的子集)[2]。
模型训练:对于每个折叠,使用除了该折叠之外的所有数据训练一个模型。这意味着我们使用数据的不同部分训练 K 个独立的模型实例。这被称为套袋模型。
交叉验证:每个模型实例都对照训练期间未使用的保留折叠进行评估。然后,我们将这些折叠的预测结果[3]串联起来,创建折叠外 (OOF) 预测。我们通过使用 OOF 预测和目标真实值计算评估指标来计算最终模型的交叉验证分数。务必对折叠外 (OOF) 预测有一个扎实的理解,因为它们是使堆叠集成工作(见下文)最关键的组成部分。
聚合:在预测时,套袋法会将所有这些独立模型的预测结果进行平均,以生成最终答案(例如,分类问题中的类别)。
AutoGluon 使用的每个模型都会重复执行此过程。因此,AutoGluon 在此过程中训练的模型数量为 N x K,其中 N 是模型的数量,K 是折叠的数量。
堆叠集成 (Stacked Ensembling)¶
从最一般的意义上讲,集成是机器学习中用于通过结合多个模型的优势来提高预测准确性的另一种技术。有多种执行集成的方法[4],这篇指南对其中的许多方法进行了很好的介绍。
AutoGluon 特别使用了堆叠集成。概括地说,堆叠集成是一种将模型预测作为数据额外特征加以利用的技术。该技术的工作原理如下:

模型层:堆叠集成就像一个多层蛋糕。每一层都由几个不同的套袋模型组成(见上文),这些模型除了使用训练数据中的原始特征外,还使用前一层的预测结果作为输入(特征)(类似于跳跃连接)。第一层(也称为基础层)仅使用训练数据中的原始特征。
加权集成:最后一层由一个“超级”模型组成,该模型结合了倒数第二层的预测结果[5]。这个模型通常被称为元模型,其任务是学习如何组合所有先前模型的输出,从而做出最终预测。可以把这个模型想象成一个领导者,通过权衡其他所有人的输入来做出最终决定。事实上,AutoGluon 正是这样做的:它使用一种贪婪加权集成算法来生成最终的元模型。
残差连接:请注意,堆叠集成的结构类似于神经网络。因此,用于神经网络的高级技术(例如 dropout、跳跃连接等)也可以在此应用。
如何训练:在训练时,避免数据泄露至关重要,因此我们使用每个套袋模型的折叠外 (OOF) 预测,而不是直接使用套袋模型在训练数据上进行预测。通过使用折叠外预测,我们确保训练数据集中的每个实例都有一个相应的预测,该预测是由未在该实例上进行训练的模型生成的。这种设置模拟了最终集成模型将如何在新数据、未见数据上运行。
如何推理:在推理时,我们无需担心数据泄露,我们只需平均一个套袋中所有模型的预测结果,以生成其预测结果。
考虑到套袋法和堆叠集成,AutoGluon 训练的模型总数为 M x N x K + 1,其中
M 是集成中的层数,包括基础层但不包括最后一层
N 是每层的模型数量
K 是套袋法的折叠数量
1 是最终的元模型(加权集成)
使用哪些模型¶
整个过程的一个关键部分是决定训练和集成哪些模型。虽然集成总体上是一个非常强大的技术;选择合适的模型可能是平庸性能和卓越性能之间的区别。
为了回答这个问题,我们在 200 个不同的数据集上评估了 1,310 个模型,以比较不同算法和超参数配置组合的性能。评估结果可在该仓库中找到。
根据这项广泛评估的结果,我们选择了一组预定义的配置在 AutoGluon 中默认使用[6],这些配置基于期望的性能(例如,“最佳质量”、“中等质量”等)。这些预设甚至定义了模型应该按照怎样的顺序进行训练,以最大限度地利用训练时间。