机器学习(AutoML)是一个新兴的领域,其中机器模型更容易。如果你对AutoML感兴趣,我向你推荐以下4个必学的Python库。1.auto-sklearnauto-sklearn是一个自动化机器学习工具包,它无缝集成了业内许多人熟悉的标准sklearn界面。通过使用最先进的方法(例如贝叶斯优化),构建库来导航可能模型的空间,并学习推断特定配置是否适用于给定任务。该库由MatthiasFeurer等人创建,其技术细节在名为《高效和鲁棒机器学习》的论文中进行了描述。Feurer写道:“我们基于scikit-learn使用15个分类器、14种特征预处理方法和4种数据预处理方法生成的110个超参数的结构化假设,引入了一个新的鲁棒自动系统空间。”auto-sklearn可能是开始使用AutoML的最佳库。除了挖掘数据集的数据准备和模型选择外,它还学习在类似数据集上表现良好的模型。来源:EfficientandRobustAutomatedMachineLearning(2015)基于有效的实施,auto-sklearn最大限度地减少了所需的用户交互。该库可以使用pipinstallauto-sklearn安装。可以使用的两个主要类是AutoSklearnClassifier和AutoSklearnRegressor,分别用于分类和回归任务。两者都有相同的用户指定参数,其中最重要的是时间限制和集合大小。importautosklearnasask#ask.regression.AutoSklearnRegressor()forregressiontasksmodel=ask.classification.AutoSklearnClassifier(ensemble_size=10,#sizeoftheendensemble(minimumis1)time_left_for_this_task=120,#thenumberofsecondstheprocessrunsforper_run_time_limit=30)#maximumsecondsallocatedpermodelmodel.fit(X_train,y_train)#beginfittingthesearchmodelprint(model.sprint_statistics())#printstatisticsforthesearchy_predictions=model.predict(X_test)#getpredictionsfromthemodel2.TPOTTPOT是另一个用于自动化建模管道的Python库,它更侧重于数据准备、建模算法和模型超参数。它通过基于进化树的结构自动进行特征选择、预处理和构建,“称为基于树的管道优化工具(TPOT),它可以自动设计和优化机器学习管道。”资料来源:基于管道优化工具树评估的数据科学自动化(2016)程序或管道以树状图形式呈现。遗传程序选择并进化某些程序,以最大化每个自动化机器学习管道的最终结果。正如PedroDomingos所说:“拥有大量数据的愚蠢算法胜过拥有有限数据的聪明算法。”事实上,TPOT可以生成复杂的数据预处理管道。来源:TPOT文档与许多AutoML算法一样,TPOT管道优化器可能需要数小时才能产生良好的结果。您可以在Kaggle提交或GoogleColab中运行这些长程序。importtpotpipeline_optimizer=tpot.TPOTClassifier(generations=5,#numberofiterationstorunthetrainingpopulation_size=20,#numberofindividualstotraincv=5)#numberoffoldsinStratifiedKFoldpipeline_optimizer.fit(X_train,y_train)#fitthepipelineoptimizer-cantakealongtimeprint(pipeline_optimizer.score(X_test,y_test))#printscoringforthepipelinepipeline_optimizer.export(tpot_exported_pipeline.py)#exportthepipeline-inPython代码!也许TPOT的最佳功能是能够将模型导出为Python代码文件以供以后使用。3.HyperOptHyperOpt由JamesBergstra开发,是一个用于贝叶斯优化的Python库。该库专为具有数百个参数的模型的大规模优化而设计,明确设计用于优化机器学习管道,并具有跨多个内核和机器扩展优化过程的选项。“我们的方法是公开一个底层表达式图,说明如何根据超参数计算性能度量(例如验证示例的分类准确性),这些超参数不仅控制各个处理步骤的应用,而且甚至包括哪些处理步骤。”然而,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,pre=0.6844206624548879,0fractionvalidation=0tol1,0.0,warm_start=False),preprocs:(),ex_preprocs:()}构建HyperOpt-sklearn模型的文档中提到它比auto-sklearn复杂很多,比TPOT复杂一点。但如果超参数的作用很重要,那么额外繁琐的工作是值得的。4.AutoKeras神经网络和深度学习比标准的机器学习库强大得多,因此更难实现自动化。使用AutoKeras,神经架构搜索算法可以找到最佳结构,例如层中的神经元数量、层数、要合并的层数、特定于层的参数(例如过滤器的大小或丢失的神经元数)在辍学率等方面。一旦搜索完成,该模型就可以用作普通的TensorFlow/Keras模型。通过使用AutoKeras,您可以构建一个包含复杂元素的模型,例如嵌入和空间缩减,否则对于那些仍在研究深度学习的人来说,这将是困难的。当AutoKeras创建模型时,会完成和优化大量预处理,例如矢量化或清理文本数据。只需两行代码即可启动和训练搜索。并且AutoKeras具有类似keras的界面,因此易于记忆和使用。AutoKeras支持文本、图像和结构化数据,并为初学者和希望深入了解技术知识的人提供接口。AutoKeras使用进化神经架构搜索方法来消除困难和歧义。尽管AutoKeras可能需要很长时间才能运行,但有许多用户指定的参数可用于控制运行时间、探索的模型数量、搜索空间大小等。Hyperparameter|Value|BestValueSoFartext_block_1/block_type|transformer|transformerclassification_head_1/dropout|0|0optimizer|adam|adamlearning_rate|0.001|0.001text_block_1/max_tokens|20000|20000text_block_1/text_to_int_sequence_1/output_sequence_length|200|200text_block_1/transformer_1/pretraining|none|nonetext_block_1/transformer_1/embedding_dim|32|32text_block_1/transformer_1/num_heads|2|2text_block_1/transformer_1/dense_dim|32|32text_block_1/transformer_1/dropout|0.25|0.25text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avgtext_block_1/dense_block_1/num_layers|1|1text_block_1/dense_block_1/use_batchnorm|False|Falsetext_block_1/dense_block_1/dropout|0.5|0.5text_block_1/dense_block_1/units_0|20|20我应该使用哪个自动库?如果您喜欢干净、简单的界面和相对较快的结果,请使用auto-sklearn。与sklearn的自然集成可用于常用模型和方法。如果你注重高精度,不介意训练时间长,可以使用TPOT。它强调的高级预处理方法可以通过用树结构表示流水线来实现,并且可以额外输出最佳模型的Python代码。如果高精度很重要并且您不介意可能较长的训练时间,请使用HyperOpt-sklearn,强调模型超参数优化的有效性取决于您的数据集和算法。如果您的问题涉及神经网络,尤其是文本或图像形式,请使用AutoKeras。它的训练确实需要很长时间,但是有大量的措施来控制时间和搜索空间的大小。如果你想自动化,千万不要错过这四个库。本文转载自微信公众号“读芯”,可通过以下二维码关注。转载本文请联系核心阅读公众号。
