下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

让机器学习自动帮我们建模,这4个Python库能让你大开眼界

作者:为AI呐喊     来源: 今曰头条点击数:1485发布时间: 2020-09-18 15:02:30

标签: Python库视频Python库学习视频Python库课程视频

自动机器学习(通常简称为AutoML)是一个新兴的领域,在这个领域中,通过建立机器学习模型来对数据进行建模的过程是自动化的。AutoML能让建模变得更容易,也能让每个人更容易访问。

让机器学习自动帮我们建模,这4个Python库能让你大开眼界_Python库视频_Python库学习视频_Python库课程视频_课课家

如果你对AutoML感兴趣,下面这四个Python库是最好的选择!

1.auto-sklearn

auto-sklearn 是一个自动化的机器学习工具库,可与大家都非常熟悉的标准 sklearn 接口无缝集成。通过使用最近的方法,比如贝叶斯优化,该库可被用来导航可能模型的空间,并学会推断特定配置是否能很好地完成给定的任务。

该库由 Matthias Feurer 等人创建,其技术细节在论文《高效和鲁棒的机器学习》中进行了描述,费勒写道:

…我们引入了一个基于scikit-learn的强大的新AutoML系统(使用15个分类器,14个特征预处理方法和4个数据预处理方法,产生了一个包含110个超参数的结构化假设空间)。

auto-sklearn 可能是入门 AutoML 的最佳库了。除了发现数据集的数据准备和模型选择之外,它还可以从相似数据集上表现良好的模型中进行学习,并且可以将效果最佳的模型汇总在一起。

除了高效的实现之外,auto-sklearn 只需要最少的用户交互, 使用 pip install auto-sklearn 即可安装该库。

可以使用的主要类是 AutoSklearnClassifier 和 AutoSklearnRegressor,它们分别用于分类和回归任务。 两者都具有用户指定的相同参数,其中最重要的是时间限制和集合大小。

  1. import autosklearn as ask 
  2. #ask.regression.AutoSklearnRegressor()用于回归任务 
  3. model = ask.classification.AutoSklearnClassifier(ensemble_size=10, #最终集合的大小(最小值为1) 
  4.                                                  time_left_for_this_task=120, #进程运行的秒数 
  5.                                                  per_run_time_limit=30) #每个模型分配的最大秒数 
  6. model.fit(X_train, y_train) #开始拟合搜索模型 
  7. print(model.sprint_statistics()) #打印搜索统计信息 
  8. y_predictions = model.predict(X_test) #从模型中获得预测 

AutoSklearn官方文档:https://automl.github.io/auto-sklearn/master/

2.TPOT

TPOT 是另一个自动化建模的 Python 库,但是该库更加着重于数据准备以及建模算法和模型超参数。它通过一种基于进化树的结构(称为“基于树的管道优化工具(TPOT),可自动设计和优化机器学习管道)来实现特征选择、预处理和构造的自动化。”

程序或管道用树表示。遗传程序选择并进化某些程序,以使每个自动机器学习管道的最终结果最大化。

正如 Pedro Domingos 所说,“垃圾算法遇上海量数据也比数据有限的聪明算法强大。”事实也是如此:TPOT 可以生成复杂的数据预处理管道。

TPOT管道优化器可能需要几个小时才能产生很好的结果,就像很多AutoML算法一样(除非数据集很小)。你也可以在 Kaggle committes 或 googlecolab 中运行这些长程序。

  1. import tpot 
  2. pipeline_optimizer = tpot.TPOTClassifier(generations=5, #进行训练的迭代次数 
  3.                                          population_size=20, #训练的数据量 
  4.                                          cv=5) #StratifiedKFold中的倍数 
  5. pipeline_optimizer.fit(X_train, y_train) #适配管道优化器-可能需要很长时间print(pipeline_optimizer.score(X_test, y_test)) #打印管道评分 
  6. pipeline_optimizer.export('tpot_exported_pipeline.py') #导出管道-用Python代码! 

TPOT 的最好功能是将模型导出为Python代码文件,这样可以方便以后使用。

TPOT 官方文档:https://epistasislab.github.io/tpot/

TPOT 示例:https://epistasislab.github.io/tpot/examples/

3.HyperOpt

HyperOpt 是由 James Bergstra 开发用于贝叶斯优化的 Python 库。该库专为大规模优化具有数百个参数的模型而设计,可显式地用于优化机器学习管道,并具有用于选择跨多个核心和机器的优化过程的选项。

但是,HyperOpt 很难直接使用,因为它非常技术性,并且需要仔细指定优化步骤和参数。相反,建议大家用 HyperOpt-sklearn,一个包含 sklearn 库的 HyperOpt 包装器。

