当前位置: 首页 > 编程日记 > 正文

AutoML很火,过度吹捧的结果?


作者 | Denis Vorotyntsev
译者 | Shawnice
编辑 | Jane
出品 | AI科技大本营(ID:rgznai100)

【导语】现在,很多企业都很关注AutoML领域,很多开发者也开始接触和从事AutoML相关的研究与应用工作,作者也是,在工作、比赛、调和主模型时都使用过AutoML。作者表示:“AutoML是一个出色的自动化建模工具,但我认为它的作用和价值现在被夸大了。在一些关键概念中,比如特征工程或用于超参数优化的元学习,AutoML的表现确实很有潜力,但目前购买集成AutoML只是浪费金钱”。广受关注的AUtoML究竟是否被过渡夸赞了呢?下面这篇文章和大家一起探讨。

什么是AutoML?

深入AutoML前,我们要先从一个数据科学项目的工作流讲起。

  • 数据科学项目

任何数据科学项目都包含下面这4个基本步骤:
1. 根据业务进行问题分析(立项和项目成功的度量标准),
2. 收集数据(收集、清洗、分析探索),
3. 构建模型并评估其性能,
4. 在实际工程中部署模型并观察模型的表现
640?wx_fmt=png
跨行业的数据挖掘标准流程
这个过程中的每一个步骤都项目是否成功起着至关重要的作用。然而,内行人会认为建模是最关键的部分,一个完善的ML模型能给企业带来很多价值。
数据科学家在建模阶段要进行优化任务:在给定的数据集和规定的指标下,最优化目标,然而实际上这个过程是非常复杂的,需要具备多项技能。作者分享了三个重要的观点:(1)特征工程不仅是一门科学,更是一门艺术;(2)超参数优化需要对算法和机器学习的核心概念有深刻的理解;(3)同时也需要软件工程师的技能让代码通俗易懂、易于部署。
而AutoML就是希望在这些方面能给开发者和数据科学家们提供帮助。


  • AutoML


AutoML输入的是数据和任务(分类,回归,推荐等),输出是可用于应用的模型,该模型能够预测未知数据。数据驱动流程中的每个决定都是一个超参数。AutoML的基本想法就是在相对短的时间里找到这样优质的超参数。
(1)AutoML选择了一种预处理数据的策略:如何处理不平衡的数据、如何填充缺失值、删除,替换或保留异常值、如何对类别和多类别列进行编码、如何避免目标泄漏、如何防止内存错误…等
(2)AutoML会生成新特征并选择其中有意义的
(3)AutoML可以选择模型(线性模型、K近邻法、梯度增强、神经网络…等)
(4)AutoML调整所选模型的超参数(例如,基于树的模型或体系结构的树数和子采样、神经网络的学习率和时期数)
(5)AutoML可以对模型进行稳定的集成以增加得分
640?wx_fmt=png

AutoML的契机


  • AutoML将填补数据科学市场中“供应”与“需求”之间的空缺


如今,越来越多的公司开始收集数据或者至少意识到收集数据的重要性:他们都希望从中分一杯羹。另一方面,市场上缺乏拥有适当背景知识的数据科学家来满足需求,因此出现了人才缺口。AutoML可能会填补这一空缺。
但这个解决方案能给公司带来什么价值吗?在我看来答案是否定的。
很多公司需要的是一个“过程”,而AutoML提供的只是一个“工具”。先进的工具无法弥补战略上的不足。在使用AutoML前,或许可以考虑与咨询公司进行项目合作,这可以帮助公司首先完善数据科学战略。大多数AutoML解决方案提供商也提供咨询业务这一现象,并不是一个巧合。

  • AutoML可帮助数据科学小组节省时间

