AutoML-第四章-Auto-WEKA

第四章:Auto-WEKA: WEKA 中的自动化模型选择和参数优化

摘要

存在许多不同的机器学习算法。考虑到每个算法的超参数,总的来说,可能的替代方案数量惊人地多。我们考虑同时选择一个学习算法并设置其超参数的问题。我们发现,利用贝叶斯优化中的最新创新,可以通过完全自动化的方法解决此问题。具体来说,我们考虑特征选择技术和 WEKA 标准分发中实施的所有机器学习方法,涵盖 2 种集成方法,10 种元方法,28 个基本学习器以及每个学习器的超参数设置。在 UCI 库,KDD Cup 09,MNIST 数据集的各种变体和 CIFAR-10 中的 21 种流行数据集中,我们得到的性能通常比使用标准选择和超参数优化方法好得多。我们希望我们的方法将帮助非专业用户更有效地找到适合其应用的机器学习算法和超参数设置,从而实现更高的性能。

简介

机器学习工具的用户越来越多地是需要现成解决方案的非专家。机器学习社区通过开源软件包(例如 WEKA [15]和 mlr [7])提供了各种复杂的学习算法和特征选择方法,从而极大地帮助了此类用户。此类软件包要求用户做出两种选择 :选择学习算法并通过设置超参数对其进行自定义(如果合适,还可以控制特征选择)。面对这些自由度,做出正确的选择也许是有挑战性的,让许多用户根据信誉或直观吸引力来选择算法和/或将超参数设置为默认值。显然,使用这种方式得到的性能可能远差于最佳的方法和超参数设置。

这为机器学习提出了一个自然的挑战:给定一个数据集,自动并同时选择一种学习算法并且设置其超参数以优化经验性能。我们将其称为算法选择和超参数优化(CASH)的组合问题。我们在第 4.3 节中正式定义它。 过去有大量工作分别针对模型选择,例如[1,6,8,9,11,24,25,33]和超参数优化,例如[3–5,14,23,28,30]。而尽管它具有实际的重要性,但我们惊讶地发现文献中 CASH 问题的变化有限。此外,它们为每个算法考虑了固定且数量相对较少的参数配置,例如参见[22]。

可能的解释是,搜索学习算法及其超参数的组合空间非常具有挑战性:响应函数嘈杂且空间是高维的,涉及分类和连续选择,并且包含层次依赖性(例如,一个学习算法的超参数仅在选择了该算法的情况下才有意义;在集成方法中的算法选择仅在选择该继承方法时才有意义;等等)。 另一个相关的工作是关于元学习过程,该过程利用数据集的特征(例如所谓的界标算法的性能)来预测哪种算法或超参数配置会很好地执行[2,22,26,32]。虽然我们在本章中研究的 CASH 算法从头开始应用于每个新数据集,但是这些元学习过程利用了以前数据集的信息,这些信息可能并不总是可用。

在下面的内容中,我们证明了 CASH 可以看作是单个层次结构的超参数优化问题,在该问题中,甚至算法本身的选择也被视为超参数。我们还表明,基于这种问题的表达,最近的贝叶斯优化方法可以在合理的时间内以最少的人力获得高质量的结果。在讨论了一些预备知识(第4.2节)之后,我们定义了 CASH 问题并讨论了解决该问题的方法(第4.3节)。然后,我们在开源软件包 WEKA(第4.4节)中定义了一个包含大量学习器和特征选择器的具体 CASH 问题,并表明在算法和超参数的组合空间中进行搜索可得到比标准算法选择和超参数优化方法更好性能的模型(见第 4.5 节)。更具体地说,我们表明,最近的贝叶斯优化程序 TPE [4] 和 SMAC [16] 经常发现算法和超参数的组合优于现有的基线方法,特别是在大型数据集上。

本章以之前的两篇论文为基础,分别发表在 KDD 2013 的论文集[31]和 2017 年的机器学习研究期刊(journal of machine learning research JMLR)中[20]。

预备知识

