python automl_分享一篇比较全面的AutoML综述
今天刚刚看到在arXiv上出现了一篇关于AutoML的比较全面的综述,于是赶紧略读了一下,第一时间做个简要的分享。论文地址: https:// arxiv.org/abs/1810.1330 6 。
这是一篇来自第四范式(4Paradigm)公司的关于AutoML的综述文章。第四范式是目前国内关于AutoML研究较早较深入的公司之一。AutoML全称是Automated Machine Learning,是2014年以来,机器学习和深度学习领域最炙手可热的领域之一。本篇综述文章系统地对AutoML领域给出了综述,从 出现原因、问题定义、问题构成、基本策略、高级策略、应用、及总结 等方面进行了全面的介绍。下面是一些简要的笔记。
AutoML出现原因
机器学习的应用需要大量的人工干预,这些人工干预表现在:特征提取、模型选择、参数调节等机器学习的各个方面。AutoML视图将这些与特征、模型、优化、评价有关的重要步骤进行自动化地学习,使得机器学习模型无需人工干预即可被应用。
AutoML问题定义
作者从机器学习和自动化两个角度给出了定义: - 从机器学习角度讲,AutoML可以看作是一个在给定数据和任务上学习和泛化能力非常强大的系统。但是它强调必须非常容易使用。 - 从自动化角度讲,AutoML则可以看作是设计一系列高级的控制系统去操作机器学习模型,使得模型可以自动化地学习到合适的参数和配置而无需人工干预。
一个通用的AutoML定义如下:
AutoML的核心任务:
Better performance
No human assistance
Lower computation budgets
AutoML问题构成
AutoML的主要问题可以由三部分构成:特征工程、模型选择、算法选择。
特征工程
特征工程在机器学习中有着举足轻重的作用。在AutoML中,自动特征工程的目的是自动地发掘并构造相关的特征,使得模型可以有最优的表现。除此之外,还包含一些特定的特征增强方法,例如特征选择、特征降维、特征生成、以及特征编码等。这些步骤目前来说都没有达到自动化的阶段。
上述这些步骤也伴随着一定的参数搜索空间。第一种搜索空间是方法自带的,例如PCA自带降维参数需要调整。第二种是特征生成时会将搜索空间扩大。
模型选择
模型选择包括两个步骤:选择一个模型,设定它的参数。相应地,AutoML的目的就是自动选择出一个最合适的模型,并且能够设定好它的最优参数。
算法选择
对于算法选择,AutoML的目的是自动地选择出一个优化算法,以便能够达到效率和精度的平衡。常用的优化方法有SGD、L-BFGS、GD等。使用哪个优化算法、对应优化算法的配置,也需要一组搜索空间。
从全局看
将以上三个关键步骤整合起来看,一个完整的AutoML过程可以分成这么两类:一类是将以上的三个步骤整合成一个完整的pipeline;另一类则是network architecture search,能够自动地学习到最优的网络结构。在学习的过程中,对以上三个问题都进行一些优化。
基本的优化策略
一旦搜索空间确定,我们便可以实用优化器(optimizer)进行优化。这里,AutoML主要回答三个问题: - 选择的优化器可以作用在哪个搜索空间上? - 它需要什么样的反馈? - 为了取得一个好的效果,它需要怎样的配置?
简单的优化搜索方式包括grid search和random search。其中grid search被广泛使用。
从样本中进行优化的方法主要包括启发式搜索、derivative-free优化、以及强化学习方法。梯度下降法是一种重要的优化策略。
评价策略
基本评价策略
在设计评价策略时,AutoML主要回答三个问题: - 这种策略能能够快速进行评价吗? - 这种策略能够提供准确的评价吗? - 这种策略需要怎样的反馈?
基本的评价策略包括: - 直接评价。直接在目标数据上进行评价。这是被使用最多的策略。 - 采样。当数据样本量非常大时,采样一些样本进行评价。 - Early stop。当遇到一些极端情况使得网络表现效果不好时,可以考虑进行early stop。 - 参数重用。将之前学习过的参数重复利用在新任务上。这在两种任务配置差不多时可用。 - 共轭评价。对于一些可量化的配置,可以用共轭评价法进行。
高级评价策略
高级评价策略主要包括两种:meta-learning和transfer learning。
Meta-learning法。从先前的学习经验中提炼出基本的参数和结构配置。
Transfer learning法。从先前的学习经验中提炼出可以重用的一些知识。
应用
使用Auto-sklearn进行模型选择。
使用强化学习进行neural architecture search。
使用ExploreKit进行自动特征构建。
展望
未来可能的研究方向:
提高AutoML的效率。
更明确的问题定义。
发展基本和高级的搜索策略。
找到更适合的应用。
python automl_分享一篇比较全面的AutoML综述相关推荐
- 亲身历时两个月,这可能是一篇最全面的2021大厂技术岗实习面经
亲身历时两个月,这可能是一篇最全面的2021大厂技术岗实习面经 本篇仅从个人经历角度讲述2021春季日常实习的求职经历,涉及到微软.商汤.字节跳动.依图.寒武纪.百度.腾讯.旷视.轻舟智航等企业的面试 ...
- 分享1个超全面的 Python爬虫 接单实例!
接了一个金主的单子,他想在淘宝开个零食的网店,想对目前这个市场上的商品做一些分析,这些信息都是对外展示的,只是手动比较麻烦,想托我帮个忙. 要求并不复杂,于是我用 Python爬虫 获取到数据之后从三 ...
- 一篇很全面的freemarker教程
copy自http://demojava.iteye.com/blog/800204 以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主 ...
- 一篇很全面的freemarker 前端web教程
FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1,文本:直接输出的部分 2,注释:<#-- ... -->格式部分,不 ...
- 3.Python教程--项目框架篇(全)
Python人工智能总目录 人工智能总目录网页链接 文章目录 Python人工智能总目录 9.Python-web前端 Day01-HTML-页面 1. Web 1. 什么是WEB 2. 组成 3. ...
- 海纳百川而来的一篇相当全面的Java NIO教程
目录 零.NIO包 一.Java NIO Channel通道 Channel的实现(Channel Implementations) Channel的基础示例(Basic Channel Exampl ...
- 整理一篇很全面的iOS面试题
(答案不唯一,仅供参考,文章最后有福利) 目录 一.基础知识点 二.第三方框架 三.算法 四.编码格式(优化细节) 五.其他知识点 一.基础知识点 设计模式是什么? 你知道哪些设计模式,并简要叙述? ...
- 分享一篇超全的 Vue 相关的资源,值得收藏!
转载自Duing(ID:duyi-duing) 原文链接:https://dev.to/theme_selection/ultimate-vuejs-resources-for-developers- ...
- 技术分享 | 一款功能全面的 MySQL Shell 插件
作者:杨涛涛 资深数据库专家,专研 MySQL 十余年.擅长 MySQL.PostgreSQL.MongoDB 等开源数据库相关的备份恢复.SQL 调优.监控运维.高可用架构设计等.目前任职于爱可生, ...
最新文章
- 优化算法optimization:AdaGrad
- Linux 知识点滴
- ARKit奠定了Apple平台上实现AR的基石
- 获取数组中连续相同的元素
- pdf与图片互相转换
- 云栖专辑 | 阿里开发者们的第3个感悟:从身边开源开始学习,用过才能更好理解代码
- thinkphp漏洞_漏洞分析之thinkPHP反序列化:这就是黑客的世界吗
- 一台服务器上使用docker安装redis6.0.10一主两从以及哨兵模式
- 组建了计算机教室和图书室,【不忘初心 牢记使命】武胜这8所试点学校陆续展开课后服务工作...
- push declined due to email privacy restrictions (GH007 error code) 解决方法
- 在Spring Boot中spring mvc常见注解解析及部分源码
- 苹果IOS的ANCS服务
- C 实现FFT与IFFT
- 微机原理与接口技术重要的知识点
- UG/NX二次开发入门手册
- html页面统计在线人数,统计在线人数couter
- Ansible 实现批量建立互信
- openwrt 编程器固件制作方法
- hdfs或hive的snappy.parquet文件查看
- Nginx 启停方法
热门文章
- 在Ubuntu17.04中遇到无法清空回收站解决方法
- inline-block间隙原因和解决方法(web前端问题)
- hadoop 2.x安装:不能加载本地库 - 解决libc.so.6 version GLIBC_2.14 not found问题
- .net程序调试一:快速定位异常
- npm install 报错: WARN checkPermissions Missing write access to 解决方案
- Navicat连接MySQL,出现2059 - authentication plugin ‘caching_sha2_password‘的解决方案
- 如何使用Swift获取App版本和内部版本号?
- 如何在github上为新问题附加新的拉取请求?
- 用javascript实现自我执行功能的目的是什么?
- (血和泪的成果)使用PageHelper分页插件进行后台分页