其他分享
首页 > 其他分享> > AutoML-第八章-TPOT

AutoML-第八章-TPOT

作者:互联网

第八章:TPOT: 自动化机器学习基于树的管道优化工具

摘要

随着数据科学日益成为主流,对数据科学工具的需求将不断增长,这些工具应更加易于访问,灵活和可扩展。为响应这一需求,自动化机器学习(AutoML)研究人员已开始构建可自动设计和优化机器学习管道的过程的系统。在本章中,我们介绍 TPOT v0.3 ,这是一个基于开源遗传程序的 AutoML 系统,该系统优化了一系列特征预处理器和机器学习模型,目的是在有监督的分类任务上最大化分类准确度。我们对 TPOT 进行了一系列 150 项监督分类任务的基准测试,发现在 21 项中 TPOT 的性能显著优于基本机器学习分析,而 TPOT 的准确性却在 4 个基准标准上降到了最低—所有这些工作都没有任何领域知识或人工输入。因此,基于遗传程序的 AutoML 系统在 AutoML 领域显示出了可观的前景。

简介

机器学习通常被描述为 “使计算机无需明确编程即可学习的能力的研究领域” [19]。尽管有这个共识,但是经验丰富的机器学习从业者知道,设计有效的机器学习管道通常是一项繁琐的工作,并且通常需要在机器学习算法,问题领域的专家知识和费时的蛮力搜索方面有相当大的经验才能完成[13]。因此,与机器学习爱好者所希望的相反,机器学习仍然需要大量的显式编程。

为了应对这一挑战,这些年来,已经开发出了几种自动化的机器学习方法[10]。在过去的几年中,我们一直在开发基于树的管道优化工具(TPOT),该工具可以针对给定的问题领域自动设计和优化机器学习管道[16],而无需人工干预。简而言之,TPOT 使用一个版本的遗传编程(genetic programming GP)优化了机器学习管道,遗传编程是一种用于自动构建计算机程序的著名的进化计算技术[1]。在之前,我们证明了将 GP 与 Pareto 优化结合使用可以使 TPOT 自动构建始终优于基本机器学习分析的高精度的紧凑管道[13]。在本章中,我们将基准扩展为包括 150 个监督分类任务,并在从遗传分析到图像分类等更多应用领域中评估 TPOT 。

本章是我们包含 TPOT 的 2016 年论文的扩展版本,该论文发表在 2016 ICML AutoML 研讨会上。

方法

在以下各节中,我们提供了基于树的管道优化工具(TPOT)v0.3 的概述,包括将机器学习操作用作遗传编程(GP)原语,基于树的管道用于将原语组合成工作的机器学习管道 ,GP 算法用于进化基于树的管道。在本章中,我们接下来将介绍用于评估 TPOT 最新版本的数据集。TPOT 是 GitHub 上的一个开源项目,其基础 Python 代码可在 https://github.com/rhiever/tpot 上找到。

机器学习管道算子

TPOT 的核心是对 python 机器学习包 scikit-learn [17] 的封装。因此,TPOT 中的每个机器学习管道算子(即 GP 原语)都对应于机器学习算法,例如监督分类模型或标准特征标量。下面列出的机器学习算法的所有实现均来自 scikit-learn(XGBoost 除外),并参考 scikit-learn 文档[17]和[9]来详细说明 TPOT 中使用的机器学习算法。

有监督分类算子:决策树,随机森林,eXtreme, 梯度增强分类器 (Gradient Boosting Classifier 来自 XGBoost), 对率回归,和 K 最近邻分类器。分类算子将分类器的预测作为一个新的特征,即管道的分类。

特征预处理算子:StandardScaler, RobustScaler, MinMaxScaler, MaxAbsScaler, RandomizedPCA, Binarizer 和 PolynomialFeatures. 预处理算子以某种方式修改数据集并返回修改后的结果。

特征选择算子:VarianceThreshold, SelectKBest, SelectPercentile, SelectFwe 以及 Recursive Feature Elimination (RFE). 特征选择算子使用一些标准减少数据集的特征数,并返回修改后的数据集。

如图 8.1 所示,我们还包括一个组合不同数据集的运算符,该运算符允许将数据集的多个修改后的变体组合到一个数据集中。此外,TPOT v0.3 不包括缺失值插补运算符,因此不支持具有缺失数据的数据集。最后,我们提供以整型和浮点型方式参数化各种运算符,例如,k最近邻分类器邻居的数量 k 。

构件基于树的管道