具体来说,HyperOpt 虽然确实支持预处理,但重点仍然放在特定模型中的许多超参数上。如果我们仔细观察 HyperOpt-sklearn的一次搜索结果,就会发现该结果导致没有预处理的梯度提升分类器:

  1. {'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_mse', init=None, 
  2.                            learning_rate=0.009132299586303643, loss='deviance'
  3.                            max_depth=None, max_features='sqrt'
  4.                            max_leaf_nodes=None, min_impurity_decrease=0.0, 
  5.                            min_impurity_split=None, min_samples_leaf=1, 
  6.                            min_samples_split=2, min_weight_fraction_leaf=0.0, 
  7.                            n_estimators=342, n_iter_no_change=None, 
  8.                            presort='auto', random_state=2, 
  9.                            subsample=0.6844206624548879, tol=0.0001, 
  10.                            validation_fraction=0.1, verbose=0, 
  11.                            warm_start=False), 'preprocs': (), 'ex_preprocs': ()} 

用于构建 HyperOpt-sklearn 模型的文档:http://hyperopt.github.io/hyperopt-sklearn/。

虽然 HyperOpt 库比 auto-sklearn、TPOT复杂得多,但是如果对于你的模型而已,超参数非常重要,那就值得你去把它用起来。

4.AutoKeras

与标准的机器学习库相比,神经网络和深度学习功能更强大,因此更难实现自动化。

使用 AutoKeras,神经结构搜索算法可以找到最佳的结构,如一个层中的神经元数量、层的数量、要合并的层、特定于层的参数,如过滤器大小或丢失神经元的百分比等。一旦搜索完成,可以将该模型用作普通的 TensorFlow/Keras 模型。

通过使用AutoKeras,我们可以构建一个包含复杂元素(如嵌入和空间缩减)的模型,这些元素对于仍在学习深度学习过程中的人来说是不太容易访问的。

当 AutoKeras 为我们创建模型时,许多预处理,如矢量化或清除文本数据,都会为您完成并优化。

启动和训练搜索需要两条线。AutoKeras 拥有一个类似 Keras 的界面,所以它不难记住和使用。

AutoKeras 支持文本、图像和结构化数据,以及为初学者和寻求更多技术细节的人提供的界面,AutoKeras 使用进化神经结构搜索方法为我们消除繁重的工作和模糊性。

虽然 AutoKeras 运行需要很长时间,但是有许多用户指定的参数可用于控制运行时间、探索的模型数量、搜索空间大小等。

考虑使用 AutoKeras 生成的文本分类任务的这种经过考虑的体系结构。

  1. Hyperparameter      |Value     |Best Value So Far    
  2. text_block_1/block_type|transformer|transformer          
  3. classification_head_1/dropout|0         |0                    
  4. optimizer           |adam      |adam                 
  5. learning_rate       |0.001     |0.001                
  6. text_block_1/max_tokens|20000     |20000                
  7. text_block_1/text_to_int_sequence_1/output_sequence_length|200       |200                  
  8. text_block_1/transformer_1/pretraining|none      |none                 
  9. text_block_1/transformer_1/embedding_dim|32        |32                   
  10. text_block_1/transformer_1/num_heads|2         |2                    
  11. text_block_1/transformer_1/dense_dim|32        |32                   
  12. text_block_1/transformer_1/dropout|0.25      |0.25                 
  13. text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg           
  14. text_block_1/dense_block_1/num_layers|1         |1                    
  15. text_block_1/dense_block_1/use_batchnorm|False     |False                
  16. text_block_1/dense_block_1/dropout|0.5       |0.5                  
  17. text_block_1/dense_block_1/units_0|20        |20 

对比:你应该用哪一个AutoML库?

如果你的首要任务是需要一个干净,简单的界面和相对快速的结果,请选择使用auto-sklearn。此外:该库与sklearn的自然集成,可与常用的模型和方法一起使用,这样可以对时间有更多的控制作用。

如果你的首要任务是高准确度,不考虑可能需要的长时间训练,则使用TPOT。强调高级预处理方法,通过将管道表示为树结构而成为可能。额外提示:TPOT可以为最佳模型输出Python代码。

如果你的首要任务是高准确度,不考虑可能需要的长时间训练,则可以使用 HyperOpt sklearn。强调模型的超参数优化,不知道是否产生效果,具体情况要取决于数据集和算法。

如果你的问题需要神经网络才能解决,特别是当它以文本或图像的形式出现时,使用AutoKeras。虽然确实需要很长的训练时间,但有很多措施可以控制时间和搜索空间的大小。

赞(8)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程