【.com快译】人工智能和机器学习的概念已经在数据科学界流行起来。通过这些概念,许多过去需要手动完成的任务可以被更高效、更准确的自动化所取代。可以说,随着技术趋势的变化,自动化机器学习在简化人工操作的基础上,节省了时间,提高了效率。自动化机器学习:自动化训练过程从概念上讲,机器学习旨在通过在真实世界数据上训练机器来提供所需的输出。也就是说:它使机器能够从已有的数据(或经验)中得到一定程度的训练,经过完整的数据处理后,能够产生更准确的输出。那么自动化机器学习(AutoML)的概念,显然就是让整个过程完全自动化。自动化机器学习的成熟度模型自动化机器学习的不同实现可以根据其对应的成熟度级别分为不同的成熟度级别。如下图所示,模型的成熟度越高,对自动化任务的支持就越好。当然,模型需要通过对数据的集中训练,能够执行更多的任务,提供更多的服务。1.Hyperparameteroptimization数据集提交后,自动化机器学习会根据上述成熟度模型尝试匹配现有的各种模型,如:随机森林、线性回归等(一般为结构化数据)。同时,它会按需优化应用于数据的每个模型的超参数(hyperparameters)。此类优化技术包括:手动搜索、随机搜索、网格搜索等。例如:Auto-sklearn使用贝叶斯模型进行超参数优化,并能够给出期望的结果。然而,在这个成熟度模型级别,自动化机器学习只能执行有限的任务,例如:交叉验证、机器学习算法的选择、超参数的优化等。当然,随着成熟度级别的提高,自动化机器学习将拥有更多的能力并提供更好的结果。2.第一层以上的数据预处理在第一层中,自动化机器学习需要用户自行实施数据预处理措施。然而,在第二层,由于使用了更复杂的模型,各种数据预处理任务可以由自动化本身完成,并为进一步处理做好准备。通过搜索和知道列的类型,机器学习本身完全有能力将所有数据(包括一些空数据)转换为常见的数值类型。当然,这还不包括数据的高级转换和预处理,这还需要数据科学家自己进一步操作。对于目标任务,系统只负责搜索和选择合适的机器学习算法。例如:根据手头的移动应用开发任务,设计自动机器学习的算法和模型,通过数据预处理得到需要的预算、时间等准确结果。通过数据预处理,自动化机器学习系统可以构建和实现特征选择、降维和数据压缩等功能,然后无缝地执行各种训练任务。3.寻找合适的机器学习架构上述一级和二级自动化机器学习系统显然不能根据数据的性质主动发现合适的机器学习架构并执行以保证优秀的输出。第三个层次,以AutoKeras为代表的开源自动化机器学习库实现了神经架构搜索(NAS,neuralarchitecturesearch,参见:https://en.wikipedia.org/wiki/Neural_architecture_search)。这种流行的架构可以有效地在图像、语音或文本上实施机器学习算法。因此,数据科学家可以使用不同的神经架构搜索算法来增强对自动化机器学习的支持和经验积累。在实际应用中,自动驾驶汽车、自动化消费服务等领域都采用了第三层次的自动化机器学习系统。4.相关领域知识的运用为了能够提供准确的机器学习系统输出,需要对数据有深刻的理解,尤其是数据的范围和承载系统。复杂的人工智能效果只能通过使用相关领域的知识并始终参考所有必须考虑的标准来实现。可见,现有相关领域的知识储备和在实际场景中的运用,无疑会提高最终结果的准确性。同时,更高的准确性推动了卓越的预测能力,并为自动化机器学习任务提供全面支持。因此,这种级别的成熟度模型侧重于通过增加背景领域的相关知识来提高自动化机器学习系统的准确性,并具有明确的结果导向记录。自动化机器学习示例从事数据科学研究的人员可以根据实际应用场景的需要,使用各种工具和软件库,开发输出准确的自动化流程和机器学习系统。用于自动化机器学习的开源库目前业界有多种类型的开源库,可以支持和满足开发者在其系统中对自动化机器学习的各种需求。1.AutoKeras这个软件库在GitHub上免费提供给开发者。DataLab开发的AutoKeras旨在提供对所有深度学习工具的访问,以增强深度学习模型的整体能力。以下代码是AutoKeras的应用示例:importautokerasasakclf=ak.ImageClassifier()clf.fit(x_train,y_train)results=clf.predict(x_test)Python源码链接:https://github.com/jhfjhfj1/autokeras2。MLBoxMLBox是另一个用Python编写的开源库。它可以更快、更轻松地开发用于自动化机器学习的各种功能,包括可用于数据预处理、清理和格式化的功能。以下代码示例显示了如何在导入数据后执行数据预处理:frommlbox.preprocessingimport*frommlbox.optimisationimport*frommlbox.predictionimport*paths=["../input/train.csv","../input/test.csv"]target_name="Survived"rd=Reader(sep=",")df=rd.train_test_split(paths,target_name)#readingandpreprocessing(dates,...)Python源码链接:https://www.kaggle.com/axelderomblay/running-mlbox-auto-ml-package-on-titanic3.Auto-sklearnAuto-sklearn是另一个开源自动化机器学习支持库。它通过选择合适的机器学习算法来研究数据的模型和需求。它消除了客户端对超参数处理的要求,允许它自己进行处理。以下代码是在数据集上实现Auto-sklearn的示例:importautosklearn.classificationimportsklearn.model_selectionimportsklearn.datasetsimportsklearn.metricsX,y=sklearn.datasets.load_digits(return_X_y=True)X_train,X_test,y_train,y_test=\sklearn.model_selection。train_test_split(X,y,random_state=1)automl=autosklearn.classification.AutoSklearnClassifier()automl.fit(X_train,y_train)y_hat=automl.predict(X_test)print("Accuracyscore",sklearn.metrics.accuracy_score(y_test,y_hPython源码链接:https://AutomatedMachineLearning.github.io/auto-sklearn/master/AutomatedMachineLearningTools下面的工具虽然发布用于商业用途,但不仅应用广泛,而且保证了自动化输出质量DataRobotDataRobot是第一个支持自动化机器学习的工具,它提供了一个能够实现人工智能的先进平台,在协助用户解决各种问题的同时,用户不必过分担心它的执行过程,可以轻松获取DataRobotAPI不仅支持预测,还可以让机器通过选择合适的方法自动处理并提供输出结果。下面的代码是一个应用程序DataRobotAPI的示例。它使用数据集来预测每家医院的患者在30天内可能再次入院的概率。importdatarobotasdrimportpandasaspdpd.options.display.max_columns=1000importnumpyasnpimporttimeimportmatplotlib.pyplotaspltfromjupyterthemesimportjtplot#currentlyinstalledthemewillbeusedtosetplotstyleifnoargumentsprovidedjtplot.style()get_ipython().magic('matplotlibinline')#loadinputdatadf=pd.read_csv('../demo_data/10kDiabetes.csv')#initializedatarobotclientinstancedr.Client(config_path='/Users/benjamin.miller/.config/datarobot/my_drconfig.yaml')#create100sampleswithreplacementfromtheoriginal10Kdiabetesdatasetsamples=[]foriinrange(100):samples.append(df.sample(10000,replace=True))#loopthrougheachsampledataframesfori,sinenumerate(样本):#initializeprojectproject=dr.Project.start(project_name='API_Test_{}'.format(i+20),sourcedata=s,target='readmitted',worker_count=2)#getallprojectsprojects=[]forprojectindr.Project。list():if"API_Test"inproject.project_name:projects.append(project)#*Foreachproject...*#Makepredictionontheoriginaldatasetusingthemostaccuratemodel#initializelistofallpredictionsforconsolidatingresultsbootstrap_predictions=[]#loopthrougheachrelevantprojecttogetpredictionsonoriginalinputdatasetforprojects:#getbestperformingmodelmodel=dr.Model.get(project=project.id,model_id=project.get_models()[0].id)#uploaddatasetnew_data=project.upload_dataset(df=df)#startapredict模型.request_predictions(new_data.id)#getjobstatusevery5secondsandmoveononce'inprogress'foriinrange(100):time.sleep(5)try:job_status=dr.PredictJob.get(project_id=project.id,predict_job_id=predict_job.id).statusexcept:#normallythejob_statuswouldproduceanerrorwhenitiscompletedbreak#nowthepredictionsarefinishedpredictions=dr.PredictJob.get_predictions(project_id=project.id,predict_job_id=predict_job.id)#extractrowidsandpositiveprobabilitiesforallrecordsandsettodictionarypred_dict={k:vfork,vinzip(predictions.row_id,predictions.positive_probability)}#appendpredictiondictionarytobootstrappredi复制代码ctionsbootstrap_predictions.append(pred_dict)#combineallpredictionsintosingledataframewithkeysasids#eachrecordisarow,eachcolumnisasetofpredictionspertainingto#amodelcreatedfromabootstrappeddatasetdf_predictions=pd.DataFrame(bootstrap_predictions).T#addmeanpredictionsforeachobservationindf_predictionsdf_predictions['mean']=df_predictions.mean(axis=1)#placeeachrecordintoequalsizedprobabilitygroupsusingthemeandf_predictions['probability_group']=pd.qcut(df_predictions['mean'],10)#aggregateallpredictionsforeachprobabilitygroupd={}#dictionarytocontain{Interval(probability_group):array([predictions])}forpginset(df_predictions.probability_group):#combineallpredictionsforagivengroupframe=df_predictions[df_predictions.probability_group==pg]。iloc[:,0:100]d[str(pg)]=frame.as_matrix().flatten()#createdataframefromallprobabilitygrouppredictionsdf_pg=pd.DataFrame(d)#createboxplotsinorderofincreasingprobabilityrangesprops=dict(boxes='slategray',medians='black',whiskers='slategray')viz=df_pg.plot.box(color=props,figsize=(15,7),patch_artist=True,rot=45)grid=viz.grid(False,axis='x')ylab=viz.set_ylabel('ReadmissionPredictionRange')xlab=viz.set_xlabel('MeanPredictionProbabilityRanges')title=viz.set_title(label='ExpectedPredictionDistributionsbyReadmissionPredictionRange',fontsize=18)Python源码链接:https://blog.datarobot.com/estimation-of-prediction-distributions-using-datarobotH2O.ai另一个支持人工智能的服务平台工具是H2O,主要用于完成机器学习任务如:无人驾驶AI结果输出。总结除了上面提到的工具和软件库,市场上还有其他商业解决方案,例如GoogleAutoML(https://cloud.google.com/automl/)。它们有助于在实施与机器学习相关的概念的同时对自动化数据进行培训,并且可以提供卓越的结果和预测。如今,随着自动化机器学习和人工智能技术的有效性不断增强,越来越多的企业能够继续从此类系统的输出中受益。原标题:ABeginner'sGuidetoAutomatedMachineLearning:4MaturityModelstoUnderstand,作者:ManojRupareliya
