这个就是AUTOML自动机器学习框架,相较于其他的深度学习,它融合了一点深度学习模型。

AutoGluon-Tabular: Robust and Accurate AutoML for Structured Data

  • 摘要
  • 1. 介绍
  • 2. AutoGluon-Tabular
    • 2.1 The fit API
    • 2.2. 数据处理
    • 2.3. 模型类别
    • 2.4. 神经网络
    • 2.5. 多层堆栈集成
    • 2.6. 重复k折装袋
    • 2.7. 训练策略
  • 3. AutoML 框架
  • 4.训练策略
    • 4.1. 步骤
    • 4.2. 结果
    • 4.3. 消融试验
  • 5 结论

摘要

1、开源框架,在结构化数据里表现优异,只需要一行Python就可以在未处理的表格数据集(如CSV文件)里处理,超参数什么的都不用设置,自动进行。

2、测评了市面上主流的AutoML框架,AutoGluon更快、更健壮、更准确。

1. 介绍

机器学习发展势头良好,但是机遇与风险并存。AutoML框架提供了一个诱人的替代方案。对于新手来说,他们消除了部署高性能ML模型的许多障碍。对于专家来说,它们提供了只实现一次最佳ML实践的潜力(包括模型选择、集成、超参数调优、特征工程、数据预处理、数据拆分等策略),然后能够重复部署它们。这使得专家可以将其知识扩展到许多问题,而不需要频繁的人工干预。

在本文中,我们关注的是表格数据的回归和分类问题,之前有一些自动框架也可以做,但是就是这不好那不好的。

在本文中,我们介绍了AutoGluon Tabular,这是一个易于使用且高度精确的Python库,用于具有表格数据的AutoML。与之前专注于CASH的工作相比,AutoGluon Tabular执行高级数据处理、深度学习和多层模型集成。它自动识别每列中的数据类型,以进行稳健的数据预处理,包括对文本字段的特殊处理。

剩下都是从各个角度介绍本文提出框架的优点,略。

2. AutoGluon-Tabular

提出AutoML框架要遵循一下标准:

  1. 简易性
  2. 鲁棒性好
  3. 容错率高
  4. 设定训练时间限制

2.1 The fit API

假如有一个csv文件,输入和标签都在包含在列内,就可以这样写

from autogluon import TabularPrediction as task
predictor = task.fit("train.csv", label="class")
predictions = predictor.predict("test.csv")

在对fit()的调用中,AutoGluon自动:预处理原始数据,识别这是什么类型的预测问题(二进制、多类分类或回归),将数据划分为不同的折叠,用于模型训练与验证,单独拟合各种模型,并最终创建一个优化的模型集合,其性能优于任何单独训练的模型。对于愿意忍受更长训练时间以最大化预测准确性的用户,fit()提供了可能指定的其他选项:

  • hyperparameter tune = True 独立模型的超参数
  • auto_stack = True 自适应地选择基于自动引导聚合(bagging)和(multi-layer) 堆叠的模型集成策略
  • time_limits 控制fit()的运行时间
  • eval_metric 指定用于评估预测性能的指标。

所有中间结果都保存在磁盘上。如果调用被取消,我们可以使用参数continue_training=True调用fit()来恢复训练。

请注意,TabularPrediction只是整个AutoGluon框架中的许多任务之一,它还支持文本和图像数据的AutoML。它提供了一系列功能,包括超参数转向、神经架构搜索和分布式训练,其描述超出了本工作的范围。本文仅关注AutoGluon表格模块,为简单起见,本文称为AutoGlun,注意到结构化数据表的设计选择与图像/文本的设计选择完全不同(参见迁移学习)。

2.2. 数据处理

当用户未指定任务类型时,AutoGluon可以根据数据类型进行推测任务,还有对数据进行优化,而这只是一点皮毛。

AutoGluon依赖于两个连续的数据处理阶段:将输入转换为所有模型的模型不可知预处理,以及仅应用于用于训练特定模型的数据副本的模型特定预处理。模型不可知预处理开始于对每个特征进行数字、分类、文本或日期/时间分类。从数据中丢弃未分类的列,这些列由非数字、不重复的字段组成,并且可能具有很小的预测值(例如UserID)。我们认为文本特征是大多数唯一字符串的列,平均包含超过3个非相邻空白字符。每个文本列的值被转换为n-gram特征的数字矢量(仅保留文本列中总体出现率高的n-gram,以减少内存占用)。日期/时间特征也被转换为合适的数值。生成的数字和分类特征集的副本随后被传递给模型特定的方法,用于进一步定制的预处理。为了处理丢失的离散变量,我们创建了一个额外的未知类别,而不是对它们进行插补。这也允许AutoGluon在测试时处理之前不存在的类别。请注意,观察结果通常不是随机缺失的,我们希望保留缺失的证据(而不是证据缺失)。