我们考虑学习一个函数 f : X → Y f: \mathcal{X} \to \mathcal{Y} f:XY ,其中 Y \mathcal{Y} Y 是有限的(用于分类)或连续的(用于回归)。一个学习算法 A A A 将一个训练数据点 d i = ( x i , y i ) ∈ X × Y d_i = (x_i, y_i) \in \mathcal{X} \times \mathcal{Y} di=(xi,yi)X×Y 的集合 { d 1 , … , d n } \{d_1, \ldots, d_n\} {d1,,dn} ,映射到这样一个函数,该函数通常通过模型参数的矢量来表示。大多数学习算法 A A A 进一步公开了超参数 λ ∈ Λ \lambda \in \Lambda λΛ ,这改变了学习算法 A λ A_{\lambda} Aλ 自身的工作方式。例如,超参数用于描述修饰长度的惩罚,隐藏层中神经元的数量,决策树中的叶子必须包含多少个数据点才能分裂等。这些超参数通常在一个 “外部循环” 中优化,其使用交叉验证评估每个超参数配置的性能。

模型选择

给定一个学习算法的集合 A \mathcal{A} A 以及有限数量的训练数据 D = { ( x 1 , y 1 ) , … , ( x n , y n ) } \mathcal{D} = \{(x_1, y_1), \ldots, (x_n, y_n) \} D={(x1,y1),,(xn,yn)} ,模型选择的目标是确定最具泛化性能的算法 A ∗ ∈ A A^* \in \mathcal{A} AA 。将 D \mathcal{D} D 分解为不相交的训练和验证集 D t r a i n ( i ) D_{train}^{(i)} Dtrain(i) D v a l i d ( i ) D_{valid}^{(i)} Dvalid(i) ,通过将 A ∗ A^* A 应用于 D t r a i n ( i ) D_{train}^{(i)} Dtrain(i) 学习算法 f i f_i fi ,并在 D v a l i d ( i ) D_{valid}^{(i)} Dvalid(i) 上评估这些函数的预测性能,来评估泛化性能。这样就可以将模型选择问题写为:
A ∗ ∈ arg ⁡ min ⁡ A ∈ A 1 k ∑ i = 1 k L ( A , D t r a i n ( i ) , D v a l i d ( i ) ) A^* \in \arg \min_{A \in \mathcal{A}} \frac{1}{k} \sum_{i=1}^{k} \mathcal{L}(A, \mathcal{D}_{train}^{(i)}, \mathcal{D}_{valid}^{(i)}) AargAAmink1i=1kL(A,Dtrain(i),Dvalid(i))
其中 L ( A , D t r a i n ( i ) , D v a l i d ( i ) ) \mathcal{L}(A, \mathcal{D}_{train}^{(i)}, \mathcal{D}_{valid}^{(i)}) L(A,Dtrain(i),Dvalid(i)) A A A D t r a i n ( i ) \mathcal{D}_{train}^{(i)} Dtrain(i) 训练和在 D v a l i d ( i ) \mathcal{D}_{valid}^{(i)} Dvalid(i) 上评估得到的损失。

我们使用 k 折交叉验证[19],将训练数据分为 k 个相等的部分 D v a l i d ( 1 ) , … , D v a l i d ( k ) \mathcal{D}_{valid}^{(1)}, \dots, \mathcal{D}_{valid}^{(k)} Dvalid(1),,Dvalid(k) ,以及集合 $\mathcal{D}{train}^{(i)} = \mathcal{D} \backslash \mathcal{D}{valid}^{(i)}, i = 1, \ldots, k $ .

超参数优化

优化给定学习算法 A A A 的超参数 λ ∈ Λ \lambda \in \Lambda λΛ 的问题在概念上与模型选择相似。一些关键的区别是超参数通常是连续的,超参数空间通常是高维的,我们可以利用不同超参数设置 λ 1 , λ 2 ∈ Λ \lambda_1, \lambda_2 \in \Lambda λ1,λ2Λ 之间的相关结构。给定 n n n 个超参数 λ 1 , … , λ n \lambda_1, \ldots, \lambda_n λ1,,λn 及其所属域 Λ 1 , … , Λ n \Lambda_1, \ldots, \Lambda_n Λ1,,Λn ,超参数空间 Λ \Lambda Λ 是这些域的叉积的子集: Λ ∈ Λ 1 × ⋯ × Λ n \Lambda \in \Lambda_1 \times \cdots \times \Lambda_n ΛΛ1××Λn 。 此子集通常是严格的,例如当一个超参数的某些设置使其他超参数不活动时。比如,如果将网络深度设置为一或二,则确定深度信念网络第三层的详细信息的参数将不相关。同样,如果我们改用其他内核,则支持向量机的多项式内核的参数也将不相关。