为了将这些运算符组合到机器学习管道中,我们将它们视为 GP 原语,并从中构造 GP 树。图 8.1 展示了一个基于树的管道示例,其中将数据集的两个副本提供给管道,每个操作符以连续的方式对其进行修改,合并为一个数据集,最后用于进行分类。除了每个管道必须有一个分类器作为其最终运算符的限制外,可以构造任意形状的机器学习管道,使其可以作用于数据集的多个副本。因此,GP 树提供了机器学习管道的固有灵活表示。

为了使这些基于树的管道能够运行,我们为数据集中的每个记录存储了三个附加变量。“ class” 变量指示每个记录的真实标签,并在评估每个管道的准确性时使用。“ guess” 变量表示管道对每个记录的最新预测,管道中最终分类运算符的预测存储为 “ guess”。最后,“ group” 变量指示记录是否用作内部训练或测试集的一部分,以使基于树的管道仅在训练数据上进行训练,并在测试数据上进行评估。我们注意到,作为训练数据提供给 TPOT 的数据集被进一步分为内部分层的 75%/ 25% 训练/测试集。

优化基于树的管道

为了自动生成和优化这些基于树的管道,我们使用在 Python 软件包 DEAP [7] 中实现的遗传编程(GP)算法[1]。TPOT GP 算法遵循标准的 GP 流程:首先,GP 算法可生成 100 个随机的基于树的管道,并在数据集中评估其平衡交叉验证准确性。对于每一代 GP 算法,算法都会根据 NSGA-II 选择方案选择总体中排名前 20 的管道[4],选择最大化数据集上的分类精度,同时使管道中的运算符数量最小的管道。选定的前 20 条管道中的每条都会为下一代种群产生 5 个副本(即后代),这些后代中的 5% 通过单点交叉与另一个后代交叉,然后剩余 90% 未受影响后代会随机改变一个点,插入或收缩突变(每个 1/3 的机会)。每一代,该算法都会更新在 GP 运行中任何时候发现的非支配解的 Pareto 前沿[4]。该算法重复了 100 代的评估-选择-交叉-变异过程-添加和调整可提高分类准确度的管道运算符,并修剪可降低分类准确性的运算符-此时,该算法从 Pareto 前端选择精度最高的管道作为运行中 “最佳” 管道的代表。

基准数据

我们从各种各样的来源中汇总了 150 个监督分类基准,包括 UCI 机器学习存储库[11],大型存储的基准存储库[18]和模拟的遗传分析数据集[20]。这些基准数据集的范围包括从 60 到 60,000 条记录,从很少到数百个特征,包括二元以及多分来监督分类问题。我们从广泛的应用领域中选择了数据集,包括遗传分析,图像分类,时间序列分析等等。因此,该基准称为 Penn 机器学习基准(PMLB)[14],它代表了一套全面的测试套件,可用于评估自动化的机器学习系统。

结果

为了评估 TPOT,我们在 150 个基准上分别运行了 30 个重复测试,其中每个重复测试都有 8 小时来完成 100 代优化(即 100×100 = 10,000 个管线评估)。在每次重复中,我们将数据集划分为分层的 75%/ 25% 训练/测试拆分,并为每个拆分和随后的 TPOT 运行使用不同的随机数生成器种子。

为了提供合理的控制作为基线比较,我们在 150 个基准上类似地评估了有 500 棵树木的随机森林的 30 个副本,这代表新手从业人员将执行的基本机器学习分析。我们还运行了一个 TPOT 版本的30个副本,该版本随机生成并评估了相同数量的管道(10,000),这代表在 TPOT 管道空间中的随机搜索。在所有情况下,我们将生成的管线或模型的准确性作为平衡准确性进行测量[21],它通过在每个类别的基础上计算准确性然后平均每个类别的准确性来纠正数据集中的类别频率不平衡。在本章的其余部分,我们将“平衡精度”简称为“准确性”。

如图 8.2 所示,在大多数数据集上,TPOT 和具有 500 棵树的随机森林的平均性能相似。总体而言,TPOT 发现的管道在 21 个基准上的性能统计上显著优于随机森林,在 4 个基准上的性能显着差,并且在 125 个基准上没有统计上的显著差异。(我们使用 Wilcoxon 秩和检验确定统计显着性,其中我们使用保守的 Bonferroni 校正的 (Bonferroni-corrected) p 值阈值 < 0.000333 ( 0.05 150 ) < 0.000333(\frac{0.05}{150}) <0.000333(1500.05​) 作为显著性。)在图 8.3 中,我们显示了 25 个基准的准确度分布具有显着差异,其中基准是根据两个实验之间的准确度的中位数的差异来分类的。

