自动化模型选择
1、自动化模型选择核心问题
1.1搜索空间
搜索空间定义了对分类问题或回归问题的可选择的机器学习算法,如KNN、SVM、k-means等。
1.2搜索策略
搜索策略定义了使用怎样的算法可以快速准确找到最优的模型。常见的搜索方法包括贝叶斯优化、进化算法等。
2、自动化模型选择
2.1基于贝叶斯优化的自动化模型选择
2.1.1Auto-WEKA
将机器学习算法规约成组合算法选择和超惨优化(Combined Algorithm Selection and Hyper-parameter optimization, CASH)问题
(1)搜索空间
Auto-WEKA中包含39中基本元素:
- 27中基分类器,比如KNN、SVM、LR等
- 10中meta分类器,比如AdaBoostM1、LogitBoost等
- 2中ensemble方法,Vote和stacking
其中,meta分类器可以任选一种基分类器作为输入,ensemble分类器可以使用最多5种基分类器作为输入
数据方面,使用k-fold交叉验证
(2)搜索策略
CASH问题的优化算法有两种:Sequential Model-based Algorithm Configuration(SMAC)和Tree-structured Parzen Estimator(TPE),都属于SMBO算法(一种贝叶斯优化的算法)
2.1.2auto-sklearn
auot-sklearn是2015年被提出的,是一个基于python环境下的机器学习包scikit-learn的AutoML机器学习框架
在Auto-WEKA的基础上,为AutoML框架的贝叶斯超参数优化添加了两个组件:用于初始化贝叶斯优化器的元学习和优化期间模型的自动集成。
(1)搜索空间
auto-sklearn中包括33个基本元素
- 15中分类算法(KNN、AdaBoost、SVM等)
- 14种特征预处理方法(PCA、ICA等方法)
- 4种数据预处理方法(one-hot enconding、imputation、balancing和rescaling)
(2)元学习
元学习是从以前的任务中获取经验,通过推理跨数据集的学习算法来模拟这些策略。在auto-sklearn中,应用元学习来选择给定的机器学习框架的实例,这些实例可能在新数据集上表现良好。更具体说,对于大量数据集,收集一组元特征,可以有效计算数据集的特征,并且有助于在新数据集上确定使用哪种算法。这种元学习方法是贝叶斯优化的补充,用于优化AutoML框架。因为贝叶斯优化开始时很慢,但可以随着时间的推移慢慢微淘性能。可以通过选择基于元学习的k个配置并利用他们的结果来进行贝叶斯优化,与贝叶斯优化产生一个互补作用。
(3)分类器集成
虽然参数贝叶斯优化在寻找性能最佳的超参数设置方面具有数据效率,但是这其实是一个非常浪费资源的过程:它在训练过程中的所有模型都会丢失,通常包括一些训练情况最好的模型。auto-sklearn建议存储他们并使用有效的处理方法来构建他们之间的整体,而不是丢弃这些模型。
简单地构建构建贝叶斯优化找到的模型的均匀加权集合的效果并不是很好。使用保留集上所有单个模型的预测来调整这些权重只管重要。
- 栈(stacking)
- 无梯度值优化(gradient-free-numerical optimization)
- 集成选择(ensemble selection)
2.2基于进化算法的自动模型选择
除了贝叶斯方法,我们还可以使用进化算法来实现模型的自动选择,最经典的框架是TPOP(Tree-bases Pipeline Optimization Tool,基于树的管道优化工具)
2.2.1TPOP中的4中类型的管道操作
1)数据预处理op
2)特征分解op
3)特征选择op
4)模型选择op
2.2.2基于树的管道集成
2.2.3TPOP中构建pipeline的进化算法以及帕累托优化
为了自动生成和优化这些基于树的pipeline,TPOT使用了一种新的进化算法技术,称为遗传编程(GP),在python的DEAP中实现。传统上,GP构建数学函数树以针对给定标准进行优化。在TPOP中,使用GP来演化pipeline op的序列以及每个op的参数(例如,随机森林中的树的数量或在特征选择期间要选择的特征对的数量),以最大化pipeline的分类准确性。其中对pipeline的更改可以修改,移除或插入新的pipeline op序列到基于树的pipeline中。
TPOP pipeline根据其在测试集上的最终分类准确性以及最小化pipeline的总体复杂性(即pipeline op的总数)
3、自动集成学习
集成学习结合策略:
- 投票法
- 平均法
- 学习法
H2O 的Ensemble可以让用户通过有监督的学习方式训练集成模型