2.3. 模型类别

我们按照预定义的顺序使用定制的模型集。这确保了在更昂贵和更不可靠的模型(如k近邻)之前训练可靠的性能模型(如随机森林)。当对fit()施加严格的时间限制时,此策略至关重要。它帮助auto sklearn之前赢得了时间有限的AutoML比赛(Feurer等人,2018)。特别是,我们考虑了神经网络、LightGBM增强树(Ke等人,2017)、CatBoost增强树(Dorogush等人,2018)、随机森林、极端随机树和k最近邻居。我们使用scikit学习后三种模型的实现。请注意,这个列表远远小于TPOT、Auto-WEKA和Auto-sklearn等AutoML框架所考虑的候选数量。尽管如此,AutoGluon足够模块化,用户可以轻松地将自己的定制模型添加到AutoGluon自动训练、调音和合奏的模型集中。

2.4. 神经网络

表格数据缺乏图像和文本的平移不变性和局部性,图像和文本可以通过卷积或循环神经网络进行处理,相反,表格数据集由不同类型的值组成,因此前馈网络通常是首选架构。然而,数据表中的原始特征通常已经对应于有意义的变量,更适合于树模型的轴对齐单变量分割,而不是将所有变量线性混合到单个隐藏单元激活值中的密集前馈层。尽管如此,Mendoza等人(2016)证明,当将适当调整的神经网络添加到其他类型的现有模型集合中时,可以显著提高精度。特别是,神经网络学习的决策边界与基于树的模型的轴对齐几何结构不同,因此当与树集成时提供了有价值的多样性。

AutoGluon使用的网络架构如图1所示,其他详细信息见附录A。它与Howard&Gugger(2020)的模型有相似的设计选择;Cheng等人(2016)。我们的网络将单独的嵌入层应用于每个分类特征,其中嵌入维度的选择与该特征观察到的唯一级别的数量成比例(Guo&Berkhahn,2016)。对于多元数据,各个嵌入层使我们的网络能够在其表示与其他变量混合之前单独了解每个分类特征。分类特征的嵌入与数字特征连接成一个大向量,该向量既被馈入三层前馈网络,又通过线性跳跃连接直接连接到输出预测。

据我们所知,AutoGluon是第一个使用逐变量嵌入的AutoML框架(2020年论文),这些嵌入通过线性快捷路径直接连接到输出,这可以通过改进的梯度流来提高结果质量。大多数现有的AutoML框架只是将标准前馈架构应用于一个独热编码数据(Kotthoff等人,2017;Pandey,2019)

2.5. 多层堆栈集成

长期以来,人们都知道,将多个模型的预测组合在一起的集合优于单个模型,通常会大幅降低最终预测的方差(Dietterich,2000)。如今,所有性能最好的AutoML框架都依赖于某种形式的模型集成,如装袋(Breiman,1996)、增强(Freund等人,1996),堆叠(Ting&Witten,1997)或加权组合。特别是,各种AutoML框架使用浅堆栈集成。在这里,一组单独的“基础”模型以通常的方式进行单独训练。随后,使用基本模型的聚合预测作为其特征来训练“堆叠器”模型。堆叠器模型可以改进单个基本预测的缺点,并利用提供增强预测能力的基本模型之间的相互作用(Van der Laan等人,2007)。

多层堆叠将堆叠器模型输出的预测作为输入提供给其他更高层堆叠器。在多个层次上迭代这一过程是著名预测比赛中的获胜策略(Koren,2009;Titericz&Semenov,2016)。然而,实现健壮是非常重要的,因此目前任何AutoML框架都没有使用它。AutoGluon引入了一种新的多层堆栈集成形式,如图2所示。在这里,第一层有多个基本模型,其输出被连接,然后被馈送到下一层,该层本身由多个堆叠器模型组成。然后,这些堆垛机充当附加层的基础模型。


我们对传统的叠加方法进行了三次改进,以提高其结果的准确性。为了避免另一个CASH问题,传统堆垛在堆垛机中使用比基层更简单的模型(Van der Laan等人,2007)。AutoGluon只是将其所有基本层模型类型(具有相同的超参数值)作为堆叠器重复使用。这种技术可以被视为利用逐层训练的深度学习的替代形式,其中层之间连接的单元可以是任意ML模型。与现有策略不同,我们的堆叠器模型不仅将前一层模型的预测作为输入,还将原始数据特征本身作为输入(输入向量是与下层模型预测连接的数据特征)。让人想起深度学习中的残差连接,这使我们的高层堆叠器能够在训练期间重新访问原始数据值。