根据2018年Kaggle机器学习和数据科学调查,典型的数据科学项目中,大家有15-26%的时间都用于构建模型或模型选择。无论是工时本身还是时间成本,这都是一项艰巨的任务。如果目标或数据改变(如加入新特征),这个过程又要重复一遍。AutoML可以帮助公司或数据科学家节省很多时间,将更多的时间花在更有意义的事情上。
但是,如果建模环节不是数据科学团队最关键的任务,说明公司流程中存在非常明显的问题。通常,即使模型性能只提升了小小一点,公司也有可能为此赚取大量利益,在这种情况下耗费大量时间建造模型是没有意义的。

简单来说:

如果(从模型中的收益 > 数据科学小组花费的时间)= 不需要节省时间

如果(从模型中的收益 <= 数据科学小组花费的时间)= 你真的解决了问题吗?

为数据小组每天都必须做的任务编写脚本是一个很好节约时间的方法。我就为日常任务写了几个自动化脚本:自动生成特征、选择特征、模型训练和超参数调整,这些都是我每天必做的事项。

AutoML胜过普通数据科学家

不幸的是,除了“开源AutoML基准测试”之外,我们没有什么有效的基准。下面的基准测试是于2019年7月1日发布的,作者将几个AutoML库的性能与调整后的随机森林进行比对。

640?wx_fmt=jpeg

看到这个结果也吸引了我的好奇,我决定自己建立一个基准测试。我将自己做的性能表现与AutoML解决方案在二进制分类的三个数据集上的性能进行了对比:credit、KDD unspelling 和 mortgages。我把数据集区分成了训练集(占比60%)和测试集(占比40%)。
下面是我的基准解决方案,其实很简单,我没有深入挖掘数据也没有创建什么高级特征:
1. 5-分层 KFold
2. 用于分类列的 Catboost 编码器
3. 数学运算(+-*/),新特征限制在500
4. 模型:LightGBM,默认参数
5. 混合OOF
使用了两个标准库:H2O和TPOT。按照几个时间间隔进行训练:从15分钟开始到6个小时。用以下基准,我得到了令人惊讶的结果:

Score = (ROC AUC / ROC AUC of my baseline) * 100%

640?wx_fmt=png
首先,在几乎所有情况下,我的基准都超过了AutoML。这让我有点伤心,因为我以为以后我能用AutoML来代替我完成工作,我就能休闲一下了。
其次,AutoML的得分并没有随着时间增涨。也就是说,不论我们等15分钟还是6个小时,AutoML的得分都一样低。
AutoML与高分无关。


总结

从企业技术应用与实践工程研发角度出发,作者总结了下面三点:
1.     如果你的公司是第一次处理数据,考虑雇佣一名顾问吧
2.     尽量让工作自动化
3.     从分数看,集成式解决方案并不是个好选择


  • PS:引擎不是车


经过这些思考,作者通过这个例子与大家共勉,希望大家在关注热门、新技术的同时,不忘从大局出发,对整体更要有了解和把控。
640?wx_fmt=jpeg

在之前的篇幅中,作者和大家一直在讨论 AutoML 工具,到这里他也提示大家,建模只是整个数据科学项目流程中的一小部分,如果把项目比作一辆车,建模(机器学习模型)输出就是一个引擎。毋庸置疑,引擎是一辆车最重要的部分,但引擎并不是一个完整的车。你可能花费了大量时间来设计完善又复杂的功能、选择神经网络或调整随机森林的参数来创造一个强大的引擎,但是如果忽略了车的其他部分组件,也是白费力。
可能模型本身性能已经非常好,但由于我们解决的问题不对(业务理解偏差)、数据偏见(这就需要重新探索数据了)、或者模型结构太复杂,你花费心思做的模型并不能投入生产,部署到产品线中。
最后就发现自己很傻,就像在经过数天或数周的艰难建模工作之后,你只是在骑一辆篮子里放着跑车引擎的自行车。
原文链接:
https://towardsdatascience.com/automl-is-overhyped-1b5511ded65f

