自动机器学习框架之一_Auto-Sklearn
自动机器学习框架之一 _Auto-Sklearn
当我们做完了特征工程之后,就可以代入模型训练和预测,对于模型的选择及调参,主要根据分析者的经验。在具体使用时,经常遇到同一批数据,同一种模型,不同的分析者得出的结果相差很多。
前面学习了几种常用的机器学习方法原理以及适用场景,对于完全没有经验的开发者,只要有足够时间,尝试足够多的算法和参数组合,理论上也能达到最优的训练结果,同理程序也能实现该功能,并通过算法优化该过程,自动寻找最优的模型解决方案,即自动机器学习框架。
我们将在未来的三周里分别为大家介绍三个常用的机器学习框架:auto-sklearn、auto-ml 和 auto-keras。
Auto-Sklearn 主要基于 sklearn 机器学习库,使用方法也与之类似,这让熟悉 sklearn 的开发者很容易切换到 Auto-Sklearn。在模型方面,除了 sklearn 提供的机器学习模型,还加入了 xgboost 算法支持;在框架整体调优方面,使用了贝叶斯优化。
(转载请注明出处:https://www.jianshu.com/p/cd775730a1ec)
1. 安装
Auto-sklearn 需要基于 python3.5 以上版本,且依赖 swig,因此需要先安装该库,具体方法如下:
1 | $ sudo apt-get install build-essential swig |
由于关于 auto-sklearn 的文档和例程不多,推荐下载 auto-sklearn 的源码,并阅读其中的 example 和 doc,以便更多地了解 auto-sklearn 的功能和用法。
1 | $ git clone https://github.com/automl/auto-sklearn.git |
2. Auto-Sklearn 的优缺点
通常情况下,我们只能依据个人的经验,基于机器性能、特征多少、数据量大小、算法以及迭代次数来估计模型训练时间,而 Auto-Sklearn 支持设置单次训练时间和总体训练时间,使得工具既能限制训练时间,又能充分利用时间和算力。
Auto-Sklearn 支持切分训练/测试集的方式,也支持使用交叉验证。从而减少了训练模型的代码量和程序的复杂程度。另外,Auto-Sklearn 支持加入扩展模型以及扩展预测处理方法,具体用法可参见其源码 example 中的示例。
其缺点是 Auto-Sklearn 输出携带的信息较少,如果想进一步训练只能重写代码。
3. 举例
本例使用 96 年美国大选数据,将”投票 vote”作为因变量,它有只 0/1 两种取值,因此使用分类方法 AutoSklearnClassifier,例程中将训练时间指定为两分钟,模型指定为只选择随机森机 random_forest,训练后输出其在训练集上的打分 score。
1 | import autosklearn.classification |
4.关键参数
Auto-sklearn 支持的参数较多,以分类器为例,参数及其默认值如下图所示:
下面介绍其常用参数,分为四个部分:
(1) 控制训练时间和内存使用量
参数默认训练总时长为一小时(3600),一般使用以下参数按需重置,单位是秒。
- time_left_for_this_task:设置所有模型训练时间总和
- per_run_time_limit:设置单个模型训练最长时间
- ml_memory_limit:设置最大内存用量
(2) 模型存储
参数默认为训练完成后删除训练的暂存目录和输出目录,使用以下参数,可指定其暂存目录及是否删除。
- tmp_folder:暂存目录
- output_folder:输出目录
- delete_tmp_folder_after_terminate:训练完成后是否删除暂存目录
- delete_output_folder_after_terminate:训练完成后是否删除输出目录
- shared_mode:是否共享模型
(3) 数据切分
使用 resampling_strategy 参数可设置训练集与测试集的切分方法,以防止过拟合,用以下方法设置五折交叉验证:
- resampling_strategy='cv'
- resampling_strategy_arguments={'folds': 5}
用以下方法设置将数据切分为训练集和测集,其中训练集数据占 2/3。
- resampling_strategy='holdout',
- resampling_strategy_arguments={'train_size': 0.67}
(4) 模型选择
参数支持指定备选的机器学习模型,或者从所有模型中去掉一些机器学习模型,这两个参数只需要设置其中之一。
- include_estimators:指定可选模型
- exclude_estimators:从所有模型中去掉指定模型
auto-sklearn 除了支持 sklearn 中的模型以外,还支持 xgboost 模型。具体模型及其在 auto-sklearn 中对应的名称可通过查看源码中具体实现方法获取,通过以下目录内容查看支持的分类模型:autosklearn/pipeline/components/classification/,可看到其中包含:adaboost、extra_trees、random_forest、libsvm_svc、xgradient_boosting 等方法。