我们的最终堆叠层应用集合选择(Caruana et al,2004)以加权方式聚集堆叠器模型的预测。AutoGluon将系综选择用作堆栈系综的输出层是我们以前没有遇到过的策略。虽然由于以下原因,人们提倡组合基本模型进行系综选择其抗过度拟合的弹性(Feurer等人,2015),当在大容量的模型堆中聚合预测时,这一特性变得更加有价值。

2.6. 重复k折装袋

AutoGluon通过在堆叠的所有层对所有模型进行k折叠集成装袋,利用所有可用数据进行训练和验证,进一步提高了堆叠性能。也称为交叉验证委员会(Parmanto et al,1996),k-fold bagging是一种简单的集成方法,可以减少结果预测的方差。这是通过将数据随机划分为k个不相交的块(我们基于标签进行分层),然后使用从每个副本中取出的不同数据块训练模型的k个副本来实现的。AutoGluon将所有模型打包,并要求每个模型对训练期间没有看到的块进行折叠外(OOF)预测。由于每个训练示例都是一个袋装模型副本的OOF,这允许我们从每个训练示例的每个模型中获得OOF预测。应该就是每个模型K折交叉训练

在堆叠中,高层模型仅在下层OOF预测上训练是至关重要的。对样本下层预测的训练可能会放大过度拟合,并在测试时引入协变量偏移。因此,采用传统的训练/验证分割来代替装袋的原始堆垛只能使用一小部分数据来训练堆垛机。对于多个堆叠层,这个问题变得更加严重。相反,我们使用袋装集合的OOF预测允许更高层的堆叠器模型利用与前一层相同数量的训练数据。

虽然k折叠装袋有效地重用了训练数据,但它仍然容易受到某种微妙的过度拟合的影响。某些模型的训练过程可能会受到OOF数据的影响,例如早期停止准则,这可能导致OOF预测中的轻微过度拟合。然而,堆垛机模型基于过拟合下层预测进行训练可能会更积极地过度配合。并且OOF过拟合因此可以通过堆栈的每一层被放大。(过拟合策略)

我们建议重复装袋过程以减轻这种过度装配。当给予AutoGluon足够的训练时间时,它在训练数据的n个不同随机分区上重复k倍装袋过程,对重复的袋子上的所有OOF预测进行平均。重复次数n是通过估计在分配的训练时间内可以完成多少个装袋回合来选择的。在多个kfold行李中平均的OOF预测显示出更少的方差,并且不太可能出现过拟合。我们发现这种n次重复的k倍装袋过程对于较小的数据集特别有效,因为OOF数据大小有限,所以OOF过度拟合。

2.7. 训练策略

我们的总体训练策略总结在算法1中,其中每个堆叠层接收时间预算Ttotal/LT_{total}/LTtotal​/L。在步骤7中,AutoGluon首先估计所需的训练时间,如果这超过了该层的剩余时间,我们跳到下一个堆叠层。训练每个新模型后,它会立即保存到磁盘中以进行容错。这种设计使框架的行为具有高度的可预测性:时间包络和故障行为都得到了很好的指定。这种方法保证,只要我们能够在指定的时间内训练至少一个模型,我们就可以做出预测。当我们检查顺序训练模型(如神经网络和增强/袋装树)的中间迭代时,AutoGluon仍然可以在有限的时间限制下生成模型。此外,我们预计模型在训练时可能会失败,并在本次训练中跳到下一个。


许多AutoML框架在同一实例上并行训练多个模型。虽然这在某些情况下可能会节省时间,但如果不仔细调整,会导致较大数据集出现许多内存不足错误。AutoGluon Tabular转而按顺序训练模型,并依赖于它们各自的实现来有效地利用多个核心。这允许我们在其他框架失败的地方进行训练。

3. AutoML 框架

由于AutoML的巨大潜力,在这一领域开发了许多框架。我们描述了五个广泛使用的AutoML框架,总结在表1中。

4.训练策略

4.1. 步骤

主要是从OpenML AutoML基准测试和Kaggle基准找数据。

4.2. 结果

耗时又少结果又好。

4.3. 消融试验

证明框架内的哪个部分都不可以少。

5 结论

