【.com快译】我们已经知道机器学习是一种自动解决复杂问题的方法。但是机器学习本身可以自动化吗?这就是我们将在本文中探讨的内容。读完本文后,您将知道该问题的答案,并且掌握如何实施AutoML。1.自动机器学习(AutoML)在应用机器学习模型时,我们通常会进行数据预处理、特征工程、特征提取和特征选择。在此之后,我们将选择最佳算法并调整我们的参数以获得最佳结果。AutoML是一系列用于自动化这些过程的概念和技术。1.1.AutoML的优势将机器学习模型应用于现实世界的问题通常需要许多与计算机科学相关的技能、领域专业知识和数学专业知识。寻找具备所有这些技能的专家并不总是那么容易。AutoML还可以减少人类设计机器学习模型时出现的偏差和错误。企业可以通过在数据管道中应用AutoML来降低聘请许多专家的成本。AutoML还可以减少开发和测试机器学习模型所需的时间。1.2.AutoML的缺点AutoML在机器学习领域是一个相当新的概念。因此,在应用某些当前的AutoML解决方案时应谨慎行事,因为其中一些技术仍在开发中。另一个主要挑战是运行AutoML模型的时间成本很高。这真的取决于我们机器的计算能力。正如我们很快就会看到的,一些AutoML解决方案在我们的本地机器上也能很好地工作,但有些需要更多的加速优化,例如GoogleColab。2.AutoML的概念就AutoML而言,主要需要了解两个概念:NeuralArchitectureSearch和TransferLearning。2.1.神经架构搜索神经架构搜索是自动化神经网络设计的过程。通常,强化学习或进化算法用于这些网络的设计。在强化学习中,模型因低准确度而受到惩罚,并因高准确度而受到奖励。使用这种技术,模型将始终努力实现更高的准确性。已经有一些关于神经架构搜索的论文,如LearningTransferableArchitecturesforScalableImageRecognition、EfficientNeuralArchitectureSearch(ENAS)和RegularizationforImageClassifierArchitectureSearchEvolution(RegularizedEvolution)模型。2.2.迁移学习顾名思义,迁移学习是一种使预训练模型能够将其学到的知识迁移到新的但相似的数据集的技术。这使我们能够以更少的计算时间和计算资源实现更高的精度。神经架构搜索适用于需要设计新模型架构的问题,而迁移学习最适合与预训练模型中使用的数据集类似的问题。3.AutoML解决方案现在让我们看看一些可用的AutoML解决方案。3.1.Auto-Keras根据官方资料:Auto-Keras是一个用于自动化机器学习(AutoML)的开源软件库。它是由德克萨斯A&M大学的数据实验室和社区贡献者开发的。AutoML的最终目标是为数据科学或机器学习背景有限的领域专家提供易于使用的深度学习工具。Auto-Keras提供深度学习模型架构和超参数的自动搜索。Auto-Keras可以使用pip命令安装:pipinstallauto-kerasAuto-Keras在最终发布之前仍在进行高级测试。官方网站警告说,对于因使用网站上的图书馆而造成的任何损失,他们概不负责。这个包基于Keras深度学习包。3.2.Auto-SklearnAuto-Sklearn是一个基于Scikit-learn的AutoML包。它是Scikit-learn估算器的替代品。也可以通过简单的pip命令安装:pipinstallauto-sklearn在Ubuntu系统下,运行Auto-Sklearn需要C++11构建环境和SWIG配置环境。sudoapt-getinstallbuild-essentialswig通过Anaconda安装如下:condainstallgxx_linux-64gcc_linux-64swig目前无法在Windows上运行Auto-Sklearn。但是,您可以尝试一些技巧,例如使用docker映像或通过虚拟机运行它。3.3.TheTree-BasedPipelineOptimizationTool(TPOT)根据官网信息:TPOT的目标是通过将管道的灵活表达式树(FlexibleExpressionTree)表示与随机搜索算法如遗传规划(Genetic编程)。构建机器学习管道。TPOT使用基于Python的scikit-learn库作为其机器学习基础。该软件是开源的,可在GitHub上获取。3.4.Google的AutoML官网是这样介绍的:CloudAutoML是一套机器学习产品。通过使用谷歌最先进的迁移学习和神经架构搜索技术,机器学习专业知识有限的开发者也可以训练出高质量的模型。Google的AutoML解决方案不是开源的。它的价格可以在这里查看。3.5.H2OH2O是一个开源的分布式内存机器学习平台。它在R和Python中都可用。该软件包支持广泛的统计和机器学习算法。4.将AutoML应用于实际问题现在让我们看看如何使用Auto-Keras和Auto-Sklearn来解决实际问题。4.1.Auto-Keras实现我强烈建议在GoogleColabunless上运行以下代码示例,除非您的计算机具有非常高的计算能力。我还建议在GoogleColab上启用GPU运行时。这里的第一步是在Colab上安装Auto-Keras。!pipinstallautokeras我们将在MNIST数据集上运行图像分类任务。第一步是导入此数据集和图像分类器。数据集是从Keras导入的,图像分类器是从Auto-Keras导入的。由于我们正在构建一个基于预训练模型识别手写数字的模型,因此我们将其归类为监督学习问题。然后,我们在未遇到的数字图像上测试模型的准确性。fromkeras.datasetsimportmnistfromautokeras.image.image_supervisedimportImageClassifer在此示例中,图像和标签已格式化为numpy数组。下一步是将刚刚加载的数据拆分为训练集和测试集,如下所示:(x_train,x_test),(x_test,y_test)=mnist.load_data()x_train=x_train.reshape(x_train.shape+(1,))x_test=x_test.reshape(x_test.shape+(1,))将数据分成训练集和测试集后,下一步就是拟合图像分类器。clf=ImageClassifer(verbose=True)clf.fit(x_train,y_train,time_limit=12*60*60)clf.final_fit(x_train,y_train,x_test,y_test,retrain=True)y=clf.evaluate(x_test,y_test)打印(y)1。将verbose指定为True意味着搜索过程将打印在屏幕上供我们查看。2、fit方法中,time_limit参数是指以秒为单位的搜索时限。3、final_fit是模型找到最新模型架构后的最后一次训练。将retrain参数指定为True意味着模型的权重将被重新初始化。4.评估模型在测试集上的性能后,print(y)会显示模型准确率。这就是我们使用Auto-Keras对图像进行分类所需要做的全部工作。只需几行代码,Auto-Keras就可以为我们完成所有繁重的工作。4.2.Auto-Sklearn实现Auto-Sklearn实现与上面的Auto-Keras实现非常相似。我们对数字数据集执行类似的分类任务。首先,我们需要导入一些库:importautosklearn.classificationimportsklearn.model_selectionimportsklearn.datasetsimportsklearn.metrics像往常一样,我们加载数据集并将其分为训练集和测试集。然后我们从autosklearn.classification导入AutoSklearnClassifier。完成后,我们将分类器拟合到数据集,然后进行预测并检查模型准确性。这就是您需要做的全部。X,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("Scoreofaccuracy",sklearn.metrics.accuracy_score(y_test,y_hat))5.接下来是什么?更多自动化机器学习包仍在积极开发中。我们希望在2019年看到这方面的更多进展。您可以通过官方文档站点关注这些包的进展。当然,您也可以通过GitHub上的拉取请求为这些包做出贡献。有关Auto-Keras和Auto-Sklearncan的更多信息和示例,请访问其官方网站。【翻译稿件,合作网站转载请注明原译者和出处.com】