更正式地,根据 [17],我们说一个超参数 λ i \lambda_i λi 被另一个超参数 λ j \lambda_j λj 约束,如果 λ i \lambda_i λi 仅在超参数 λ j \lambda_j λj 的值取自给定集合 V i ( j ) ⊂ Λ j V_i(j) \subset \Lambda_j Vi(j)Λj 时才有效。在这种情况下,我们称 λ j \lambda_j λj λ i \lambda_i λi 的父辈。条件超参数又可以是其他条件超参数的父辈,从而产生树形结构的空间[4]或在某些情况下产生有向无环图(DAG)[17]。给定这样一个结构化的空间,(分层)超参数优化问题可以写成:
λ ∗ ∈ arg ⁡ min ⁡ λ ∈ Λ 1 k ∑ i = 1 k L ( A λ , D t r a i n ( i ) , D v a l i d ( i ) ) \lambda^* \in \arg \min_{\lambda \in \Lambda} \frac{1}{k} \sum_{i = 1}^{k} \mathcal{L}(A_{\lambda}, \mathcal{D}_{train}^{(i)}, \mathcal{D}_{valid}^{(i)}) λargλΛmink1i=1kL(Aλ,Dtrain(i),Dvalid(i))

组合算法选择和超参数优化 (CASH)

给定一组算法 A = { A ( 1 ) , … , A ( k ) } \mathcal{A} = \{A^{(1)}, \ldots, A^{(k)}\} A={A(1),,A(k)} 及其相关的超参数空间 Λ ( 1 ) , … , Λ ( k ) \Lambda^{(1)}, \ldots, \Lambda^{(k)} Λ(1),,Λ(k) ,我们将组合算法选择和超参数优化问题 (CASH)定义为,计算
A λ ∗ ∗ ∈ arg ⁡ min ⁡ A ( j ) ∈ A , λ ∈ Λ ( j ) 1 k ∑ i = 1 k L ( A λ ( j ) , D t r a i n ( i ) , D v a l i d ( i ) ) A^*_{\lambda^*} \in \mathop{\arg\min}_{A^{(j)} \in \mathcal{A}, \lambda \in \Lambda^{(j)}} \frac{1}{k} \sum_{i=1}^{k} \mathcal{L}(A_{\lambda}^{(j)}, \mathcal{D}_{train}^{(i)}, \mathcal{D}_{valid}^{(i)}) AλargminA(j)A,λΛ(j)k1i=1kL(Aλ(j),Dtrain(i),Dvalid(i))
我们注意到,该问题可以重新构造为单个组合层次超参数优化问题,参数空间为 $\Lambda = \Lambda^{(1)} \cup \cdots \cup \Lambda^{(k)} \cup {\lambda_r} $ ,其中 λ r \lambda_r λr 是在算法 A ( 1 ) , … , A ( k ) A^{(1)}, \ldots, A^{(k)} A(1),,A(k) 之间进行选择的新的根级别超参数。每个子空间 Λ ( i ) \Lambda^{(i)} Λ(i) 的根级参数都以 λ r \lambda_r λr 被实例化为 A i A_i Ai 为条件。

原则上,可以有多种方式解决问题(4.1)。一种很有前景的方法是贝叶斯优化[10],尤其是基于序列模型的优化(Sequential Model-Based Optimization SMBO)[16],它是一种通用的随机优化框架,可以同时优化分类和连续超参数,并且可以利用源于条件参数的分层结构。SMBO(在 算法 1 中概述)首先构建一个模型 M L \mathcal{M}_{\mathcal{L}} ML ,该模型捕获损失函数 L \mathcal{L} L 对超参数设置 λ \lambda λ (Algorithm 1 中的第 1 行)的依赖。然后,它迭代执行以下步骤:使用 M L \mathcal{M}_{\mathcal{L}} ML 确定一个有前景的候选超参数设置 λ \lambda λ 以评估下一个(第3行); 评估 λ \lambda λ 的损失 c c c(第4行); 并使用获得的新数据点 ( λ , c ) (\lambda, c) (λ,c) 更新模型 M L \mathcal{M}_{\mathcal{L}} ML (第5-6行)。

