自动机器学习(Automated Machine Learning, AutoML)是一个新兴的领域,在这个领域中,建立机器学习模型来建模数据的过程是自动化的。AutoML 使得建模更容易,并且每个人都更容易掌握。
成都创新互联公司专注于企业全网整合营销推广、网站重做改版、长顺网站定制设计、自适应品牌网站建设、H5场景定制、商城系统网站开发、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为长顺等各大城市提供网站开发制作服务。
在本文中,作者详细介绍了四种自动化的 ML 工具包,分别是 auto-sklearn、TPOT、HyperOpt 以及 AutoKeras。如果你对 AutoML 感兴趣,这四个 Python 库是最好的选择。作者还在文章结尾文章对这四个工具包进行了比较。
auto-sklearn
auto-sklearn 是一个自动机器学习工具包,它与标准 sklearn 接口无缝集成,因此社区中很多人都很熟悉该工具。通过使用最近的一些方法,比如贝叶斯优化,该库被用来导航模型的可能空间,并学习推理特定配置是否能很好地完成给定任务。
该库由 Matthias Feurer 等人提出,技术细节请查阅论文《Efficient and Robust Machine Learning》。Feurer 在这篇论文中写道:
我们提出了一个新的、基于 scikit-learn 的鲁棒 AutoML 系统,其中使用 15 个分类器、14 种特征预处理方法和 4 种数据预处理方法,生成了一个具有 110 个超参数的结构化假设空间。 |
auto-sklearn 可能最适合刚接触 AutoML 的用户。除了发现数据集的数据准备和模型选择之外,该库还可以从在类似数据集上表现良好的模型中学习。表现最好的模型聚集在一个集合中。
图源:《Efficient and Robust Automated Machine Learning》
在高效实现方面,auto-sklearn 需要的用户交互最少。使用 pip install auto-sklearn 即可安装库。
该库可以使用的两个主要类是 AutoSklearnClassifier 和 AutoSklearnRegressor,它们分别用来做分类和回归任务。两者具有相同的用户指定参数,其中最重要的是时间约束和集合大小。
- import autosklearn as ask
- #ask.regression.AutoSklearnRegressor() for regression tasks
- model = ask.classification.AutoSklearnClassifier(ensemble_size=10, #size of the end ensemble (minimum is 1)
- time_left_for_this_task=120, #the number of seconds the process runs for
- per_run_time_limit=30) #maximum seconds allocated per model
- model.fit(X_train, y_train) #begin fitting the search model
- print(model.sprint_statistics()) #print statistics for the search
- y_predictions = model.predict(X_test) #get predictions from the model
更多 AutoSklearn 相关文档请查阅:https://automl.github.io/auto-sklearn/master/。
TPOT
TPOT 是另一种基于 Python 的自动机器学习开发工具,该工具更关注数据准备、建模算法和模型超参数。它通过一种基于进化树的结,即自动设计和优化机器学习 pipelie 的树表示工作流优化(Tree-based Pipeline Optimization Tool, TPOT),从而实现特征选择、预处理和构建的自动化。
图源:《Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science》 。
程序或 pipeline 用树表示。遗传编程(Genetic Program, GP)选择并演化某些程序,以最大化每个自动化机器学习管道的最终结果。
正如 Pedro Domingos 所说,「数据量大的愚蠢算法胜过数据有限的聪明算法」。事实就是这样:TPOT 可以生成复杂的数据预处理 pipeline。
潜在的 pipelie(图源:TPOT 文档)
TPOT pipeline 优化器可能需要几个小时才能产生很好的结果,就像很多 AutoML 算法一样(除非数据集很小)。用户可以在 Kaggle commits 或 Google Colab 中运行这些耗时的程序。
- import tpot
- pipeline_optimizer = tpot.TPOTClassifier(generations=5, #number of iterations to run the training
- population_size=20, #number of individuals to train
- cv=5) #number of folds in StratifiedKFold
- pipeline_optimizer.fit(X_train, y_train) #fit the pipeline optimizer - can take a long time
- print(pipeline_optimizer.score(X_test, y_test)) #print scoring for the pipeline
- pipeline_optimizer.export('tpot_exported_pipeline.py') #export the pipeline - in Python code!
也许 TPOT 最好的特性是它将模型导出为 Python 代码文件,后续可以使用它。具体文档和教程示例参见以下两个链接:
HyperOpt
HyperOpt 是一个用于贝叶斯优化的 Python 库,由 James Bergstra 开发。该库专为大规模优化具有数百个参数的模型而设计,显式地用于优化机器学习 pipeline,并可选择在多个核心和机器上扩展优化过程。
但是,HyperOpt 很难直接使用,因为它非常具有技术性,需要仔细指定优化程序和参数。相反,作者建议使用 HyperOpt-sklearn,这是一个融合了 sklearn 库的 HyperOpt 包装器。
具体来说,HyperOpt 虽然支持预处理,但非常关注进入特定模型的几十个超参数。就一次 HyperOpt sklearn 搜索的结果来说,它生成了一个没有预处理的梯度提升分类器:
- {'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None,
- learning_rate=0.009132299586303643, loss='deviance',
- max_depth=None, max_features='sqrt',
- max_leaf_nodes=None, min_impurity_decrease=0.0,
- min_impurity_split=None, min_samples_leaf=1,
- min_samples_split=2, min_weight_fraction_leaf=0.0,
- n_estimators=342, n_iter_no_change=None,
- presort='auto', random_state=2,
- subsample=0.6844206624548879, tol=0.0001,
- validation_fraction=0.1, verbose=0,
- warm_start=False), 'preprocs': (), 'ex_preprocs': ()}
如何构建 HyperOpt-sklearn 模型可以查看源文档。它比 auto-sklearn 复杂得多,也比 TPOT 复杂一点。但是如果超参数很重要的话,它可能是值得的。
文档地址:http://hyperopt.github.io/hyperopt-sklearn/
AutoKeras
与标准机器学习库相比,神经网络和深度学习功能更强大,因此更难实现自动化。AutoKeras 库有哪些功效呢?具体如下:
AutoKeras 支持文本、图像和结构化数据,为初学者和寻求更多参与技术知识的人提供界面。AutoKeras 使用进化神经网络架构搜索方法来减轻研究人员的繁重和模棱两可的工作。
尽管 AutoKeras 的运行需要很长时间,但用户可以指定参数来控制运行时间、探索模型的数量以及搜索空间大小等。
- Hyperparameter |Value |Best Value So Far
- text_block_1/block_type|transformer|transformer
- classification_head_1/dropout|0 |0
- optimizer |adam |adam
- learning_rate |0.001 |0.001
- text_block_1/max_tokens|20000 |20000
- text_block_1/text_to_int_sequence_1/output_sequence_length|200 |200
- text_block_1/transformer_1/pretraining|none |none
- text_block_1/transformer_1/embedding_dim|32 |32
- text_block_1/transformer_1/num_heads|2 |2
- text_block_1/transformer_1/dense_dim|32 |32
- text_block_1/transformer_1/dropout|0.25 |0.25
- text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg
- text_block_1/dense_block_1/num_layers|1 |1
- text_block_1/dense_block_1/use_batchnorm|False |False
- text_block_1/dense_block_1/dropout|0.5 |0.5
- text_block_1/dense_block_1/units_0|20 |20
AutoKeras 的相关内容参阅以下两个链接:
四个库各有特色,应该选哪个?
用户可以根据自己的需求选择合适的 Python 库,作者给出了以下几个建议:
文章题目:如何高效、快速、准确地完成ML任务,这4个AutoML库了解一下
文章分享:http://www.mswzjz.cn/qtweb/news5/302855.html
攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能