值得注意的是,TPOT 在基准测试上的大部分改进都是相当大的,对比随机森林分析,有几项的中位数精度提高了 10% 到 60% 。相比之下,在 4 个基准上,TPOT 的中位数准确度下降的幅度仅为 2% 到 5% 。在某些情况下,TPOT 的改进是通过发现有用的特征预处理器,这些特征预处理器可以使模型更好地对数据进行分类,例如,TPOT 发现在对 “Hill_valley” 基准进行建模之前,应用 RandomizedPCA 特征预处理器可以使 Random Forests 以近乎完美的准确性对数据集进行分类。在其他情况下,TPOT 的改进是通过对基准应用不同的模型进行的,例如 TPOT 发现邻居数 k = 10 的 k 最近邻分类器可以对 “parity5” 基准进行分类,而随机森林始终在这一基准上只能达到 0% 的准确度 。

当我们将 TPOT 与使用随机搜索的 TPOT 版本进行比较时(图 8.3 中的“ TPOT Random”),我们发现随机搜索通常可以发现与 TPOT 发现的管道准确性很有可比性的管道,除了在 “dis” 基准上,在该基准中 TPOT 始终发现性能更好的管道。对于所提出的基准中的 17 个,没有任何随机搜索在 24 小时内完成,我们通过在图 8.3 中将方框图留空来表明这一点。我们发现,即使具有可调模型的简单管道足以对基准问题进行分类,随机搜索也经常会为基准问题生成不必要的复杂管道。因此,即使在准确性方面随机搜索有时可以和 TPOT 一样好,但是以尽可能少的管道操作符实现高精度的管道的引导搜索,仍然在搜索运行时间,模型复杂性和模型可解释性方面有相当大的优势。

结论和未来工作

我们在 150 个监督分类数据集上对基于树的管道优化工具(TPOT)v0.3 进行了基准测试,发现它发现的机器学习管道可以在多个基准测试中胜过基本的机器学习分析。特别是,我们注意到 TPOT 在没有任何领域知识或人工输入的情况下发现了这些管道。因此,TPOT 在自动化机器学习(AutoML)领域中显示出可观的前景,我们将继续完善 TPOT,直到它不断发现具有人类竞争力的机器学习管道为止。

首先,我们将探索为基于遗传程序(GP)的 AutoML 系统(如 TPOT)提供更好的初始化的方法[8]。例如,我们可以使用元学习技术来智能匹配管道配置,这些管道配置可以很好地解决要解决的特定问题[6]。简而言之,来自先前机器学习运行的元学习信息可预测每个管道配置在特定数据集上的运行情况。为了将数据集按标准比例放置,元学习算法会根据数据集计算元特征,例如数据集大小,特征数量以及有关特征的各个方面,然后将其用于将数据集元特征映射到可能在具有这些元特征的数据集很好工作的相应管道配置。这样的智能元学习算法可能会改善 TPOT 敏感的初始化过程。

此外,我们将尝试描述机器学习管道的理想“形状”。 在 auto-sklearn 中,[5]对数据预处理器,特征预处理器和模型施加了简短且固定的管道结构。 在另一个基于 GP 的 AutoML 系统中,[22]允许 GP 算法设计任意形状的管道,并发现带有多个预处理器和模型的复杂管道对于信号处理问题很有用。因此,至关重要的是,如果 AutoML 系统要实现人类水平的竞争力,则必须能够设计任意形状的管道。

最后,遗传程序(GP)优化方法通常会因为优化大量解决方案而被批评,而对于某些优化问题而言,这有时可能很慢且很浪费资源。取而代之的是,可以通过在 GP 种群中创建一个集成来将 GP 所谓的弱点变成强项。Bhowan等[2] 以前使用标准的 GP 算法探索了这样的种群集成方法,并表明它可以显着提高性能,而且从 TPOT的 机器学习管道种群中创建集成是自然的扩展。

总而言之,这些实验表明,采用模型不可知的方法进行机器学习并允许机器自动发现在给定问题领域中最有效的预处理器和模型系列,可以获得很多收益。 这样,AutoML 可以通过自动化一些最繁琐(但最重要)的机器学习方面来彻底改变数据科学。

标签:机器,GP,基准,第八章,学习,TPOT,管道,AutoML
来源: https://blog.csdn.net/jiangshen2009/article/details/115201018