为了使用模型 M L \mathcal{M}_{\mathcal{L}} ML 选择其下一个超参数配置 λ \lambda λ ,SMBO 使用所谓的采集函数 a M L : Λ → R a_{\mathcal{M}_{\mathcal{L}}} : \Lambda \to \mathbb{R} aML:ΛR ,该函数使用模型 M L \mathcal{M}_{\mathcal{L}} ML 在任意超参数配置 λ ∈ Λ \lambda \in \Lambda λΛ 上的预测分布来量化(以封闭形式)关于 λ \lambda λ 的有用知识。然后,SMBO 只需在 Λ \Lambda Λ 上最大化此函数即可选择最有用的配置 λ \lambda λ ,然后进行评估。已经存在一些经过充分研究的采集函数[18, 27, 29];所有这些都旨在自动权衡利用(在已知表现良好的区域中局部优化超参数)与探索(在相对未开发的空间区域尝试超参数),以避免过早收敛。在这项工作中,我们在一给定的损失 c m i n c_{min} cmin 上最大化可达到的正期望改进(positive expected improvement EI)[27]。令 c ( λ ) c(\lambda) c(λ) 表示超参数配置 λ \lambda λ 的损失。则 c m i n c_{min} cmin 上的正改善函数定义为
I c m i n ( λ ) : = max ⁡ { c m i n − c ( λ ) , 0 } I_{c_{min}}(\lambda) := \max \{c_{min} - c(\lambda), 0 \} Icmin(λ):=max{cminc(λ),0}
显然,我们不知道 c ( λ ) c(\lambda) c(λ) ,然而,我们可以针对当前模型 M L \mathcal{M}_{\mathcal{L}} ML 计算其期望:
E M L [ I c m i n ( λ ) ] = ∫ − ∞ c m i n max ⁡ { c m i n − c ( λ ) , 0 } ⋅ p M L ( c ∣ λ ) d c \mathbb{E}_{\mathcal{M}_{\mathcal{L}}} [I_{c_{min}}(\lambda)] = \int_{-\infty}^{c_{min}} \max \{c_{min} - c(\lambda), 0 \} \cdot p_{\mathcal{M}_{\mathcal{L}}}(c|\lambda)dc EML[Icmin(λ)]=cminmax{cminc(λ),0}pML(cλ)dc
我们简要回顾一下本章使用的 SMBO 方法。

基于顺序模型的算法配置 (Sequential Model-Based Algorithm Configuration SMAC)

基于顺序模型的算法配置(SMAC)[16]支持各种模型 p ( c ∣ λ ) p(c|\lambda) p(cλ) 来捕获损失函数 c c c 在超参数 λ \lambda λ 上的依赖性,包括近似的高斯过程和随机森林。在本章中,我们使用随机森林模型,因为它们在离散和高维输入数据中表现良好。SMAC 通过将 λ \lambda λ 中的非活动条件参数实例化为用于模型训练和预测的默认值来处理条件参数。这使各个决策树可以包括 “超参数 λ i \lambda_i λi 是否活动” 类型的划分,从而使他们可以专注于活动的超参数。尽管通常不将随机森林视为概率模型,但 SMAC 获得了 p ( c ∣ λ ) p(c|\lambda) p(cλ) 预测平均值 μ λ \mu_{\lambda} μλ 和方差 σ λ 2 \sigma_{\lambda}^2 σλ2 作为 λ \lambda λ 的单个树的预测上的频度估计;然后将 p M L ( c ∣ λ ) p_{\mathcal{M}_{\mathcal{L}}}(c|\lambda) pML(cλ) 建模为高斯分布 N ( μ λ , σ λ 2 ) \mathcal{N}(\mu_{\lambda}, \sigma_{\lambda}^2) N(μλ,σλ2)