本文介绍了AutoGluon Tabular,一个用于结构化数据的AutoML框架,它自动管理端到端的ML管道。AutoGluon将数据科学社区的最佳建模实践进行了编码,并以各种方式对其进行了扩展。AutoGluon表格的关键方面包括处理异构数据集的稳健数据处理、现代神经网络架构以及基于多层堆叠和重复k折叠装袋的新组合的强大模型集成。我们的综合经验评估表明,AutoGluon表格比关注组合算法选择和超参数优化(CASH)的流行AutoML框架更准确。尽管AutoML通常被视为CASH的同义词,但我们的工作清楚地表明,它只是成功的端到端AutoML框架的一部分。

论文阅读 AutoGluon-Tabular相关推荐

  1. 2019 sample-free(样本不平衡)目标检测论文阅读笔记

    点击我爱计算机视觉标星,更快获取CVML新技术 本文转载自知乎,已获作者同意转载,请勿二次转载 (原文地址:https://zhuanlan.zhihu.com/p/100052168) 背景 < ...

  2. 论文阅读工具ReadPaper

    对于搞科研的同学们来说,看论文是要经历的第一关,尤其是要读好多篇论文的时候,更是着实令人头大. 这不,最近无意中发现了个在线论文阅读网站:readpaper.com,号称「论文阅读笔记神器,硕博科研学 ...

  3. 多目标跟踪:CVPR2019论文阅读

    多目标跟踪:CVPR2019论文阅读 Robust Multi-Modality Multi-Object Tracking 论文链接:https://arxiv.org/abs/1909.03850 ...

  4. 快速人体姿态估计:CVPR2019论文阅读

    快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...

  5. Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读

    Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...

  6. 深度学习点云语义分割:CVPR2019论文阅读

    深度学习点云语义分割:CVPR2019论文阅读 Point Cloud Oversegmentation with Graph-Structured Deep Metric Learning 摘要 本 ...

  7. 3D目标检测论文阅读多角度解析

    3D目标检测论文阅读多角度解析 一.前言 CNN(convolutional neural network)在目标检测中大放异彩,R-CNN系列,YOLO,SSD各类优秀的方法层出不穷在2D图像的目标 ...

  8. 3D目标检测论文阅读摘要

    3D目标检测论文阅读摘要 2D Object Detection 的研究已经非常成熟了,代表作品有RPN系列的FasterRCNN,One Shot系列的YOLOv1-YOLOv3,这里推荐一个2D ...

  9. 目标检测——Faster R-CNN论文阅读

    论文阅读--Faster R-CNN:Towards Real-Time Object Detection with Region Proposal Networks 文章目录 论文阅读--Faste ...

最新文章

  1. 一些查阅个人隐私信息的网站——国内的基本上都查不到
  2. 关于搭建php电商环境时缺少fileinfo、数据库安装出错问题解决办法
  3. 王者荣耀最难选择题2选1,刺痛cos虞姬,还是北极星露脸?我选一
  4. 脚本示例 (Reporting Services)Microsoft Visual Basic .NET
  5. python编写购物程序_Python实现购物程序思路及代码
  6. CNN理解比较好的文章
  7. 【component: resolve => require([‘../pages/home.vue‘], resolve)-装载】
  8. Vue.js 作者尤雨溪:TypeScript 与 JavaScript 并行才切合实际!
  9. vue echarts数据变化重新渲染_vue实例创建及数据挂载渲染
  10. perl 的调试和性能测试
  11. 密码编码学初探——数论和有限域
  12. APP在各大应用商店上架要求汇总
  13. 12.14黄金白银欧美盘走势分析及期货原油操作建议
  14. 弱口令扫描、暴力破解密码
  15. 关于区块链应用和技术的4个PPT
  16. 小学奥数思维训练题(十一)
  17. 电商软件性能测试,实战 | 电商业务的性能测试(一): 必备基础知识
  18. 应用的性能相关的指标有哪些?
  19. 如何删除禁止显示管家婆分销ERPV3A8右下角广告
  20. 好生意还是好故事,这或是快递最后100米的真相

热门文章

  1. alias 自定义参数——实现一个删除备份的指令
  2. 【转载】根据已知点通过COORD七参数计算
  3. 前端基础学习——Vue框架-AJAX的使用
  4. 实习生不知道该如何安排了……
  5. H5——连连看小游戏实现思路及源码
  6. 【ENSP模拟器】路由基础(HCNP)——A与B互ping的问题
  7. Django HttpResponse响应
  8. windows远程连接服务器,出现身份验证错误,给函数提供的身份无效!
  9. vscode查看外部依赖包的源码
  10. 融资预审复核 代码梳理