本文主要是介绍autoML综述:Benchmark and Survey of Automated Machine Learning Frameworks,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Benchmark and Survey of Automated Machine Learning Frameworks
文章链接
摘要:
1.当前autoML方法综述和流行automl框架在实际数据上的benchmark
2.总结重要automl搭建机器学习管线的重要技术
Introduction:
ML管线需要:
1.有深厚ML算法和统计功底的数据科学家
2.在特定领域有长期经验的领域专家
这两个加起来才能创建出合理的ML管线包含定制数据预处理、领域驱动的有意义的特征工程、和有足够强预测能力的微调的模型。但因这是非常复杂问题,需要不断试错,因此创建一个好的ML管线仍是一个长期且需要大量努力,实践者通常仅适用一个默认的次优的ML管线
文章贡献:
1.覆盖完整流程的automl管线的数学公式定义
2.回顾开源框架的automl管线
3.不同超参调优算法库的经验评价
4.不同automl框架的经验评价
2.Problem Formulation
3.Pipeline Structure Creation
3.1 Fixed Shape
有两种固定形态的管线:Prototypical ML pipeline和Fixed ML pipeline
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gfiMcjSM-1583023864585)(http://anki190912.xuexihaike.com/mweb/15813263917669-2020-03-01.jpg)]
3.2 Variable Shape
其它创建比较灵活ML管线的方法有:Genetic programming遗传编程、Hierarchical task networks、蒙特卡洛树搜索、Self-play
4.Algorithm Selection and Hyperparameter Optimization 算法选择和超参优化
combined algorithm selection and hyperparameter optimization(CASH)算法选择和参数调优
疑难点:
1.两步骤是同时做的
2.是一个黑箱优化问题
3.搜索空间过于大且复杂
4.超参既包含离散也包含实值,是一个混合整数非线性优化问题
5.超参数包含两类:强制超参(mandatory hyperparameter)和条件超参(conditional hyperparameter)
提出的方案:把参数空间理解成树,强制超参为子节点,条件超参是强制超参的子节点
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXlJL2aw-1583023864586)(http://anki190912.xuexihaike.com/mweb/15816064033401-2020-03-01.jpg)]
4.1 网格搜索(grid search)
列举了所有可能配置
优点:容易实施和并行
缺点:
1.参数组合是随着参数数量指数增长
2.分层结构的超参没有考虑到导致的冗余超参组合
3.并没有很好的探索表现好的空间,但可被部分消除,解决方案是先简单搜一个粗略的网格,然后在好的地方精细搜
4.2 随机搜索(Random Search)
优点:简单实施和并行,并且适用于有很多局部最优的无梯度函数,收敛速度比网格搜索快,对于没有任何已知的好的搜索空间时是必要的
缺点:搜索时间长
4.3 基于模型的序列优化 Sequential Model-Based Optimization(SMBO)
重点待研究
有基于高斯过程和随机森林回归为代理函数
4.4 进化算法(Evolutionary Algorithms)
优点:适用于非常多的优化问题因为没有对目标函数有任何的假设
有用粒子群算法,但是离散和整数超参要被映射到连续空间上
4.5 Multi-Armed Bandit Learning
很多SMBO方法受限于混合和有条件的搜索空间,因网格搜索只能包含离散超参,这个方法是把整个超参空间根据网格搜索的离散超参划分成有限的小的参数空间,叫超级划分(hyperpartition),里面只包含连续超参,每个划分里再用贝叶斯优化的方法
这个方法通常是和其它优化方法结合起来用
4.6 梯度下降(Gradient Descent)
当目标函数可微且封闭时可用
5.自动数据清理 Automatic Data Cleaning
数据清理目的是通过删除错误数据改进代码质量,常见数据错误有:数据缺失,冗余重复数据,无效值,或多数据集之间的断链
数据清理包含两个任务:错误检测和错误修复
大部分方法的目标是协助数据科学家清洗数据而不能进行自动化数据清洗
通常固定的数据清理步骤是:填补缺失值,删除有错误值如无穷值和离群点的样本,把特征归一化,有时候ML管线的后续步骤会有特定的数据要求
当前的autoML框架不考虑先进的数据清理的研究工作
包含领域知识的数据清理工作会大幅度提高数据质量
6.自动化特征工程 Automatic Feature Engineering
分为3个子任务:特征提取,特征构建,特征选择
特征工程中的特征构建是高度依赖领域知识并且极难作为通用知识
6.1 特征生成
特征生成生成新的特征的方法是把原特征(特征提取)通过函数映射到新特征,或发现源特征中的缺失关系,这个步骤高度依赖领域知识且难以自动化
自动化特征生成流程图:通常基于源数据生成一系列候选特征并排序,排名评价高的会放到数据集中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ytxTOdF0-1583023864587)(http://anki190912.xuexihaike.com/mweb/15816411215647-2020-03-01.jpg)]
预定义新特征生成方法:
一元:即单维特征,离散化,标准化,归一化,日期提取,log
二元:相关性测试并生成新特征(需要研究)
High-Order:通常用SQL group by,所有数据根据某一特征grouped,并用最大最小平均和数量等统计
通常做法是预定义一系列特征生成方法,抽取特征到该方法生成后,使用特征选择确定该新特征确实能提高模型表现,就加到源数据中,一轮一轮迭代
该方法极其耗费时间,且大多方法不包含有用信息
6.2 特征选择
移除冗余和有误导性的特征,让训练模型的可解释性得到提升
被现代autoML整合的方法有:univariate selection, 方差选择,feature importance,correlation matrices or stability selection
特征选择通过wrapper functions测试在特定ML模型上是否提高性能找到最好的特征子集
简单的方式是随机搜索或详细测试子集,启发式的方法是逐步往里添加单特征,还有通过a combination of forward and backward selection选择,还有把子集选择作为强化问题,还有用遗传编程(待研究)
还有为每个新特征计算meta-features,如值的多样性和与其它特征的互信息(待研究)
7 Performance Improvements
7.1 Multi-Fidelity Approximations(待研究)
autoML和CASH问题的一个主要问题是极高的周转时间,一个避免该问题的方法是Multi-Fidelity Approximations,即数据科学家通常先使用训练数据的子集或子特征来先测试挑选好的参数,因为这种情况下,坏的参数可以迅速被丢弃掉。
一个简单的方法是随机选择训练集的多个随机子集,更精细的方法是
7.2 Early Stopping
autoML框架通常用了early stopping,即在下一个交叉验证的第一折中性能严重下降,就中断掉。
还提到了两种方法:
1.By simultaneously considering multiple configurations in an iterative procedure at once, the most promising configuration can be optimized in each step.
同时观察多个超参配置在每一个迭代步骤的情况,最有前途的超参配置可在每一步进行优化
2.并行跑多个问题实例,某些问题实例可能耗时非常长,跑的过程中可得到动态时间阈值,并中断长时实例
7.3 Scalability
使用多核或集群上并行来解决过大计算量的问题,因autoML有很多建模步骤,把不同实例分配到各个集群上
随机搜索、网格搜索、进化算法在并行上比较简单,SMBO比较难,因为是一个序列步骤
一个可能的解决方案是选择topk的配置而不是最好的配置,在评价完所有配置后,代理模型会更新并开始下一批次的评价
另外可以使用autoML服务的方式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W5W2jgFG-1583023864588)(http://anki190912.xuexihaike.com/mweb/15816537047503-2020-03-01.jpg)]
7.4 Ensemble Learning
综合多个模型的预测,提升模型表现
stacking:
7.5 Meta-Learning(待研究)
学习机器学习算法的学习过程
好处是:
1.可通过评价单个超参的重要程度来从超参空间中移除不重要的超参
2.从预测的表现上过滤掉经验上表现差的候选超参配置
3.热启动
4.适用于构建Pipeline结构搜索
8.Selected Frameworks
8.1 CASH Algorithms
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tly95P4J-1583023864588)(http://anki190912.xuexihaike.com/mweb/15816607573240-2020-03-01.jpg)]
8.1.1 Baseline methods
dummy分类器用分层抽样产生随机结果
随机森林
8.1.2 Grid search
使用scikit-learn中的GRIDSEARCHCV,可单机并行
8.1.3 Random Search
使用scikit-learn中的RamdomSearchCV,单机并行
8.1.4 RoBO
贝叶斯优化通用框架,支持的代理模型有高斯过程、随机森林、贝叶斯神经网络
一个限制是不支持离散型超参
8.1.5 BTB
BTB使用multi-armed bandit learning绕过了RoBO不支持离散型超参的限制
8.1.6 Hyperopt
使用代理模型TPE的SMBO,使用了多个实例去建模分层超参,迭代次数限制在数量上而不是在时间上
易于并行。通过分布产生很多新的候选超参配置,由此提高效率
8.1.7 SMAC
第一个明确支持离散变量的框架,可支持按次数和按时间迭代,使用随机森林回归建模
内置支持在固定时间后停止超参优化,这个方式可以迅速在某个时间后停止某些表现表现差的模型(重要)
能并行
8.1.8 BOHB
贝叶斯优化和Hyperband的组合,Hyperband的限制是随机生成待测试超参,BOHB使用SMBO(TPE)替代了这个过程
8.1.9 Optunity
有很多solvers, 这里使用了粒子群算法,离散型超参会映射成整数超参(即连续型超参对待)
8.2 Automl框架
8.2.1 Baseline methods
dummy分类器用分层抽样产生随机结果
一个简单的管线包含缺失值填充和随机森林
8.2.2 TPOT
使用遗传编程在每个管线阶段,灵活的创建管线并选择算法
只能使用离散型变量,和网格搜索一样,所有的连续型变量首先要离散化,不一样的是使用遗传编程微调算法
可任意创建管线的能力非常容易过拟合,To compensate this, TPOT optimizes a combination of high performance and low pipeline complexity. Therefore, pipelines are selected from a Pareto front using a multi-objective selection strategy. The evaluation of the performance of all individuals of a single generation is parallelized to speed up optimization. In the end, TPOT returns the single best performing pipeline
任意创建管线的能力没有限制会造出不符合规则的管线,有RECPIE提出改进,支持所有scikit-learn方法
8.2.3 Hyperopt-sklearn(HPSKLEARN)
固定管线,只有一个预处理和一个分类或回归模型,模型都是sklearn,调参用hyperopt.使用交叉验证防过拟合
预处理仅支持PCA,standard or min-max scaling and normalization. One hot en-coding and string preprocessing are disabled by default.
8.2.4 auto-sklearn
固定管线,固定的数据清理步骤:optional categorical encoding, imputation, removing variables with low variance and optional scaling
可选的预处理和强制的建模算法会被选择并被SMAC调优
通过在单机或集群并行来改善,每个调优都有时间限制
使用元学习来初始化优化过程,是由额外的140个数据集做的,
使用了集成方法
8.2.5 Random Search
使用auto-sklearn的随机搜索作为另一个baseline
8.2.6 ATM
这是一个协作服务,非常强调并行化,以允许单个evaluation分布在集群上
使用简单的管线结果,包含n
optional PCA, an optional standard or min-max scaling followed by a tunable classification algorithm
使用sklearn等算法,使用BTB调优
使用了中心数据库,存储所有数据集,测试过的配置和表现
也用了元学习
8.2.7 H2O AUTOML
H2O是分布式ML框架
H2O automl可跳过预处理去选择并调优分类算法,使用(笛卡尔)Cartesian或随机网格搜素
最后把好的结果做集成
10 Discussion and Opportunities for Future Research
1.除了网格搜索的所有CASH算法,表现非常相似,随机搜索表现也不差,最后的结果来看所有数据集最好的表现差异不超过1%
2.autoML框架表现也非常相似,单个数据集上差异最大是6%
3.the potential of specialized pipelines is currently not utilized at all.
4.当前autoML只关注监督学习
5.目前只有CASH问题被自动化,原因是CASH是和领域无关的,但是一个数据科学家会花费60-80%的实际去清理数据和特征工程,只有4%的时间调优模型
6.有3个领域:先进的数据清理,特征构建,构建灵活的管线目前没有很多论文,但这是提高autoML性能的重要3个方向
7.仅需结合动态管线+自动特征工程+精密的CASH方法就可以打败当前的autoML框架,但长期目标应该是自动构建一个完整管线,并且每一个组件都被优化过
8.无经验用户使用autoML的两大主要缺点:
(1)领域专家对数据集的渊博知识可以使搜索空间大幅减小
(2)ML的可解释性会更不可知
11 Conclusion
1.提供了在114个公开数据集在CASH算法的测试
2.测试了autoML框架
3.总结了这些框架的所用技术
4.扩展当前问题的定义
当前先进的automl框架可帮助领域专家构建ML管线避免繁琐的工作,但是自动构建通用的框架仍然很基础并且不能与人类经验相比
这篇关于autoML综述:Benchmark and Survey of Automated Machine Learning Frameworks的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!