SMAC 使用公式 4.2 中定义的期望改进标准,将 c m i n c_{min} cmin 实例化为迄今为止测得的最佳超参数配置的损失。在 SMAC 的预测分布 p M L ( c ∣ λ ) = N ( μ λ , σ λ 2 ) p_{\mathcal{M}_{\mathcal{L}}}(c|\lambda) = \mathcal{N}(\mu_{\lambda}, \sigma_{\lambda}^2) pML(cλ)=N(μλ,σλ2) ,这种期望是闭式的表达式
E M L [ I c m i n ( λ ) ] = σ λ ⋅ [ u ⋅ Φ ( u ) + φ ( u ) ] \mathbb{E}_{\mathcal{M}_{\mathcal{L}}} [I_{c_{min}}(\lambda)] = \sigma_{\lambda} \cdot [u \cdot \Phi(u) + \varphi(u)] EML[Icmin(λ)]=σλ[uΦ(u)+φ(u)]
其中 u = c m i n − μ λ σ λ u = \frac{c_{min} - \mu_{\lambda}}{\sigma_{\lambda}} u=σλcminμλ ,且 φ \varphi φ Φ \Phi Φ 分别表示标准正态分布的概率密度函数和累积分布函数

SMAC 旨在在嘈杂的函数评估下进行稳健的优化,并因此采用特殊的机制来跟踪其最知名的配置,并确保对其配置的性能评估具有高度的信心。由于要在等式 (4.1) 中优化的函数是一组损失项的平均值 (每个损失项对应于从训练集中构造的一对 D t r a i n ( i ) D_{train}^{(i)} Dtrain(i) D v a l i d ( i ) D_{valid}^{(i)} Dvalid(i) ) ,因此可以在算法选择和超参数优化上利用这种针对嘈杂函数评估的鲁棒性。SMAC 中的一个关键思想是通过一次评估这些项来逐步更好地估计该均值,从而在准确性和计算成本之间进行权衡。为了使新配置成为新的现役配置,它在每次比较中都必须胜过以前的配置:仅考虑一折,两折,直到之前用于评估现有配置的总折数。进而,每当现有配置在这种比较中幸存下来,它会根据新的折数进行评估,直至达到可用总数,这意味着用于评估现有配置的折数会随着时间增长。因此,仅考虑一次折叠,就可以丢弃性能不佳的配置。

最后,SMAC 还实现了多样化机制,即使在模型被误导的情况下也能实现鲁棒的性能,并探索搜索空间的新部分:每次第二个配置都随机选择。由于刚刚描述的评估过程,这所需的开销比人们想象的要少。

Auto-WEKA

为了证明自动方法解决 CASH 问题的可行性,我们构建了 Auto-WEKA,它为 WEKA 机器学习包中实现的学习器和特征选择器解决了此问题[15]。请注意,虽然我们专注于 WEKA 中的分类算法,但不存在将我们的方法扩展到其他设置的障碍。实际上,另一个使用相同底层技术的成功系统是 auto-sklearn [12]。

图 4.1 显示了所有支持的学习算法和特征选择器以及算法超参数的数量。元方法采用单个基本分类器及其参数作为输入,而集成方法可以采用任意数量的基本学习器作为输入。我们允许元方法使用具有任何超参数设置的任何基础学习器,并允许集成方法使用具有任何超参数设置的多达五个学习器。并非所有学习器都适用于所有数据集(例如,由于分类器无法处理丢失的数据)。对于给定的数据集,我们的 Auto-WEKA 仅考虑适用学习器的子集来实现自动化。在构建任何模型之前,特征选择是作为预处理阶段运行的。

图 4.1 中的算法具有多种超参数,它们从连续间隔,整数范围和其他离散集获取值。我们根据其语义将统一值或对数统一值与每个数值参数关联起来。例如,我们为岭回归惩罚设置了对数统一先验,为随机森林中的树的最大深度设置了统一先验。Auto-WEKA 可直接使用连续的超参数值来达到机器的精度。我们强调,这种组合式超参数空间比基础学习器的超参数空间的简单结合要大得多,因为集成方法最多允许 5 个独立的基学习器。元方法和集成方法以及特征选择进一步增加了 AutoWEKA 超参数空间的总大小。

Auto-WEKA 使用上述 SMAC 优化器解决了 CASH 问题,并通过 WEKA 程序包管理器向公众开放;您可以在 https://github.com/automl/autoweka 上找到源代码,而官方项目的网站为 http://www.cs.ubc.ca/labs/beta/Projects/autoweka。对于本章所述的实验,我们使用了 Auto- WEKA 版本 0.5。最新版本所获得的结果是相似的。由于计算量大,我们没有重复全部实验。