(*本文为 AI科技大本营编译文章,载请微信联系 1092722531


精彩推荐


2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读,深入解析热门技术在行业中的实践落地。

即日起,限量 5 折票开售,数量有限,扫码购买,先到先得!
640?wx_fmt=png

推荐阅读

  • 网红“AI大佬”被爆论文剽窃,Jeff Dean都看不下去了

  • AI大佬“互怼”:Bengio和Gary Marcus隔空对谈深度学习发展现状

  • 有了这套模板,再不担心刷不动LeetCode了

  • Google图嵌入工业界最新大招,高效解决训练大规模深度图卷积神经网络问题

  • 太鸡冻了!我用Python偷偷查到暗恋女生的名字

  • 苹果 5G 芯片“难产”

  • 【角度刁钻】如果把线程当作一个人来对待,秒懂

  • C 语言这么厉害,它自身是用什么语言写的?

  • 一文了解超级账本DLT、库、开发工具有哪些, Hyperledger家族成员你认识几个?

640?wx_fmt=png

你点的每个“在看”,我都认真当成了AI

相关文章:

tomcat6 配置web管理端访问权限

配置tomcat 管理端登陆 /apache-tomcat-6.0.35/conf/tomcat-users.xml 配置文件&#xff0c;使用时需要把注释去掉<!-- <!-- <role rolename"tomcat"/> <role rolename"role1"/> <user username"tomcat" password"…

@程序员:Python 3.8正式发布,重要新功能都在这里

整理 | Jane、夕颜出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;【导读】最新版本的Python发布了&#xff01;今年夏天&#xff0c;Python 3.8发布beta版本&#xff0c;但在2019年10月14日&#xff0c;第一个正式版本已准备就绪。现在&#xff0c;我们都…

TensorRT Samples: MNIST(serialize TensorRT model)

关于TensorRT的介绍可以参考&#xff1a; http://blog.csdn.net/fengbingchun/article/details/78469551 这里实现在构建阶段将TensorRT model序列化存到本地文件&#xff0c;然后在部署阶段直接load TensorRT model序列化的文件进行推理&#xff0c;mnist_infer.cpp文件内容…

【mysql错误】用as别名 做where条件,报未知的列 1054 - Unknown column 'name111' in 'field list'...

需求&#xff1a;SELECT a AS b WHRER b1; //这样使用会报错&#xff0c;说b不存在。 因为mysql底层跑SQL语句时&#xff1a;where 后的筛选条件在先&#xff0c; as B的别名在后。所以机器看到where 后的别名是不认的&#xff0c;所以会报说B不存在。 这个b只是字段a查询结…

C++2年经验

网络 sql 基础算法 最多到图和树 常用的几种设计模式&#xff0c;5以内即可转载于:https://www.cnblogs.com/liujin2012/p/3766106.html

在Caffe中调用TensorRT提供的MNIST model

在TensorRT 2.1.2中提供了MNIST的model&#xff0c;这里拿来用Caffe的代码调用实现&#xff0c;原始的mnist_mean.binaryproto文件调整为了纯二进制文件mnist_tensorrt_mean.binary&#xff0c;测试结果与使用TensorRT调用(http://blog.csdn.net/fengbingchun/article/details/…

142页ICML会议强化学习笔记整理,值得细读

作者 | David Abel编辑 | DeepRL来源 | 深度强化学习实验室&#xff08;ID: Deep-RL&#xff09;ICML 是 International Conference on Machine Learning的缩写&#xff0c;即国际机器学习大会。ICML如今已发展为由国际机器学习学会&#xff08;IMLS&#xff09;主办的年度机器…

CF1148F - Foo Fighters

CF1148F - Foo Fighters 题意&#xff1a;你有n个物品&#xff0c;每个都有val和mask。 你要选择一个数s&#xff0c;如果一个物品的mask & s含有奇数个1&#xff0c;就把val变成-val。 求一个s使得val总和变号。 解&#xff1a;分步来做。发现那个奇数个1可以变成&#x…

html传參中?和amp;

<a href"MealServlet?typefindbyid&mid<%m1.getMealId()%> 在这句传參中&#xff1f;之后的代表要传递的參数当中有两个參数第一个为type第二个为mid假设是一个參数就不用加&假设是多个參数须要加上&来传递

实战:手把手教你实现用语音智能控制电脑 | 附完整代码

作者 | 叶圣出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导语&#xff1a;本篇文章将基于百度API实现对电脑的语音智能控制&#xff0c;不需要任何硬件上的支持&#xff0c;仅仅依靠一台电脑即可以实现。作者经过测试&#xff0c;效果不错&#xff0c;同时可以依据…

C++/C++11中左值、左值引用、右值、右值引用的使用

C的表达式要不然是右值(rvalue)&#xff0c;要不然就是左值(lvalue)。这两个名词是从C语言继承过来的&#xff0c;原本是为了帮助记忆&#xff1a;左值可以位于赋值语句的左侧&#xff0c;右值则不能。 在C语言中&#xff0c;二者的区别就没那么简单了。一个左值表达式的求值结…

Could not create the view: An unexpected exception was thrown. Myeclipse空间报错

转载于:https://blog.51cto.com/82654993/1424339

Banknote Dataset(钞票数据集)介绍

Banknote Dataset(钞票数据集)&#xff1a;这是从纸币鉴别过程中的图像里提取的数据&#xff0c;用来预测钞票的真伪的数据集。该数据集中含有1372个样本&#xff0c;每个样本由5个数值型变量构成&#xff0c;4个输入变量和1个输出变量。小波变换工具用于从图像中提取特征。这是…

快速适应性很重要,但不是元学习的全部目标

作者 | Khurram Javed, Hengshuai Yao, Martha White译者 | Monanfei出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;实践证明&#xff0c;基于梯度的元学习在学习模型初始化、表示形式和更新规则方面非常有效&#xff0c;该模型允许从少量样本中进行快速适应。这些方…

面试题-自旋锁,以及jvm对synchronized的优化

背景 想要弄清楚这些问题&#xff0c;需要弄清楚其他的很多问题。 比如&#xff0c;对象&#xff0c;而对象本身又可以延伸出很多其他的问题。 我们平时不过只是在使用对象而已&#xff0c;怎么使用&#xff1f;就是new 对象。这只是语法层面的使用&#xff0c;相当于会了一门编…

DNS解析故障

在实际应用过程中可能会遇到DNS解析错误的问题&#xff0c;就是说当我们访问一个域名时无法完成将其解析到IP地址的工作&#xff0c;而直接输入网站IP却可以正常访问&#xff0c;这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大&#xff0c;所以本文将从零起步教给…

cinder存储服务

一、cinder 介绍&#xff1a; 理解 Block Storage 操作系统获得存储空间的方式一般有两种&#xff1a; 1、通过某种协议&#xff08;SAS,SCSI,SAN,iSCSI 等&#xff09;挂接裸硬盘&#xff0c;然后分区、格式化、创建文件系统&#xff1b;或者直接使用裸硬盘存储数据&#xff0…

Ubuntu 14.04 64位机上配置Android Studio操作步骤

Android Studio是一个为Android平台开发程序的集成开发环境。2013年5月16日在Google I/O上发布&#xff0c;可供开发者免费使用。Android Studio基于JetBrains IntelliJ IDEA&#xff0c;为Android开发特殊定制&#xff0c;并在Windows、OS X和Linux平台上均可运行。1. 从 htt…

大规模1.4亿中文知识图谱数据,我把它开源了

作者 | Just出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;人工智能从感知阶段逐步进入认知智能的过程中&#xff0c;知识图谱技术将为机器提供认知思维能力和关联分析能力&#xff0c;可以应用于机器人问答系统、内容推荐等系统中。不过要降低知识图谱技术应用的门…

使用CSS 3创建不规则图形

2019独角兽企业重金招聘Python工程师标准>>> 前言 CSS 创建复杂图形的技术即将会被广泛支持&#xff0c;并且应用到实际项目中。本篇文章的目的是为大家开启它的冰山一角。我希望这篇文章能让你对不规则图形有一个初步的了解。 现在&#xff0c;我们已经可以使用CSS…

谷歌丰田联合成果ALBERT了解一下:新轻量版BERT,参数小18倍,性能依旧SOTA

作者 | Less Wright编译 | ronghuaiyang来源 | AI公园&#xff08;ID:AI_Paradise&#xff09;【导读】这是来自Google和Toyota的新NLP模型&#xff0c;超越Bert&#xff0c;参数小了18倍。你以前的NLP模型参数效率低下&#xff0c;而且有些过时。祝你有美好的一天。谷歌Resear…

C++中extern C的使用

C程序有时需要调用其它语言编写的函数&#xff0c;最常见的是调用&#xff23;语言编写的函数。像所有其它名字一样&#xff0c;其它语言中的函数名字也必须在C中进行声明&#xff0c;并且该声明必须指定返回类型和形参列表。对于其它语言编写的函数来说&#xff0c;编译器检查…

Linux之tmpwatch命令

1、tmpwatch命令功能简介[rootvms002 /]# whatis tmpwatch tmpwatch (8) - removes files which havent been accessed for a period of... #删除一段时间内未被访问的文件tmpwatch删除最近一段时间内没有被访问的文件&#xff0c;时间以小时为单位&#xff0c;节省磁盘空间。…

你不得不知道的Visual Studio 2012(1)- 每日必用功能

2019独角兽企业重金招聘Python工程师标准>>> Visual Studio 2012已经正式发布&#xff0c;有很多花哨的新特性&#xff0c;也有很多方便使用者的新功能&#xff0c;当然也有负面声音。对于我们程序员&#xff0c;最关心的还是如何快速掌握VS2012&#xff0c;用于平时…

C++11中std::unique_lock的使用

std::unique_lock为锁管理模板类&#xff0c;是对通用mutex的封装。std::unique_lock对象以独占所有权的方式(unique owership)管理mutex对象的上锁和解锁操作&#xff0c;即在unique_lock对象的声明周期内&#xff0c;它所管理的锁对象会一直保持上锁状态&#xff1b;而unique…

为何Google将几十亿行源代码放在一个仓库?| CSDN博文精选

作者 | Rachel Potvin&#xff0c;Josh Levenberg译者 | 张建军编辑 | apddd【AI科技大本营导读】与大多数开发者的想象不同&#xff0c;Google只有一个代码仓库——全公司使用不同语言编写的超过10亿文件&#xff0c;近百TB源代码都存放在自行开发的版本管理系统Piper中&#…

小小hanoi

为什么80%的码农都做不了架构师&#xff1f;>>> View Code #include " iostream " using namespace std; int k 0 ; void hanoi( int m , char a , char b, char c){ if (m 1 ) { k ; printf( " %c->%c " ,a , c); return…

Unity3D心得分享

本篇文章的内容以各种tips为主&#xff0c;不间断更新 2019/05/10 最近更新&#xff1a; 使用Instantiate初始化参数去实例对象 Unity DEMO学习 Unity3D Adam Demo的学习与研究 Unity3D The Blacksmith Demo部分内容学习 Viking Village维京村落demo中的地面积水效果 Viking V…

django搭建示例-ubantu环境

python3安装--------------------------------------------------------------------------- 最新的django依赖python3,同时ubantu系统默认自带python2与python3&#xff0c;这里单独安装一套python3&#xff0c;并且不影响原来的python环境 django demo使用sqlite3&#xff0c…

C++11中std::lock_guard的使用

互斥类的最重要成员函数是lock()和unlock()。在进入临界区时&#xff0c;执行lock()加锁操作&#xff0c;如果这时已经被其它线程锁住&#xff0c;则当前线程在此排队等待。退出临界区时&#xff0c;执行unlock()解锁操作。更好的办法是采用”资源分配时初始化”(RAII)方法来加…