实验评估

我们在 21 个著名的基准数据集上评估了 Auto-WEKA(参见表4.1):来自 UCI 库的 15 个数据集[13]; [5]中使用的 “convex”,“ 基本 MNIST” 和 “带有背景图像的旋转 MNIST”任务; 来自 KDD Cup ‘09 的下架任务;以及两个版本的 CIFAR-10 图像分类任务[21](CIFAR-10-Small 是 CIFAR-10 的子集,其中仅使用前 10,000 个训练数据点,而不是全部 50,000)请注意,在实验评估中 ,我们专注于分类任务。对于具有预定义训练/测试拆分的数据集,我们使用了该拆分。否则,我们将数据集随机分为 70% 训练和 30% 测试数据。 我们从所有优化方法中保留了测试数据;它仅在离线分析阶段中用于评估各种优化方法发现的模型。

对于每个数据集,我们使用每个超参数优化算法运行 Auto-WEKA,总时间预算为30小时。对于每种方法,我们使用不同的随机种子执行了 25 次运行,然后(为了在传统工作站上模拟并行化),使用有放回抽样来重复选择四个随机运行,并报告具有最佳交叉验证性能的运行。

在早期的实验中,我们观察到在少数情况中,Auto-WEKA 的 SMBO 方法选择了具有出色训练性能的超参数,但结果证明泛化效果很差。为了使 Auto-WEKA 能够检测到这种过度拟合,我们将其训练集划分为两个子集:70%用于 SMBO 方法内部,30% 的验证数据仅在 SMBO 方法完成后使用。

基线方法

Auto-WEKA 旨在帮助非专业的机器学习技术用户。这样的用户可能会采用的一种自然方法是,对每种技术的训练集执行未经修改的超参数的 10 折交叉验证,然后选择跨折平均错误分类误差最小的分类器。我们将把这种方法应用于我们的 WEKA 学习器集合,称为 Ex-Def;对于具有默认超参数的 WEKA,这是最佳选择。

对于每个数据集,表 4.2 中的第二和第三列表示在给定所有训练数据并在测试集上进行评估的情况下,默认学习器表现出的最好和最差“黑盒性能”。我们观察到,表现最好和最差的学习器之间的差距非常大,例如,Dorothea 数据集的错误分类率为 4.93% vs. 99.24%。这表明某种形式的算法选择对于实现良好的性能至关重要。

我们将使用的更强基准是这种方法,除了选择学习器之外,还可以从预定义的集合中最佳地设置其超参数。更准确地说,此基准针对每个基础学习器在超参数设置的网格上进行了详尽的搜索,将数值参数离散为三个点。我们将此基线表示为网格搜索,并注意到,作为一种算法和超参数设置的联合空间中的优化方法,它是一种简单的 CASH 算法。但是,这是非常昂贵的,在 Gisette,Convex,MNIST,Rot MNIST + BI 和两个 CIFAR 变体上每个都需要 10,000 个以上的 CPU 小时,这使其在大多数实际应用中无法使用。(相比之下,我们仅为 Auto-WEKA 分配了 120 个 CPU 小时。)

表 4.2(第 4 列和第 5 列)显示了通过网格搜索评估的所有分类器在测试集上最佳和最差的“黑盒性能”。将这些性能与使用 Ex-Def 获得的默认性能进行比较,我们注意到,在大多数情况下,甚至可以通过选择更好的超参数设置来改善 WEKA 的最佳默认算法,有时甚至是相当大的改进:例如,在 CIFAR-10 小任务中,网格搜索提供了比 Ex-Def 减少 13% 的错误率。

在先前的工作中已经证明,在保持整体时间预算不变的情况下,网格搜索的性能优于超参数空间上的随机搜索[5]。我们的最终基线(随机搜索)实现了这种方法,挑选算法和超参数,并对其进行随机采样,然后在 10 折交叉验证上计算其性能,直到用尽时间预算为止。对于每个数据集,我们首先使用 750 CPU 小时来计算算法和超参数的随机采样组合的交叉验证性能。然后,我们通过对组合样本进行采样而不进行替换来模拟随机搜索的运行,这些结果仅消耗了 120 CPU 小时,而且还返回了性能最佳的采样组合。

交叉验证性能的结果

表 4.2 的中间部分报告了我们的主要结果。首先,我们注意到,对所有基本分类器的超参数进行网格搜索在 17/21 的案例下比Ex-Def产生更好的结果。这强调了不仅要选择正确的算法,而且还应正确设置其超参数的重要性。

但是,我们为网格搜索提供了非常大的时间预算(每个数据集通常会超过 10,000 CPU 小时,总计超过 10 CP U年),这意味着在实践中通常不可行。

相比之下,我们对于每个其他方法,每个数据集仅提供 4×30 CPU 小时;尽管如此,它们仍然比网格搜索产生更好的性能,在 14/21 案例下更出色。在 9/21 案例下,随机搜索的性能优于网格搜索,这突显了即使是耗费大量时间预算的详尽的网格搜索也不是正确的选择。我们注意到,有时 Auto-WEKA 在基线上的性能提升是可观的,在 6/21 案例中,交叉验证损失(在这种情况下为误分类率)相对降低了10%以上。

测试性能的结果

刚刚呈现的结果表明,Auto-WEKA 在优化其给定的目标函数方面是有效的。但是,这还不足以让我们得出结论,即它适合泛化性能很好的模型。随着机器学习算法的超参数数量的增加,其过拟合的可能性也随之增加。交叉验证的使用大大提高了 Auto-WEKA 对过拟合的鲁棒性,但是由于其超参数空间远大于标准分类算法的空间,因此,仔细研究是否(以及在何种程度上)会过拟合也是很重要的问题。

为了评估泛化性能,我们通过像以前一样运行 Auto-WEKA(在训练集上交叉验证),在整个训练集上训练 A λ A_{\lambda} Aλ ,然后在测试集上评估结果模型,来确定选择的算法和超参数设置的组合 A λ A_{\lambda} Aλ 。表 4.2 的右部分报告了使用所有方法获得的测试性能。

广义上讲,与交叉验证性能相似的趋势保持不变:Auto-WEKA 优于基线,网格搜索和随机搜索的性能优 于Ex-Def 。但是,性能差异不那么明显:仅在 15/21 案例下,网格搜索比 Ex-Def 产生更好的结果,而在 7/21 案例下,随机搜索反而优于网格搜索。Auto-WEKA 在 15/21 案例下优于基线。值得注意的是,在 13 个最大的数据集中的 12 个中,Auto-WEKA 的表现优于基线。我们将其归因于以下事实:过拟合的风险随数据集大小的增加而降低。有时候,与其他方法相比,Auto-WEKA 的性能显着提高,在 3/21 案例下,测试错误分类率的相对降低超过了 16%。

如前所述,Auto-WEKA 在优化交叉验证性能时仅使用了其训练集的 70%,保留了剩余的30%用于评估过拟合的风险。在任何时候,Auto-WEKA 的 SMBO 方法都跟踪其现有模型(迄今为止,交叉验证错误分类率最低的超参数配置)。完成 SMBO 程序后,Auto-WEKA 会从中提取这些模型的轨迹,并根据保留的 30% 验证数据计算其泛化性能。然后计算训练性能序列之间的 Spearman 等级系数(由 SMBO 方法通过交叉评估)和泛化性能。

结论

在这项工作中,我们证明了可以通过实用,完全自动化的工具解决组合算法选择和超参数优化(CASH)的艰巨问题。最新的贝叶斯优化技术使这成为可能,该技术迭代地构建算法/超参数环境的模型,并利用这些模型来识别空间中值得研究的新点。

我们构建了一个工具 Auto-WEKA,充分利用了 WEKA 中的全部学习算法,并使非专家可以轻松构建适用于特定应用场景的高质量分类器。在 21 个重要数据集上进行的广泛实证比较表明,Auto-WEKA 通常优于标准算法选择和超参数优化方法,尤其是在大型数据集上。

社区贡献

Auto-WEKA 是第一种使用贝叶斯优化的方法,它只需按一下按钮,即可自动实例化高度参数化的机器学习框架。自从最初发布以来,它已被工业界和学术界的许多用户所采用;与 WEKA 软件包管理器集成的 2.0 系列已被下载超过 30,000 次,平均每周下载 550 次以上。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值