自动机器学习-全-
自动机器学习(全)
原文:
annas-archive.org/md5/188dce12e012d6f75737380a61fa01c6译者:飞龙
前言
每个机器学习工程师都要处理具有超参数的系统,自动机器学习(AutoML)中最基本的任务就是自动设置这些超参数以优化性能。最新的深度神经网络具有广泛的超参数,用于其架构、正则化和优化,这些超参数可以有效地定制以节省时间和精力。
本书回顾了自动特征工程、模型和超参数调整、基于梯度的方法等技术的基础,你将探索在不同开源工具中实现这些技术的不同方式。接下来,你将专注于企业工具,了解在三大云服务提供商——Microsoft Azure、Amazon Web Services(AWS)和Google Cloud Platform(GCP)——中实现 AutoML 的不同方式。随着你的进步,你将通过使用 AutoML 构建机器学习模型来探索云 AutoML 平台的功能。后面的章节将展示如何通过自动化机器学习开发生命周期中耗时且重复的任务来开发准确模型。
到这本书的结尾,你将能够构建和部署既准确又能提高生产力、允许互操作性和最小化特征工程任务的 AutoML 模型。
本书面向的对象
公民数据科学家、机器学习开发者、AI 爱好者或任何希望利用开源工具、Microsoft Azure Machine Learning、AWS 和 Google Cloud Platform 提供的功能自动构建机器学习模型的人会发现这本书很有用。
本书涵盖的内容
第一章,自动机器学习概览,通过为新手提供坚实的概述并为经验丰富的机器学习从业者提供参考,详细介绍了 AutoML 方法。本章从机器学习开发生命周期开始,探讨了 AutoML 解决的问题——超参数优化问题。
第二章,自动机器学习、算法和技术,允许公民数据科学家在没有丰富经验的情况下构建 AI 解决方案。在本章中,我们根据三个类别回顾了 AutoML 的当前发展:自动特征工程(AutoFE)、自动模型和超参数学习(AutoMHL)和自动深度学习(AutoDL)。这三个类别中采用的最新技术包括贝叶斯优化、强化学习、进化算法和基于梯度的方法。在本章中,我们将总结流行的 AutoML 框架,并以 AutoML 当前面临的开放挑战结束。
第三章, 使用开源工具和库进行自动化机器学习,介绍了自动化预测模型从构思、概念化、开发到部署整个生命周期的 AutoML 开源软件(OSS)工具和库。从数据准备到模型训练、验证以及部署,这些工具几乎无需人工干预就能完成所有工作。在本章中,我们将回顾主要的 OSS 工具,包括 TPOT、AutoKeras、Auto-Sklearn、Featuretools、H2O AutoML、Auto-PyTorch、Microsoft NNI 和 Amazon AutoGluon,并帮助您理解每个库中使用的不同价值主张和方法。
第四章, Azure 机器学习入门,介绍了 Azure 机器学习,它利用 Windows Azure 平台和服务的能力来加速端到端机器学习生命周期。在本章中,我们将回顾如何开始使用企业级机器学习服务来构建和部署模型,以加快开发人员和数据科学家构建、训练和部署机器学习模型的速度。通过示例,我们将为构建和部署 AutoML 解决方案打下基础。
第五章, 使用 Microsoft Azure 进行自动化机器学习,详细介绍了如何使用 Azure 机器学习堆栈自动化模型开发的耗时和迭代任务,并使用 Azure AutoML 执行回归、分类和时间序列分析等操作。本章将使您能够执行超参数调整,以找到最佳参数,并使用 Azure AutoML 找到最佳模型。
第六章, 使用 Amazon Web Services 进行机器学习,涵盖了 Amazon SageMaker Studio、Amazon SageMaker Autopilot、Amazon SageMaker Ground Truth 和 Amazon SageMaker Neo,以及 AWS 提供的其他 AI 服务和框架。除了超大规模云服务提供商之外,AWS 还提供了一组最广泛和最深入的机器学习服务和支持云基础设施,将机器学习的能力交到每一位开发人员、数据科学家和专家实践者的手中。AWS 提供机器学习服务、AI 服务、深度学习框架和学习工具,以快速构建、训练和部署机器学习模型。
第七章, 使用 Amazon SageMaker Autopilot 进行自动化机器学习,带我们深入探索 Amazon SageMaker Studio,使用 SageMaker Autopilot 运行多个候选方案,以确定数据预处理步骤、机器学习算法和超参数的最佳组合。本章提供了一个动手的、说明性的概述,用于训练推理管道,以便轻松部署到实时端点或批量处理。
第八章, 使用 Google Cloud Platform 进行机器学习,回顾了谷歌的 AI 和机器学习产品和服务。谷歌云在可信和可扩展的平台基础上提供创新的机器学习产品和服务。这些服务包括 AI Hub、AI 构建块如视觉、语言、对话和结构化数据服务,以及 AI 平台。在本章中,您将熟悉这些产品和服务,并了解 AI 平台如何支持 Kubeflow,谷歌的开源平台,它允许开发者使用 TensorFlow、TPUs 和 TFX 工具等前沿谷歌 AI 技术构建可移植的机器学习管道,并将您的 AI 应用程序部署到生产环境中。
第九章, 使用 GCP Cloud AutoML 进行自动化机器学习,展示了如何通过最小努力和机器学习专业知识来训练定制的业务特定机器学习模型。通过实际案例和代码讲解,我们将探索 Google Cloud AutoML 平台,以创建自然语言、视觉、非结构化数据、语言翻译和视频智能的定制深度学习模型,无需任何数据科学或编程知识。
第十章, 企业中的 AutoML,将 AutoML 在企业环境中呈现为一个通过生成包含数据分析、预测模型及其性能比较的完全自动化的报告来自动化数据科学的系统。AutoML 的一个独特之处在于它提供了适合机器学习非专家的自然语言描述。我们强调通过讨论在实际问题上表现良好的方法以及确定最佳整体方法来操作 MLOps 管道。本章详细介绍了现实世界挑战背后的想法和概念,并提供了解决这些问题的路线图。
为了充分利用这本书
这本书是 AutoML 的入门指南。熟悉数据科学、机器学习和深度学习方法将对理解 AutoML 如何改进现有方法有所帮助。

如果你使用的是本书的数字版,我们建议你亲自输入代码或通过 GitHub 仓库(下一节中提供链接)访问代码。这样做将有助于你避免与代码的复制和粘贴相关的任何潜在错误。
下载彩色图像
我们还提供了一个包含本书中使用的截图/图表的彩色 PDF 文件。您可以从这里下载:static.packt-cdn.com/downloads/9781800567689_ColorImages.pdf。
使用的约定
本书使用了多种文本约定。
文本中的代码: 表示文本中的代码单词、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 昵称。以下是一个示例:“从amazonsagemaker-examples/autopilot文件夹中打开autopilot_customer_churn笔记本。”
代码块设置如下:

粗体: 表示新术语、重要单词或屏幕上看到的单词。例如,菜单或对话框中的单词在文本中显示如下。以下是一个示例:“从 Amazon SageMaker Studio 开始,通过点击Python 3按钮来启动数据科学笔记本。”
小贴士或重要注意事项
显示如下。
联系我们
我们欢迎读者的反馈。
一般反馈: 如果您对本书的任何方面有疑问,请在邮件主题中提及书名,并通过 customercare@packtpub.com 与我们联系。
勘误: 尽管我们已经尽一切努力确保内容的准确性,但错误仍然可能发生。如果您在这本书中发现了错误,我们将不胜感激,如果您能向我们报告,我们将非常感谢。请访问www.packtpub.com/support/errata,选择您的书籍,点击勘误提交表单链接,并输入详细信息。
盗版: 如果你在互联网上以任何形式遇到我们作品的非法副本,如果你能提供位置地址或网站名称,我们将不胜感激。请通过版权@packt.com 与我们联系,并提供材料的链接。
如果您有兴趣成为作者: 如果您在某个主题上具有专业知识,并且您有兴趣撰写或为本书做出贡献,请访问authors.packtpub.com。
评论
请留下评论。一旦您阅读并使用过本书,为何不在您购买它的网站上留下评论?潜在的读者可以查看并使用您的客观意见来做出购买决定,Packt 公司可以了解您对我们产品的看法,我们的作者也可以看到他们对书籍的反馈。谢谢!
有关 Packt 的更多信息,请访问packt.com。
第一部分:自动化机器学习简介
本部分提供了对自动化机器学习领域的详细介绍,包括其优缺点,以及如何使用开源工具和库来应用它。在本节中,通过实际编码示例的帮助,您将了解到自动化机器学习技术是多样化的,不同的库针对相似问题采取了不同的方法。
本节包括以下章节:
-
第一章, 自动化机器学习概览
-
第二章, 自动化机器学习、算法和技术
-
第三章, 使用开源工具和库进行自动化机器学习
第一章:自动机器学习之旅
"所有模型都是错误的,但有些是有用的。"
– 乔治·爱德华·佩尔哈姆·博克斯 FRS
"机器学习的圣杯之一就是自动化越来越多的特征工程过程。"
– 彼得·多明戈斯,《关于机器学习的一些有用知识》
本章将概述围绕自动机器学习(ML)的概念、工具和技术。本介绍旨在为新手提供一个坚实的概述,并为经验丰富的机器学习从业者提供参考。我们将从介绍机器学习开发生命周期开始,在导航产品生态系统和它解决的数据科学问题中,然后再探讨特征选择、神经架构搜索和超参数优化。
很有可能你正在阅读这本书的电子书,它连接到一个基于你的阅读兴趣推荐这份手稿的网站。我们今天生活在一个世界里,你的数字足迹不仅揭示了你的阅读兴趣,还揭示了你喜欢在哪里吃饭,你最喜欢的朋友是谁,你下一个会去哪里购物,你是否会出现在下一次约会,以及你会为谁投票。在这个大数据时代,这些原始数据变成了信息,反过来,这些信息有助于构建所谓的智慧。
人工智能(AI)及其底层实现的机器学习和深度学习不仅帮助我们找到干草堆中的隐喻性针,还能看到这些大型数据流中的潜在趋势、季节性和模式,从而做出更好的预测。在这本书中,我们将介绍 AI 和 ML 领域的关键新兴技术之一;那就是自动机器学习,或简称AutoML。
在本章中,我们将涵盖以下主题:
-
机器学习开发生命周期
-
自动机器学习
-
自动机器学习的工作原理
-
数据科学民主化
-
澄清自动机器学习的神话
-
自动机器学习生态系统(开源和商业)
-
自动机器学习的挑战和限制
让我们开始吧!
机器学习开发生命周期
在向您介绍自动机器学习之前,我们首先应该定义如何将机器学习实验操作化和扩展到生产环境中。为了超越 Hello-World 应用和在我的 Jupyter 笔记本上运行这类项目,企业需要采用稳健、可靠和可重复的模型开发和部署流程。正如在软件开发生命周期(SDLC)中一样,机器学习或数据科学生命周期也是一个多阶段、迭代的过程。
生命周期包括几个步骤——问题定义和分析的过程、构建假设(除非你正在进行探索性数据分析)、选择业务成果指标、探索和准备数据、构建和创建机器学习模型、训练这些模型、评估和部署它们,以及维护反馈循环:

图 1.1 – 团队数据科学流程
一个成功的数据科学团队有纪律去准备问题陈述和假设,预处理数据,根据主题专家(SME)的输入和正确的模型家族选择适当的数据特征,优化模型超参数,审查结果和相应的指标,最后微调模型。如果这听起来很多,请记住,这是一个迭代过程,数据科学家还必须确保数据、模型版本控制和漂移得到解决。他们还必须建立护栏,以确保模型的性能得到监控。为了使事情更有趣,生产环境中也经常进行冠军挑战者和 A/B 测试实验——让最佳模型获胜。
在这样一个错综复杂且多面的环境中,数据科学家可以利用一切可用的帮助。自动机器学习(Automated ML)伸出援手,承诺处理那些日常的、重复的以及智力效率较低的任务,以便数据科学家能够专注于重要的事情。
自动机器学习
“要完成一个特定的任务,需要多少来自某个特定人口群体的成员?”*
“有限的数量:一个来执行任务,其余的以符合所讨论群体典型行为的方式行动。” (在此处插入你的灯泡笑话)
这是一种元幽默——对于那些倾向于量化的人来说,这是最出色的幽默类型,能够引发欢笑。同样,自动机器学习是一种元学习类别,也称为学习如何学习——即你可以将自动化原则应用于自身,使获取洞察的过程更加快速和优雅。
自动机器学习是一种方法,也是应用某些自动化技术以加速模型开发生命周期的底层技术。自动机器学习使公民数据科学家和领域专家能够训练机器学习模型,并帮助他们构建针对机器学习问题的最佳解决方案。它提供了一种更高层次的抽象,用于确定最佳模型,或针对特定问题的一组模型。它通过自动化特征工程中的日常和重复性任务(包括架构搜索和超参数优化)来协助数据科学家。以下图表展示了自动机器学习生态系统:

图 1.2 – 自动机器学习生态系统
这三个关键领域——特征工程、架构搜索和超参数优化——对于人工智能和机器学习的民主化最有希望。一些自动特征工程技术正在发现数据集中的特定领域可用特征,包括扩展/缩减、分层组织转换、元学习和强化学习。对于架构搜索(也称为神经架构搜索),使用了进化算法、局部搜索、元学习、强化学习、迁移学习、网络形态和连续优化。
最后,但同样重要的是,我们有超参数优化,这是在模型外部寻找正确类型参数的艺术和科学。这里使用了各种技术,包括贝叶斯优化、进化算法、Lipchitz 函数、局部搜索、元学习、粒子群优化、随机搜索和迁移学习,仅举几例。
在下一节中,我们将详细介绍这三个关键的自动化机器学习领域。您将在接下来的章节中看到一些示例,包括代码。现在,让我们详细讨论自动化机器学习是如何工作的,包括特征工程、架构搜索和超参数优化。
自动化机器学习是如何工作的
当涉及到在大数据集中寻找模式时,机器学习技术效果极佳。今天,我们使用这些技术进行异常检测、客户细分、客户流失分析、需求预测、预测性维护和定价优化,以及其他数百种用例。
典型的机器学习生命周期包括数据收集、数据处理、管道管理、模型重新训练和模型部署,在这个过程中,数据处理通常是耗时最长的任务。
从数据中提取有意义的特征,然后使用它们构建模型,同时找到正确的算法和调整参数,也是一个非常耗时的过程。我们能否使用我们正在尝试构建的东西(足够元?)来自动化这个过程;也就是说,我们应该自动化机器学习吗?这正是这一切开始的地方——有人试图使用 3D 打印机打印一个 3D 打印机。
典型的数据科学工作流程从业务问题(希望是!)开始,它被用来验证一个假设或者发现现有数据中的新模式。这需要数据;需要清理和预处理数据,这需要花费大量的时间——几乎占你总时间的 80%;以及“数据处理”或整理,这包括清理、去重、异常分析及去除、转换、映射、结构化和丰富化。本质上,我们正在驯服这种难以驾驭的充满活力的原始真实世界数据,并将其放入一个驯服的、期望的格式,以便进行分析和建模,从而从中获得有意义的见解。
接下来,我们必须选择和设计特征,这意味着要弄清楚哪些特征是有用的,然后与SMEs(行业专家)一起头脑风暴并工作,以确定这些特征的重要性和有效性。验证这些特征如何与你的模型协同工作,从技术和商业角度评估其适用性,并在必要时改进这些特征,也是特征工程过程中的一个关键部分。将反馈循环给行业专家通常非常重要,尽管它是特征工程流程中强调最少的部分。模型的透明度源于清晰的特征——如果诸如种族或性别等特征能提高你的贷款还款倾向模型的准确性,这并不意味着使用它们是一个好主意。实际上,行业专家会告诉你——即使你的意识没有告诉你——这是一个糟糕的主意,你应该寻找更有意义且不那么具有性别歧视、种族歧视和排外主义倾向的特征。我们将在第十章“企业中的 AutoML”中进一步讨论这个问题,当我们讨论实施时。
尽管选择“模型家族”的任务听起来像一档真人秀,但这正是数据科学家和机器学习工程师日常工作中的一部分。模型选择是选择最能描述现有数据的正确模型的任务。这涉及到从一组候选模型中选择一个机器学习模型。自动机器学习可以在这方面为你提供帮助。
超参数
你会经常听到超参数这个词,所以让我们确保你理解它们是什么。
每个模型都有其自身的内部和外部参数。内部参数(也称为模型参数,或简称参数)是模型本身的内在属性,例如其权重和预测矩阵,而外部参数或超参数则是“在模型之外”的,例如学习率和其迭代次数。一个直观的例子可以来自 k-means,这是一个广为人知的简单无监督聚类算法。
k-means 中的k代表所需的聚类数量,epochs(发音为 epics,就像Doctor Who是一部史诗般的电视剧!)用于指定在训练数据上进行的遍历次数。这两个都是超参数的例子——也就是说,不是模型本身的内在参数。同样,训练神经网络的学习率、支持向量机的 C 和 sigma、树的数量或深度、矩阵分解中的潜在因素以及深度神经网络中的隐藏层数量都是超参数的例子。
选择正确的超参数被称为调整你的仪器,这是魔法发生的地方。在机器学习部落传说中,这些难以捉摸的数字被吹捧为“麻烦参数”,以至于诸如“调整更像是一门艺术而不是科学”和“调整模型就像黑魔法一样”这样的谚语往往会阻碍行业新手的进步。自动化机器学习正是通过帮助你选择正确的超参数来改变这种看法;更多内容将在后面介绍。自动化机器学习使公民数据科学家能够构建、训练和部署机器学习模型,从而可能颠覆现状。
重要提示
有些人认为“公民数据科学家”这个术语是对非专家的委婉说法,但中小企业和那些对分析感兴趣的人是一些最重要的人——不要让任何人告诉你相反的话。
总之,从构建正确的模型集合到数据预处理,选择正确的特征和模型家族,选择和优化模型超参数,以及评估结果,自动化机器学习提供了算法解决方案,可以编程地解决这些挑战。
自动化机器学习的需求
在撰写本文时,Open AI 的 GPT-3 模型刚刚宣布,它拥有令人难以置信的 1750 亿个参数。由于这种不断增长的模型复杂性,包括大数据和指数级增加的特征数量,我们现在不仅需要能够调整这些参数,还需要有复杂且可重复的程序来调整这些传说中的旋钮,以便进行调整。这种复杂性使得公民数据科学家、业务领域专家和领域专家难以接触——这听起来像是职业保障,但对商业来说并不好,也不利于该领域的长期成功。
此外,这不仅仅关乎超参数,随着模型复杂性的增加,整个流程和结果的再现性变得越来越困难,这限制了人工智能的民主化。
数据科学的民主化
令所有人都不感到意外的是,数据科学家需求量很大!正如 2018 年 8 月的 LinkedIn 工作力报告发现,美国有超过 151,000 个数据科学家职位空缺(economicgraph.linkedin.com/resources/linkedin-workforce-report-august-2018)。由于供需之间的这种差异,AI 民主化的概念,即使那些没有在数学、统计学、计算机科学和相关定量领域接受过正式培训的人能够设计、开发和使用预测模型,已经变得相当流行。关于小型企业、领域专家、业务高管或项目经理是否能够有效地作为公民数据科学家工作,双方都有争论——我认为这是一个抽象层的争论。为了使企业能够及时获得有意义的可操作见解,没有其他方法,只能加速从原始数据到见解,再到行动的过程。对于在分析前线服务过的人来说,这一点非常明显。这意味着不会让任何公民数据科学家掉队。
就像免责声明和警告一样,就像其他所有事情一样,自动化机器学习并不是传说中的银弹。然而,用于模型选择和超参数优化的自动化方法承诺能够使非专家和公民数据科学家能够训练、测试和部署高质量的机器学习模型。自动化机器学习的工具正在形成,希望这个差距会缩小,从而允许更多的人参与。现在,让我们以神话破坏者的风格回顾一下围绕自动化机器学习的神话,并对其进行驳斥!
澄清自动化机器学习神话
就像登月一样,当涉及到自动化机器学习时,围绕它有许多阴谋论和神话。让我们来看看一些已经被揭穿的例子。
神话 #1 – 数据科学家的终结
围绕自动化机器学习最常问的问题之一是,“自动化机器学习会杀死数据科学家的工作吗?”
简短的回答是,不会很快——而长篇的回答,一如既往,更加复杂和乏味。
如我们之前讨论的,数据科学生命周期有几个动态部分,其中领域专业知识和主题见解至关重要。数据科学家与业务合作,建立假设,分析结果,并决定可能产生业务影响的任何可操作见解。在数据科学中自动化日常和重复性任务,并不会减少发现见解的认知挑战性任务。实际上,它反而让数据科学家有更多时间了解底层业务。大量现实世界的数据科学应用需要专门的人类监督,以及领域专家的持续关注,以确保这些见解产生的细粒度行动反映预期的结果。
提出的一种方法,《自动机器学习(AutoML)的人机协作视角:里程碑与未来道路》,由*Doris Jung-Lin Lee 等人提出,建立在保持人类在循环中的概念之上。人机协作(HITL)建议在数据科学工作流程中存在三个不同级别的自动化:用户驱动、巡航控制和自动驾驶。随着你通过成熟曲线并增加特定模型的信心,用户驱动的流程将转移到巡航控制,最终达到自动驾驶阶段。通过构建人才库,利用不同领域的专业知识,自动机器学习可以通过参与人类来帮助数据科学生命周期的多个阶段。
误区#2——自动机器学习只能解决玩具问题
这通常是自动机器学习(AutoML)怀疑论者的一个常见论点——它只能用于解决数据科学中定义明确、可控的玩具问题,并且对于任何现实世界场景都不太适用。
事实恰恰相反——但我认为这种混淆源于一个错误的假设,即我们可以简单地拿一个数据集,扔给一个自动机器学习模型,然后我们就能得到有意义的见解。如果我们相信围绕自动机器学习的炒作,那么它应该能够查看混乱的数据,进行神奇的清理,找出所有重要的特征(包括目标变量),找到正确的模型,调整其超参数,然后——它就构建了一个神奇的流水线!
虽然当大声说出来时这听起来确实很荒谬,但这正是你在精心制作的自动机器学习产品演示中看到的情况。然后,还有炒作周期,它对自动机器学习提供的真实价值产生了相反的削弱效果。推动自动机器学习的技术方法是稳健的,将这些理论和技巧付诸实践所投入的学术严谨性,就像人工智能和机器学习的任何其他领域一样。
在未来的章节中,我们将探讨几个从自动化机器学习中受益的超级规模平台示例,包括但不限于——Google Cloud Platform、AWS 和 Azure。这些证词使我们相信,现实世界的自动化机器学习不仅限于在 Kaggle 锦标赛中提高准确率,而且有望在行业中产生重大影响。
自动化机器学习生态系统
几乎无需指出自动化机器学习是一个快速发展的领域;它远未实现商品化——现有的框架正在不断进化,新的产品和服务平台正在成为主流。在接下来的章节中,我们将详细讨论其中一些框架和库。现在,我们将提供一个广度优先的介绍,让您在深入探讨之前熟悉自动化机器学习生态系统。
开源平台和工具
在本节中,我们将简要回顾一些可用的开源自动化机器学习平台和工具。我们将在第三章“使用开源工具和库进行自动化机器学习”中深入探讨这些平台。
Microsoft NNI
Microsoft 神经网络智能(NNI)是一个开源平台,针对任何自动化机器学习生命周期的三个关键领域——自动化特征工程、架构搜索(也称为神经架构搜索或NAS)和超参数调整(HPI)。该工具包还提供模型压缩功能和通过KubeFlow、Azure ML、DL Workspace(DLTS)和Kubernetes在 AWS 上的操作化。
该工具包可在 GitHub 上下载:github.com/microsoft/nni。
auto-sklearn
Scikit-learn(也称为sklearn)是一个流行的 Python 开发机器学习库。作为这个生态系统的一部分,基于Feurer 等人的高效且鲁棒的自动化机器学习,auto-sklearn是一个自动化机器学习工具包,使用贝叶斯优化、元学习和集成构建进行算法选择和超参数调整。
该工具包可在 GitHub 上下载:github.com/automl/auto-sklearn。
Auto-Weka
Weka,即Waikato 环境知识分析,是一个开源的机器学习库,提供了一系列用于数据分析和预测建模的可视化工具和算法。Auto-Weka 与auto-sklearn类似,但建立在 Weka 之上,并实现了论文中描述的模型选择、超参数优化等方法。
开发者描述 Auto-WEKA 超越了仅选择学习算法并独立设置其超参数的做法。相反,它实现了一种完全自动化的方法。作者的意图是让 Auto-WEKA“帮助非专家用户更有效地识别机器学习算法”——即中小企业民主化——通过“适合其应用的超参数设置”。
工具包可在 GitHub 上下载:github.com/automl/autoweka.
Auto-Keras
Keras 是最广泛使用的深度学习框架之一,是 TensorFlow 2.0 生态系统的重要组成部分。基于 Jin 等人论文的Auto-Keras提出,它是一种“通过网络形态实现高效神经架构搜索的新方法,并启用贝叶斯优化”。这有助于神经架构搜索“通过设计一个神经网络内核和算法来优化树结构空间中的获取函数”。Auto-Keras 是通过贝叶斯优化实现这种深度学习架构搜索的实现。
工具包可在 GitHub 上下载:github.com/jhfjhfj1/autokeras.
TPOT
基于树的流水线优化工具,简称TPOT(一个不错的缩写,对吧!),是宾夕法尼亚大学计算遗传学实验室的产品。TPOT 是一个用 Python 编写的自动机器学习工具。它通过遗传编程帮助构建和优化机器学习流水线。建立在 scikit-learn 之上,TPOT 通过“探索成千上万可能的流水线以找到最佳方案”来帮助自动化特征选择、预处理、构建、模型选择和参数优化。它只是众多学习曲线较小的工具包之一。
工具包可在 GitHub 上下载:github.com/EpistasisLab/tpot.
Ludwig – 一个无需代码的 AutoML 工具箱
Uber 的自动机器学习工具 Ludwig 是一个开源的深度学习工具箱,用于实验、测试和训练机器学习模型。建立在 TensorFlow 之上,Ludwig 使用户能够创建模型基线和执行具有不同网络架构和模型的自动机器学习风格的实验。在其最新版本(撰写本文时),Ludwig现在与CometML集成并支持BERT文本编码器。
工具包可在 GitHub 上下载:github.com/uber/ludwig.
AutoGluon – 一个用于深度学习的 AutoML 工具包
从 AWS Labs 出发,考虑到机器学习的民主化目标,AutoGluon 被开发出来,旨在实现“易于使用且易于扩展的 AutoML,专注于深度学习和涵盖图像、文本或表格数据的实际应用”。AutoGluon 是 AWS 自动化机器学习策略的重要组成部分,使初级和经验丰富的数据科学家都能轻松构建深度学习模型和端到端解决方案。像其他自动化机器学习工具包一样,AutoGluon 提供网络架构搜索、模型选择和自定义模型改进。
工具包可在 GitHub 上下载:github.com/awslabs/autogluon。
Featuretools
Featuretools 是一个优秀的 Python 框架,通过深度特征合成帮助进行自动化特征工程。由于特征工程具有非常细微的本质,它是一个难题。然而,这个开源工具包,凭借其出色的时间戳处理和可重用特征原语,提供了一个出色的框架,您可以使用它来构建和提取特征组合,并查看它们的影响。
工具包可在 GitHub 上下载:github.com/FeatureLabs/featuretools/。
H2O AutoML
H2O 的 AutoML 提供了 H2O 商业产品的开源版本,具有 R、Python 和 Scala 的 API。这是一个开源的、分布式(多核和多节点)的自动化机器学习算法实现,支持通过网格搜索和随机搜索的组合进行基本数据准备。
工具包可在 GitHub 上下载:github.com/h2oai/h2o-3。
商业工具和平台
现在,让我们来了解一下用于自动化机器学习的商业工具和平台。
DataRobot
DataRobot 是一个专有平台,用于自动化机器学习。作为自动化机器学习领域的领导者之一,Data Robot 声称要“自动化构建、部署和维护大规模 AI 的端到端流程”。Data Robot 的模型库包含开源以及专有算法和方法,面向数据科学家,侧重于商业成果。Data Robot 的产品既适用于云部署也适用于本地部署。
平台可通过以下链接访问:www.datarobot.com/platform/。
Google Cloud AutoML
集成在Google Cloud Compute 平台中,Google Cloud AutoML 服务旨在通过最小的工作量和机器学习专业知识帮助训练高质量的定制机器学习模型。此服务提供了 AutoML Vision、AutoML Video Intelligence、AutoML Natural Language、AutoML Translation 以及 AutoML Tables 用于结构化数据分析。我们将在本书的第八章“使用 Google Cloud Platform 进行机器学习”和第九章“使用 GCP Cloud AutoML 进行自动化机器学习”中更详细地讨论这一 Google 服务。
Google Cloud AutoML 可通过cloud.google.com/automl访问。
Amazon SageMaker Autopilot
AWS 提供了围绕人工智能和机器学习的一系列功能。SageMaker Autopilot 是这些服务之一,作为 AWS 生态系统的一部分,它有助于“自动构建、训练和调整模型”。SageMaker Autopilot提供了一个端到端的自动化机器学习生命周期,包括自动特征工程、模型和算法选择、模型调整、部署以及基于性能的排名。我们将在第六章“使用 Amazon Web Services 进行机器学习”和第七章“使用 Amazon SageMaker Autopilot 进行自动化机器学习”中讨论 AWS SageMaker Autopilot。
Amazon SageMaker Autopilot 可通过aws.amazon.com/sagemaker/autopilot/访问。
Azure Automated ML
Microsoft Azure 提供了自动化机器学习功能,以帮助数据科学家快速且大规模地构建机器学习模型。该平台提供了自动特征工程功能,例如缺失值填充、转换和编码、删除高基数和无方差特征。Azure 的自动化机器学习还支持时间序列预测、算法选择、超参数调整、控制模型偏差的约束以及基于性能的排行榜。我们将在第四章“Azure 机器学习入门”和第五章“使用 Microsoft Azure 进行自动化机器学习”中讨论 Azure ML 和 AutoML 服务。
Azure 的自动化机器学习服务可通过azure.microsoft.com/en-us/services/machine-learning/automatedml/访问。
H2O Driverless AI
H2O 的开源产品在开源平台和书籍部分已有讨论。H2O Driverless AI 的商业产品是一个自动化的机器学习平台,它解决了特征工程、架构搜索和管道生成等方面的需求。"自带食谱"功能独特(尽管现在其他供应商也在采用它),用于集成自定义算法。该商业产品具有广泛的功能和丰富的用户界面,使数据科学家能够快速上手。
H2O Driverless AI 可通过www.h2o.ai/products/h2o-driverless-ai/访问。
该领域其他值得注意的框架和工具包括Autoxgboost、RapidMiner Auto Model、BigML、MLJar、MLBox、DATAIKU和Salesforce Einstein(由 Transmogrif AI 提供动力)。它们工具包的链接可以在本书的附录中找到。以下表格来自 Mark Lin 的 Awesome AutoML 仓库,概述了一些最重要的自动化机器学习工具包及其对应链接:

](https://github.com/OpenDocCN/freelearn-ml-zh/raw/master/docs/auto-ml/img/Figure_1.3_B16890.jpg)
图 1.3 – 由 Mark Lin 的 Awesome-AutoML-Papers 提供的自动化机器学习项目
分类类型列指定了库是否支持网络架构搜索(NAS)、超参数优化(HPO)和自动化特征工程(AutoFE)。
自动化机器学习的未来
随着行业在自动化机器学习领域的重大投资,它有望成为我们企业数据科学工作流程的重要组成部分,如果它还不是的话。作为一位宝贵的助手,这位学徒将帮助数据科学家和知识工作者专注于业务问题,并处理任何难以驾驭和琐碎的事情。尽管当前的关注主要集中在自动化特征工程、架构搜索和超参数优化上,但我们还将看到元学习技术将被引入其他领域以帮助自动化这一自动化过程。
由于对 AI 和 ML 民主化的需求不断增加,我们将看到自动化机器学习在行业中的普及——所有主要工具和超大规模平台都将它作为其机器学习产品的一个固有部分提供。这一代配备自动化机器学习工具的新一代将使我们能够执行数据准备、领域定制特征工程、模型选择和反事实分析、实施、可解释性、监控以及创建反馈循环。这将使我们更容易关注业务中的重点,包括业务洞察和影响。
自动化机器学习的挑战和限制
正如我们之前提到的,数据科学家不会被取代,自动化机器学习也不是一个杀手级应用——至少目前不是。随着工具集及其功能的持续变化,数据科学家的工作也将随之演变。
这种情况的原因有两个。首先,自动化机器学习并没有自动化数据科学作为一个学科。它确实可以节省时间,用于执行自动化特征工程、架构搜索、超参数优化或并行运行多个实验。然而,数据科学生命周期中还有许多其他重要部分无法轻易自动化,这就是当前自动化机器学习的状态。
第二个关键原因是,数据科学家这个角色并非同质化的——与之相关的技能和责任在各个行业和组织中都有所不同。通过自动化机器学习来民主化数据科学,所谓的初级数据科学家将获得自动化特征工程能力的帮助,这将加快他们的数据处理和整理实践。同时,高级工程师将有更多时间专注于通过设计更好的关键绩效指标(KPI)指标和提升模型性能来改善业务成果。正如你所看到的,这将帮助所有层次的数据科学从业者熟悉业务领域并探索任何跨领域的关注点。高级数据科学家还有责任监控模型和数据质量以及漂移,以及维护版本控制、可审计性、治理、血缘关系和其他MLOps(机器学习运营)的跨领域关注点。
使模型的可解释性和透明度得到实现,以解决任何潜在的偏见,这也是全球监管行业的一个关键组成部分。由于其高度主观性,在当前的工具集中自动处理这一问题的功能有限;这就是一个具有社会责任感的数据科学家可以提供巨大价值以阻止算法偏见持续的地方。
企业入门指南
恭喜!你几乎完成了第一章,没有打瞌睡——真棒!现在,你一定在想:这个自动化机器学习听起来很酷,但我如何在公司中使用它呢?以下是一些提示。
首先,阅读这本书的其余部分,熟悉概念、技术、工具和平台。了解这个领域并认识到自动化机器学习是你的数据科学工具箱中的一个工具——它不会取代你的数据科学家。
其次,在处理分析时,将自动化机器学习(ML)作为企业内部的一个民主化工具。为你的团队制定一个培训计划,让他们熟悉这些工具,提供指导,并规划数据科学工作流程自动化的路径。
最后,由于特征集的变动很大,在承诺采用企业框架之前,先从一个较小的起点开始,可能是一个开源栈,这样可以帮助你了解自己的自动化需求,并给你时间进行比较购物。
摘要
在本章中,我们介绍了机器学习开发生命周期,并定义了自动机器学习及其工作原理。在为自动机器学习的需求辩护时,我们讨论了数据科学的民主化,驳斥了围绕自动机器学习的神话,并详细介绍了自动机器学习生态系统。在这里,我们回顾了开源工具,然后探讨了商业领域。最后,我们讨论了自动机器学习的未来,对其挑战和局限性进行了评论,并最终提供了一些在企业中开始的方法指南。
在下一章中,我们将深入了解使自动机器学习成为可能的技术、技术和工具。我们希望这一章已经向您介绍了自动机器学习的基础知识,并且您现在准备好更深入地探讨我们讨论的主题。
进一步阅读
关于本章所涉及主题的更多信息,请参阅以下推荐书籍和链接:
-
*《自动机器学习:方法、系统、挑战》作者:Frank Hutter(编辑)、Lars Kotthoff(编辑)和 Joaquin Vanschoren(编辑)
-
*《机器学习挑战的 Springer 系列》
-
《动手实践自动机器学习:使用 AutoML 和 Python 构建自动机器学习系统的入门指南》作者:Sibanjan Das 和 Umit Mert Cakmak,Packt*出版社
-
Auto XGBoost:
github.com/ja-thomas/autoxgboost -
RapidMiner:
rapidminer.com/products/auto-model/ -
BigML:
bigml.com/ -
MLJar:
mljar.com/ -
DataIKU:
www.dataiku.com/ -
《令人惊叹的 AutoML 论文》作者:Mark Lin:
github.com/hibayesian/awesome-automl-papers -
Auto-WEKA 2.0:在 WEKA 中进行自动模型选择和超参数优化:
www.cs.ubc.ca/labs/beta/Projects/autoweka/ -
Auto-Keras:一个高效的神经网络架构搜索系统:
arxiv.org/pdf/1806.10282.pdf -
《关于 AutoML 的人机交互视角:里程碑和未来之路》作者:Doris Jung-Lin Lee 等:dorisjunglinlee.com/files/MILE.pdf
-
《什么是数据清洗以及为什么它需要这么长时间?》作者:Mike Thurber:
www.elderresearch.com/blog/what-is-data-wrangling -
高效且鲁棒的自动化机器学习:
papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning.pdf -
领英劳动力报告:
economicgraph.linkedin.com/resources/linkedin-workforce-report-august-2018
第二章: 自动化机器学习、算法和技术
"机器智能是人类将永远需要的最后一种发明。"
– 尼克·博斯特罗姆
"人工智能的关键始终是表示。"
– 杰夫·哈克
"到目前为止,人工智能最大的危险是人们过早地得出他们理解它的结论。"
– 埃利泽·尤德科夫斯基
自动化自动化听起来像是一种美好的禅宗元概念,但学会学习并非没有挑战。在上章中,我们介绍了机器学习(ML)的开发生命周期,并简要概述了它是如何工作的。
在本章中,我们将探讨使自动化机器学习成为可能的技术、技术和工具。在这里,您将了解AutoML实际上是如何工作的,自动化特征工程、自动化模型和超参数调整以及自动化深度学习的算法和技术。您还将了解元学习和最先进的技术,包括贝叶斯优化、强化学习、进化算法和基于梯度的方法。
在本章中,我们将涵盖以下主题:
-
自动化机器学习 – 打开引擎盖
-
自动化特征工程
-
超参数优化
-
神经架构搜索
自动化机器学习 – 打开引擎盖
简单来说,典型的机器学习(ML)流程包括数据清洗、特征选择、预处理、模型开发、部署和消费步骤,如下所示的工作流程:

图 2.1 – 机器学习生命周期
自动化机器学习的目标是简化并民主化这个流程的步骤,使其对公民数据科学家可访问。最初,自动化机器学习社区的关键焦点是模型选择和超参数调整,即找到最适合工作的最佳性能模型及其对应的最优参数。然而,近年来,它已经扩展到包括以下所示图中的整个流程:

图 2.2 – Waring 等人提出的简化 AutoML 流程
元学习概念,即学习如何学习,是自动机器学习领域的主题。元学习技术通过观察学习算法、相似任务和先前模型来学习最佳超参数和架构。学习任务相似性、主动测试、代理模型迁移、贝叶斯优化和堆叠等技术用于学习这些元特征,以基于相似任务改进自动机器学习流程;本质上,这是一个热启动。自动机器学习流程功能并不真正在部署时结束——需要一个迭代反馈循环来监控预测的漂移和一致性。这个反馈循环确保预测结果的分布与业务指标相匹配,并且在硬件资源消耗方面存在异常。从运营的角度来看,错误和警告的日志,包括自定义错误日志,以自动化的方式进行审计和监控。所有这些最佳实践也适用于训练周期,其中概念漂移、模型漂移或数据漂移可能会对你的预测造成破坏;请注意“买者自慎”的警告。
现在,让我们探索一些你将在本章和未来章节中看到的自动机器学习的关键术语。
自动机器学习术语的分类
对于自动机器学习的新手来说,最大的挑战之一是熟悉行业术语——大量新术语或重叠术语可能会让探索自动机器学习领域的人感到不知所措并失去动力。因此,在这本书中,我们尽量使内容简单化,并在尽可能不失去深度的情况下进行概括。你将在本书以及其他自动机器学习文献中反复看到,重点放在三个关键领域——即自动特征工程、自动超参数调整和自动神经网络架构搜索方法。
自动特征工程进一步分为特征提取、选择和生成或构建。自动超参数调整,即学习特定模型的超参数,有时与学习模型本身捆绑在一起,因此成为更大神经网络架构搜索领域的一部分。这种方法被称为全模型选择(FMS)或结合算法选择和超参数(CASH)优化问题。神经网络架构搜索也称为自动深度学习(缩写为AutoDL),或简单地称为架构搜索。以下图表概述了数据准备、特征工程、模型生成和评估,以及它们的子类别,如何成为更大的机器学习流程的一部分:
![图 2.3 – 通过最先进的 AutoML 调查的自动机器学习流程,He 等人,2019 年]

图 2.3 – 通过最先进的 AutoML 调查的自动机器学习流程,He 等人,2019 年
用于执行自动化机器学习这三个关键原则的技术有一些共同之处。贝叶斯优化、强化学习、进化算法、无梯度方法和基于梯度的方法几乎在所有这些不同的领域中都被使用,具体变化如以下图表所示:

图 2.4 – 自动化机器学习技术
因此,如果您提到在自动化特征工程中使用遗传编程,而有人认为进化分层机器学习系统是一个超参数优化算法,您可能会得到困惑的表情。这是因为您可以将同一类技术,如强化学习、进化算法、梯度下降或随机搜索,应用于自动化机器学习管道的不同部分,并且效果很好。
我们希望图 2.2和图 2.4之间提供的信息能帮助您理解机器学习管道、自动化机器学习的显著特性和用于实现这三个关键特征特性的技术/算法之间的关系。在本章中构建的思维方式将大有裨益,尤其是在您遇到营销人员创造的荒谬术语时(是的,我指的是你,Todd!),例如基于深度学习的超参数优化产品,使用比特币和 Hyperledger。
下一个步骤是自动化特征工程,这是自动化机器学习管道的第一个支柱。
自动化特征工程
特征工程是从数据集中提取和选择正确属性的艺术和科学。它是一门艺术,因为它不仅需要专业知识,还需要领域知识,以及对伦理和社会问题的理解。从科学的角度来看,特征的重要性与其对结果的影响高度相关。预测模型中的特征重要性衡量一个特征对目标的影响程度,因此在事后更容易对最具影响力的属性进行排序。以下图表解释了自动化特征生成的迭代过程,通过生成候选特征,对它们进行排序,然后选择特定的特征成为最终特征集的一部分:


图 2.5 – Zoller 等人关于自动化机器学习框架的基准和调查中的迭代特征生成过程,2020
从数据集中提取特征需要基于具有多个可能值的列生成分类二元特征,对特征进行缩放,消除高度相关的特征,添加特征交互,替换周期性特征,以及处理数据/时间场景。例如,日期字段会产生多个特征,如年份、月份、日期、季节、周末/工作日、假日和入学期间。一旦提取,从数据集中选择特征需要移除稀疏和低方差特征,以及应用降维技术,如主成分分析(PCA),以使特征数量可管理。我们现在将研究超参数优化,这曾经是自动化机器学习的同义词,并且仍然是该领域的一个基本实体。
超参数优化
由于其普遍性和易于构建,超参数优化有时被认为与自动化机器学习同义。根据搜索空间,如果你包括特征、超参数优化(也称为超参数调整和超参数学习),则被称为自动化管道学习。所有这些术语对于寻找模型正确参数这样简单的事情来说可能有点令人畏惧,但毕业生必须发表论文,我就不赘述了。
在深入研究这些结构时,有几个关于超参数的关键点需要注意。默认参数没有经过优化是众所周知的事实。Olson 等人在其 NIH 论文中展示了默认参数几乎总是糟糕的选择。Olson 提到,“调整参数通常可以提高算法的准确率 3-5%,具体取决于算法……在某些情况下,参数调整导致了交叉验证准确率的 50%提升。”这一观察结果可以在 Olson 等人的文章《交叉验证准确率提升 – 将机器学习应用于生物信息学问题的数据驱动建议》中找到:www.ncbi.nlm.nih.gov/pmc/articles/PMC5890912/.
第二个重要点是,对这些模型的比较分析会导致更高的准确性;正如你将在接下来的章节中看到的,整个流程(模型、自动特征、超参数)都是获得最佳准确度权衡的关键。在 Olson 等人撰写的《将机器学习应用于生物信息学问题的数据驱动建议》一书中,“算法比较分析的热图”部分([www.ncbi.nlm.nih.gov/pmc/articles/PMC5890912/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5890912/))展示了 Olson 等人进行的实验,其中使用了 165 个数据集与多个不同的算法进行比较,以确定最佳准确性,并按性能从上到下排名。从这个实验中得出的结论是,没有单个算法可以在所有数据集上被认为是表现最佳的。因此,在解决这些数据科学问题时,确实有必要考虑不同的机器学习算法。
让我们快速回顾一下超参数是什么。每个模型都有其内部和外部参数。内部参数或模型参数是模型本身的固有属性,例如权重或预测矩阵,而外部参数也称为超参数,是“模型外部”的;例如学习率和迭代次数。例如,在 k-means 中,k 代表所需的聚类数量,epochs 用于指定在训练数据上进行的遍历次数。这两个都是超参数的例子,即不是模型本身固有属性的参数。同样,训练神经网络的学习率,支持向量机(SVMs)中的 C 和 sigma,树的数量或深度,矩阵分解中的潜在因素,深度神经网络中的隐藏层数量等等,都是超参数的例子。
为了找到正确的超参数,有几种方法,但首先让我们看看有哪些不同类型的超参数。超参数可以是连续的,例如:
-
模型的学习率
-
隐藏层的数量
-
迭代次数
-
批处理大小
超参数也可以是分类的,例如操作符的类型、激活函数或算法的选择。它们也可以是条件性的,例如,如果使用了卷积层,则选择卷积核大小;或者在 SVM 中选择了径向基函数(RBF)核时,选择核宽度。由于存在多种类型的超参数,因此也有各种超参数优化技术。网格搜索、随机搜索、贝叶斯优化、进化技术、多臂老丨虎丨机方法和基于梯度的技术都被用于超参数优化:

图 2.6 – 网格和随机搜索布局。伯格斯特拉和本吉奥 – JMLR 2012
超参数调整的最简单技术是手动调整、网格搜索和随机搜索。正如其名所示,手动调整基于直觉和基于以往经验的猜测。网格搜索和随机搜索略有不同,因为你可以选择一组超参数,要么为每个组合(网格),要么随机选择并迭代以保留表现最好的那些。然而,正如你可以想象的那样,随着搜索空间的扩大,这可能会迅速变得计算上难以控制。
另一种突出的技术是贝叶斯优化,其中你从一个随机的超参数组合开始,并使用它来构建一个代理模型。然后你使用这个代理模型来预测其他超参数组合将如何工作。作为一个基本原则,贝叶斯优化通过使用过去的表现来选择未来的值,构建一个概率模型以最小化目标函数,这正是贝叶斯优化之所以称为贝叶斯的原因。在贝叶斯宇宙中,你的观察不如你的先验信念重要。
贝叶斯优化的贪婪性质由探索与利用的权衡(预期改进)、分配固定时间评估、设置阈值等来控制。存在这些代理模型的变体,例如随机森林代理和梯度提升代理,它们使用上述技术来最小化代理函数:


Figure 2.7 – A taxonomy of hyperparameter optimization techniques, Elshawi et al., 2019
基于种群的方法类(也称为元启发式技术或从样本中进行优化的方法)也被广泛用于执行超参数调整,其中遗传编程(进化算法)是最受欢迎的,超参数在此过程中被添加、变异、选择、交叉和调整。当配置空间在每次迭代中更新时,粒子群会朝着最佳个体配置移动。另一方面,进化算法通过维护一个配置空间,并通过进行较小的更改和组合个体解决方案来构建新一代的超参数配置来工作。现在让我们探索自动机器学习难题的最后一部分——神经架构搜索。
神经架构搜索
选择模型可能具有挑战性。在回归的情况下,即预测数值,你有线性回归、决策树、随机森林、lasso 与岭回归、k-means 弹性网络、梯度提升方法(包括XGBoost)和 SVMs 等多种选择,等等。
对于分类,换句话说,通过类别分离事物,你可以使用逻辑回归、随机森林、AdaBoost、梯度提升和基于SVM的分类器。
神经架构具有搜索空间的概念,这定义了原则上可以使用哪些架构。然后,必须定义一个搜索策略,概述如何通过探索-利用权衡来探索。最后,必须有一个性能估计策略,用于估计候选架构的性能。这包括架构的训练和验证。
有几种技术可以执行搜索空间的探索。最常见的方法包括链式结构神经网络、多分支网络、基于单元格的搜索以及使用现有架构的优化方法。搜索策略包括随机搜索、进化方法、贝叶斯优化、强化学习和无梯度与基于梯度的优化方法,如可微分架构搜索(DARTS)。使用蒙特卡洛树搜索或爬山来分层探索架构搜索空间,这种方法很受欢迎,因为它有助于通过快速接近性能更好的架构来发现高质量的架构。这些都是“免费”梯度方法。在基于梯度的方法中,连续搜索空间的基本假设促进了 DARTS,与传统的强化学习或进化搜索方法不同,DARTS 使用梯度下降来探索搜索空间。神经架构搜索的可视分类学可以在以下图表中看到:
图 2.8 – 神经架构搜索技术分类学,Elshawi 等人,2019
![Figure 2.8 – A taxonomy of neural architecture search techniques, Elshawi et al., 2019]
图 2.8 – 神经架构搜索技术分类学,Elshawi 等人,2019
为了评估哪种方法最适合特定的数据集,性能估计策略包括从简单到更复杂(尽管是优化过的)的方法。在估计策略中最简单的是仅训练候选架构,并在测试数据上评估其性能——如果效果良好,那就太好了。否则,就将其丢弃并尝试不同的架构组合。随着候选架构数量的增加,这种方法可能会迅速变得资源密集,因此引入了低保真策略,如缩短训练时间、子集训练和每层更少的过滤器,这些方法并不那么全面。换句话说,早期停止,即通过外推学习曲线来估计架构的性能,也是这种近似的有用优化。将训练好的神经架构进行形态变化,以及将所有架构视为超图子图的单一搜索,也是有效的单次架构搜索方法。
已有几项关于自动化 ML 的调查,这些调查对这些技术提供了深入的概述。具体的技术也有它们自己的出版物,包括阐述良好的基准数据、挑战和成功——所有这些都超出了本手稿的范围。然而,在下一章中,我们将使用利用这些技术的库,这样你将更好地了解它们在实际中的可用性。
摘要
现在,企业内部机器学习的成功在很大程度上取决于能够构建特定业务特征和工作流程的人类 ML 专家。自动化 ML 旨在改变这一点,因为它旨在自动化 ML,以便提供现成的 ML 方法,这些方法可以在没有专业知识的情况下使用。为了理解自动化 ML 是如何工作的,我们需要回顾自动化 ML 的四个基础子领域或支柱:超参数优化;自动化特征工程;神经网络架构搜索;和元学习。
在本章中,我们解释了自动化机器学习(ML)背后的技术、技术和工具,以及它们是如何使自动化 ML 成为可能的。我们希望这一章能让你对自动化 ML 技术有所了解,并且你现在准备好深入到实施阶段。
在下一章中,我们将回顾实现这些算法的开源工具和库,以便获得如何在实际中应用这些概念的手动概述,所以请保持关注。
进一步阅读
关于以下主题的更多信息,请参阅建议的资源链接:
-
自动化 ML:方法、系统、挑战:Frank Hutter(编辑),Lars Kotthoff(编辑),和 Joaquin Vanschoren(编辑)。Springer 机器学习挑战系列
-
动手实践自动化 ML:使用 AutoML 和 Python 构建自动化 ML 系统的入门指南,作者:Sibanjan Das 和 Umit Mert Cakmak,Packt
-
使用强化学习进行神经网络架构搜索:
arxiv.org/pdf/1611.01578.pdf -
学习可迁移的架构以实现可扩展的图像识别:
arxiv.org/pdf/1707.07012.pdf -
渐进式神经网络架构搜索:
arxiv.org/pdf/1712.00559.pdf -
通过参数共享进行高效的神经网络架构搜索:
arxiv.org/pdf/1802.03268.pdf -
通过网络转换进行高效的架构搜索:
arxiv.org/pdf/1707.04873.pdf -
通过拉马克进化进行高效的多目标神经网络架构搜索:
arxiv.org/pdf/1804.09081.pdf -
Auto-Keras:一个高效的神经网络架构搜索系统:
arxiv.org/pdf/1806.10282.pdf -
卷积神经网络织物:
arxiv.org/pdf/1606.02492.pdf -
DARTS:可微架构搜索:
arxiv.org/pdf/1806.09055.pdf -
神经架构优化:
arxiv.org/pdf/1808.07233.pdf -
SMASH:通过超网络进行一次性模型架构搜索:
arxiv.org/pdf/1708.05344.pdf -
DARTS in PyTorch:
github.com/quark0/darts -
使用模拟退火进行超参数调整:
santhoshhari.github.io/2018/05/18/hyperparameter-tuning-using-simulated-annealing.html -
将机器学习应用于生物信息学问题的数据驱动建议:
www.ncbi.nlm.nih.gov/pmc/articles/PMC5890912/
第三章:使用开源工具和库进行自动化机器学习
“个人赋能是开源工作的重要组成部分,因为最终,创新往往来自小型团队,而不是来自大型、结构化的努力。”
– 蒂姆·奥莱利
“在开源领域,我们坚信,要真正做好某件事,你必须让很多人参与进来。”
– 林纳斯·托瓦兹
在上一章中,你了解了自动化机器学习(ML)技术、技术和工具的内部结构。你学习了 AutoML 是如何实际工作的——也就是说,自动化特征工程、自动化模型和超参数调整以及自动化深度学习的算法和技术。你还通过查看它们在自动化 ML 中的应用,探索了贝叶斯优化、强化学习、进化算法以及各种基于梯度的方法。
然而,作为一名动手的工程师,你可能直到通过实际尝试弄脏双手,才能真正理解某个东西,并从中获得满足感。本章将为你提供这样的机会。AutoML 开源软件(OSS)工具和库自动化了从构思、概念化、开发到部署预测模型的全生命周期。从数据准备到模型训练、验证以及部署,这些工具几乎不需要人工干预就能完成所有工作。
在本章中,我们将回顾主要的开源工具,包括TPOT、AutoKeras、auto-sklearn、Featuretools和Microsoft NNI,以帮助你了解每个库中使用的差异化价值主张和方法。
在本章中,我们将涵盖以下主题:
-
自动化机器学习的开源生态系统
-
介绍 TPOT
-
介绍 Featuretools
-
介绍 Microsoft NNI
-
介绍 auto-sklearn
-
介绍 AutoKeras
让我们开始吧!
技术要求
本章的技术要求如下:
- TPOT 安装:github.com/EpistasisLab/tpot
)
-
Featuretools 安装:
pypi.org/project/featuretools/ -
Microsoft NNI 安装:
github.com/microsoft/nni -
auto-sklearn 安装:
automl.github.io/auto-sklearn/master/installation.html -
AutoKeras 安装:
autokeras.com/install/ -
MNIST 下载:
www.kaggle.com/c/digit-recognizer
自动化机器学习的开源生态系统
通过回顾自动化机器学习的历史,可以明显看出,在早期,焦点始终集中在超参数优化上。早期的工具,如AutoWeka和HyperoptSkLearn,以及后来的TPOT,最初的重点是使用贝叶斯优化技术来找到模型的最合适的超参数。然而,这一趋势转向左侧,包括模型选择,最终通过包括特征选择、预处理、构建和数据清洗,将整个流程纳入其中。以下表格展示了一些可用的突出自动化机器学习工具,包括TPOT、AutoKeras、auto-sklearn和Featuretools,以及它们的优化技术、机器学习任务和训练框架:

图 3.1 – 自动化机器学习框架的特点
在本章的几个示例中,我们将使用 datasets 包,因为它已经处理了数据加载和预处理MNIST 60,000 个训练示例和 10,000 个测试示例。大多数数据科学家都是机器学习爱好者,并且非常熟悉MNIST数据库,这使得它成为教授如何使用这个库的绝佳候选者:

图 3.2 – 手写数字 MNIST 数据库 – 可视化
前面的图像显示了 MNIST 数据集的外观。该数据集作为所有主要机器学习和深度学习库的一部分提供,可以从 www.kaggle.com/c/digit-recognizer 下载。
介绍 TPOT
基于树的管道优化工具,简称TPOT,是宾夕法尼亚大学计算遗传学实验室的产品。TPOT 是一个用 Python 编写的自动化机器学习工具。它通过遗传编程帮助构建和优化机器学习管道。建立在 scikit-learn 之上,TPOT 通过“探索成千上万的可能管道以找到最佳方案”来自动化特征选择、预处理、构建、模型选择和参数优化过程。它是唯一具有较短学习曲线的工具包之一。
工具包可在 GitHub 上下载:github.com/EpistasisLab/tpot。
为了解释这个框架,让我们从一个最小的工作示例开始。对于这个示例,我们将使用MNIST手写数字数据库:
-
创建一个新的
pip install TPOT。TPOT 可以直接从命令行或通过 Python 代码使用:![图 3.3 – 在 Colab 笔记本上安装 TPOT]()
图 3.3 – 在 Colab 笔记本上安装 TPOT
-
导入
TPOTClassifier,scikit-learn 的datasets包和模型选择库。我们将使用这些库来加载我们将在 TPOT 中用于分类的数据:![图 3.4 – AutoML TPOT 示例 – 导入语句]()
图 3.4 – AutoML TPOT 示例 – 导入语句
-
现在,通过加载
train_test_split方法返回一个包含给定输入的 train-test 分割的列表。在这种情况下,输入是数字数据和数字目标数组。在这里,您可以看到训练大小是 0.75,测试大小是 0.25,这表示标准 75-25 的训练和测试数据分割:![图 3.5 – AutoML TPOT 示例 – 加载数字数据集]()
图 3.5 – AutoML TPOT 示例 – 加载数字数据集
-
在典型场景中,这就是我们选择模型、分配
TPOTClassifier的地方。这个类在参数上相当广泛,如以下截图所示,但我们将只使用三个关键参数;即,verbosity、max_time_mins和population_size:![图 3.6 – AutoML TPOT 示例 – 实例化 TPOTClassifier 对象]()
图 3.6 – AutoML TPOT 示例 – 实例化 TPOTClassifier 对象
关于传递给
Classifier的参数的简要说明 – 将Verbosity设置为2将使 TPOT 在进度条旁边打印信息。max_time_mins参数设置 TPOT 优化管道的分钟数分配,而population_size参数是每一代遗传编程种群中个体的数量。在开始实验时,我们将最大时间设置为仅 1 分钟:
![图 3.7 – AutoML TPOT 示例 – TPOTClassifier 的优化运行]()
](https://github.com/OpenDocCN/freelearn-ml-zh/raw/master/docs/auto-ml/img/B16890_03_07.jpg)
图 3.7 – AutoML TPOT 示例 – TPOTClassifier 的优化运行
您将看到优化进度并不那么理想;它处于 22%,因为在这个世代中只有 40 个个体中的 9 个已被处理。在这种情况下,最佳推荐管道基于
RandomForestClassifier。 -
现在,让我们将其增加到 5 分钟并检查生成的管道。在这个阶段,看起来推荐的分类器是梯度提升分类器。这非常有趣:
![图 3.8 – AutoML TPOT 示例 – 执行 TPOTClassifier]()
.
图 3.8 – AutoML TPOT 示例 – 执行 TPOTClassifier
-
这次,我们将逐渐增加时间到
15分钟,在这种情况下,最佳管道将来自 k-最近邻(KNN)分类器:![图 3.9 – AutoML TPOT 分类器 – 使用 TPOTClassifier 进行拟合以获取预测]()
图 3.9 – AutoML TPOT 分类器 – 使用 TPOTClassifier 进行拟合以获取预测
-
将时间增加到
25分钟并不会改变算法,但其他 超参数(邻居数量)及其准确性有所提高:![图 3.10 – AutoML TPOT 示例 – 运行多代和分数![图片]()
图 3.10 – AutoML TPOT 示例 – 运行多代和分数
-
最后,让我们运行整个小时的实验:![图 3.11 – AutoML TPOT 示例 – TPOT 代数和交叉验证分数
![图片]()
图 3.11 – AutoML TPOT 示例 – TPOT 代数和交叉验证分数
结果最佳管道是使用特征排名和递归特征消除的
KNeighborsClassifier。其他超参数包括max_features和n_estimators,该管道的准确率为0.98666:![图 3.12 – AutoML TPOT 示例 – 最佳管道
![图片]()
图 3.12 – AutoML TPOT 示例 – 最佳管道
这让我想起 – 如果 666 被认为是邪恶的数字,那么 25.8069758011 就是万恶之源。
-
此外,正如你可能观察到的,TPOT 需要运行其 交叉验证(CV)的时间,对于多代,管道发生变化,不仅仅是算法,超参数也发生了演变。还有递减的回报。CV 分数的改进变得越来越小,到了某个点,这些改进几乎不起作用。
现在,您可以通过调用 export 方法从 TPOT 导出实际模型:

图 3.13 – AutoML TPOT 示例 – 探索数字管道
模型导出后,你将能够在 Google Colab 的左侧面板中看到文件,如下面的截图所示:

图 3.14 – AutoML TPOT 示例 – 可视化 TPOT 数字管道
现在我们知道这个管道效果最好,让我们试试看。注意我们不再需要 TPOT,因为我们已经有了“茶”(或在这个情况下是管道):

图 3.15 – AutoML TPOT 示例 – 使用 ExtraTreesClassifier 导出管道
现在我们已经创建了导出的管道,让我们加载数据集。我可以选择从 CSV 文件中读取它,但我可以直接使用 sklearn 数据集来加快速度。此外,我在数组中选择了数字 target [10]),哇 – 预测是正确的:

图 3.16 – AutoML TPOT 示例 – 导出管道的结果
TPOT 是如何做到这一点的?
这个看起来很棒,但你购买这本书的目的并不是仅仅为了学习如何使用 API——你更想了解底层的运作原理。好的,现在我来告诉你:TPOT 通过遗传编程自动化了管道的关键组件;它尝试了不同的方法,正如你所见,最终选择了使用 KNN 作为最佳分类器:
图 3.18 – TPOT – 用于自动化机器学习的基于树的管道优化工具
![图 3.17 – TPOT 管道搜索概述
要在 Colab 中启动 Featuretools,你需要使用 pip 来安装该包。在这个例子中,我们将尝试为波士顿房价数据集创建特征:![图 3.19 – 使用 Featuretools 的 AutoML – 安装 Featuretools
![图 3.18.jpg
图 3.19 – 使用 Featuretools 的 AutoML – 安装 Featuretools
图 3.22 – 使用 Featuretools 的 AutoML – 将数据集加载为 pandas DataFrame
图 3.21 – 使用 Featuretools 的 AutoML – 安装 Featuretools
![图 3.22.jpg
Featuretools 介绍
该工具包可在 GitHub 上下载:github.com/FeatureLabs/featuretools/. 以下步骤将指导你如何安装 Featuretools,以及如何使用该库运行自动机器学习实验。让我们开始吧:
-
在幕后,TPOT 使用遗传编程结构(选择、交叉和变异)来优化转换,这有助于最大化分类精度。以下是 TPOT 提供的操作符列表:
在这个实验中,我们将使用波士顿房价数据集,这是机器学习中一个知名且广泛使用的数据集。以下是数据集的简要描述和元数据:
![图 3.19 – 使用 Featuretools 的 AutoML – 安装 Featuretools Featuretools 是一个优秀的 Python 框架,它通过使用 DFS 帮助自动化特征工程。由于特征工程的性质非常微妙,它是一个难题。然而,这个开源工具包,凭借其强大的时间戳处理和可重用的特征原语,为我们提供了一个合适的框架来构建和提取特征组合及其影响。 图 3.17 – TPOT 管道搜索概述 图 3.20 – 使用 Featuretools 的 AutoML – 波士顿房价数据集 ![图 3.19.jpg1. 波士顿房价数据集是
scikit-learn数据集的一部分,这使得它非常容易导入,如下所示:![图 3.21 – 使用 Featuretools 的 AutoML – 安装 Featuretools ![图 3.17 – TPOT 管道搜索概述 图 3.18 – TPOT – 用于自动化机器学习的基于树的管道优化工具 1. 现在,我们将使用featuretools的深度特征合成(DFS)API 来处理boston数据集:![图 3.22 – 使用 Featuretools 的 AutoML – 将数据集加载为 pandas DataFrame 图 3.20 – 使用 Featuretools 的 AutoML – 波士顿房价数据集 ![图 3.20 – 使用 Featuretools 的 AutoML – 波士顿房价数据集 1. 让我们为 Boston 表创建一个特征工具实体集,然后定义目标条目。在这种情况下,我们只需创建一些新特征;也就是说,现有特征的乘积和总和。一旦Featuretools运行了 DFS,你将拥有所有求和和乘积特征:![图 3.23 – 使用 Featuretools 的 AutoML – DFS 的结果]()
图 3.23 – 使用 Featuretools 的 AutoML – DFS 的结果
特征列表继续:

图 3.24 – 使用 Featuretools 的 AutoML – DFS 的结果 – 继续显示
到目前为止,你可能想知道,如果 DFS 只包含现有特征的求和和乘积,那么进行 DFS 的意义何在?我很高兴你提出了这个问题。将这些派生特征视为突出多个数据点之间的潜在关系——这与求和和乘积无关。例如,你可以通过平均订单求和将多个表链接起来,算法将具有额外的预定义特征来寻找相关性。这是 DFS 提供的非常强大且具有显著性的量化价值主张,通常用于机器学习算法竞赛:

图 3.25 – DFS – 从实体分析特征
Featuretools网站包含一套优秀的演示,用于预测下一次购买、剩余使用寿命、预约未出现、贷款偿还可能性、客户流失、家庭贫困和恶意互联网流量等众多用例:www.featuretools.com/demos/。
介绍 Microsoft NNI
Microsoft 神经网络智能(NNI)是一个开源平台,针对任何自动化机器学习生命周期的三个关键领域——自动化特征工程、架构搜索(也称为神经架构搜索或NAS)和超参数调整(HPI)。该工具包还提供模型压缩功能和部署。NNI 内置了许多超参数调整算法。
NNI 的高级架构图如下:

图 3.26 – Microsoft NNI 高级架构
NNI 内置了几个最先进的超参数优化算法,它们被称为调优器。列表包括TPE、随机搜索、退火、朴素进化、SMAC、Metis Tuner、Batch Tuner、网格搜索、GP Tuner、网络形态、Hyperband、BOHB、PPO Tuner和PBT Tuner。
工具包可在 GitHub 上下载:github.com/microsoft/nni。有关其内置调优器的更多信息,请在此处查看:nni.readthedocs.io/en/latest/builtin_tuner.html。
现在,让我们学习如何安装 Microsoft NNI 以及如何使用此库运行自动机器学习实验。
让我们继续在我们的机器上使用 pip 安装 NNI:

图 3.27 – 使用 Microsoft NNI 的 AutoML – 通过 Anaconda 安装
NNI 提供的最好功能之一是它既有 命令行界面(CLI)又有 Web UI,这样我们就可以查看试验和实验。NNICtl 是用于管理 NNI 应用程序的命令行。您可以在以下屏幕截图中看到实验的选项:

图 3.28 – 使用 Microsoft NNI 的 AutoML – nnictl 命令
如果您不了解 NNI 的工作原理,它可能会有一个学习曲线。您需要熟悉 NNI 的三个主要元素才能使其正常工作。首先,您必须定义搜索空间,您可以在 search_space.json 文件中找到它。您还需要更新模型代码(main.py),使其包含 config.yml),这样您就可以定义调优器和试验(执行模型代码)信息:

图 3.29 – 使用 Microsoft NNI 的 AutoML – 配置和执行文件
作为提醒,搜索空间描述了每个超参数的值范围,并且对于每个试验,从这个空间中选取各种超参数值。在创建超参数调优实验的配置时,我们可以限制试验的最大数量。同时,在创建超参数搜索空间时,我们可以列出在 选择 类型超参数的调优实验中想要尝试的值。
在这个例子中,我们使用了简单的 nnictl create 命令:

图 3.30 – 使用 Microsoft NNI 的 AutoML – 运行实验
您可以使用以下命令了解更多关于实验的信息:

图 3.31 – 使用 Microsoft NNI 的 AutoML – nnictrl 参数
现在,让我们看看 NNI 的秘密武器——它的 UI。NNI UI 可以通过输出控制台显示的 Web UI URL 访问,如 图 3.29 所示。在这里,您可以查看正在运行的实验、其参数和详细信息。例如,在这种情况下,我们只运行了 19 个试验,所以它们运行得很快。然而,没有有意义的结果,例如我们找到的最佳指标(N/A),如下面的截图所示:

图 3.32 – 使用 Microsoft NNI UI 的 AutoML
将试验次数增加到 30 需要更长的时间,但它也为你提供了更好的结果准确性。Microsoft NNI 帮助你报告中间结果(在训练完成之前的试验或训练过程中的结果)。例如,如果报告的指标值存储在变量“x”中,你可以使用 NNI 进行中间报告,如下所示:
nni.report_intermediate_result(x)
屏幕上将会显示以下内容:

图 3.33 – 使用 Microsoft NNI 的 AutoML – 实验完成后的用户界面
NNI 的用户界面还提供了每个试验的默认指标、超参数、持续时间和中间结果的视图。特别是超参数视图非常令人惊叹,因为你可以可视化每个超参数是如何被选择的。例如,在这种情况下,似乎使用具有 1,024 个批次的 ReLU 提供了显著良好的结果。这给你一个关于可以用于模型选择的底层算法的想法,如下面的截图所示:

图 3.34 – 使用 Microsoft NNI 的 AutoML – 实验中的超参数
如我们之前所学的关于收益递减,增加试验次数并不能显著提高模型的准确性。在这种情况下,实验花费了 40 分钟完成 100 次试验,并提供了最佳指标为0.981,与之前的0.980相比,如下截图所示:

图 3.35 – 使用 Microsoft NNI 的 AutoML – 配置参数
你还可以选择不同的超参数结果百分比,以查看我们用于获得最佳性能结果的超参数:

图 3.36 – 使用 Microsoft NNI 的 AutoML – 超参数
或者,你只需从图形右上角的下拉菜单中选择Top 5%来查看结果的前 5%:

图 3.37 – 使用 Microsoft NNI 的 AutoML – 前 5%的超参数
NNI 还允许你通过视觉方式深入到每个试验。你可以在以下截图中看到所有试验作业:

图 3.38 – 使用 Microsoft NNI 的 AutoML – 实验列表
或者,你可以深入到单个作业中,查看各种超参数,包括dropout_rate、num_units、学习率、batch_size和activation函数:

图 3.39 – 使用 Microsoft NNI 的 AutoML – 顶级 20%超参数的路径
能够看到关于实验和超参数的这种程度细节是非常惊人的,这使得 NNI 成为我们自动化 ML 的顶级开源工具之一。
在我们继续之前,重要的是要注意,类似于 AutoGluon 是 AWS 自动化 ML 服务的一部分,NNI 是 Microsoft Azure 自动化 ML 工具集的一部分,这使得它在重用时更加强大和灵活。
介绍 auto-sklearn
scikit-learn(也称为sklearn)是一个非常流行的 Python 开发 ML 库 – 非常受欢迎,以至于它有自己的梗:

图 3.40 – 一个 ML 梗
作为这个生态系统的一部分,基于Feurer 等人的高效且鲁棒的自动化机器学习,auto-sklearn是一个自动化 ML 工具包,它使用贝叶斯优化、元学习和集成构建来执行算法选择和超参数调整。
工具包可在 GitHub 上下载:github.com/automl/auto-sklearn。
auto-sklearn宣称其自动化 ML 的易用性,因为它是一个四行自动化 ML 解决方案:

图 3.41 – 使用 auto-sklearn 的 AutoML – 开始
如果前面的语法看起来很熟悉,那么这是因为这就是scikit-learn进行预测的方式,因此使auto-sklearn成为最容易使用的库之一。auto-sklearn使用scikit-learn作为其后端框架,并支持带有自动化集成构建的贝叶斯优化。
基于auto-sklearn同时解决寻找最佳模型及其超参数的问题。以下图表显示了auto-sklearn如何描述其内部管道:

图 3.42 – auto-sklearn 自动化的 ML 管道
基于自动 ML 的“引擎”使用信息检索(IR)和统计元特征方法来选择各种配置,所有这些配置都作为贝叶斯优化的输入部分。这个过程是迭代的,auto-sklearn 保留模型以创建集成,从而迭代构建模型以最大化性能。在 Colab 上设置 auto-sklearn 可能很棘手,因为你需要安装以下包以开始:

图 3.43 – 使用 auto-sklearn 的 AutoML – 安装必要的库
你可能需要在 Colab 上安装后重新启动运行时。你也可以按照这里指定的说明在你的本地机器上设置 auto-sklearn:automl.github.io/auto-sklearn/master/installation.html。
完成安装后,你可以运行auto-sklearn 分类器,并通过自动化机器学习的魔力获得高精度和超参数:

![图 3.44 – 使用 AutoSkLearn 的 AutoML – 运行 auto-sklearn 分类器的简单实验
我们应该指出,auto-sklearn 2,auto-sklearn 的一个实验版本,也已经发布,并包括了在自动配置和性能改进方面所做的工作。你可以这样导入auto-sklearn 2:
from auto-sklearn.experimental.askl2 import Auto-sklearn2Classifier
基本分类、回归和多标签分类数据集的示例,以及自定义 auto-sklearn 的高级示例,都可以在这里找到:automl.github.io/auto-sklearn/master/examples/。
如果你愿意,可以尝试改变优化指标、训练-验证分割、提供不同特征类型、使用 pandas DataFrames 以及检查搜索过程的高级用例。这些高级示例还展示了如何使用 auto-sklearn 来扩展回归、分类和预处理组件,以及如何限制多个超参数。
AutoKeras
Keras是使用最广泛的深度学习框架之一,也是 TensorFlow 2.0 生态系统的重要组成部分。Auto-Keras基于 Jin 等人撰写的论文(arxiv.org/abs/1806.10282),该论文提出了"一种使用网络形态学进行高效神经架构搜索的新方法,并实现了贝叶斯优化"。AutoKeras基于这样一个概念,即由于现有的神经架构搜索算法如NASNet和PNAS在计算上相当昂贵,使用贝叶斯优化来指导网络的形态学是一种探索搜索空间的有效方法。
工具包可在 GitHub 上下载:github.com/jhfjhfj1/autokeras。
以下步骤将指导你如何安装 AutoKeras 以及如何使用库运行自动化机器学习实验。让我们开始吧:
-
要开始使用 Auto-Keras,请在 Colab 或 Jupyter Notebook 中运行以下
install命令。这样做将安装git uri:![图 3.45 – 使用 AutoKeras 的 AutoML – 安装![图片]()
图 3.45 – 使用 AutoKeras 的 AutoML – 安装
-
一旦满足依赖项,你可以加载MNIST 数据集:![图 3.46 – 使用 AutoKeras 的 AutoML – 加载训练数据
![图片]()
图 3.46 – 使用 AutoKeras 的 AutoML – 加载训练数据
-
现在,您可以获取AutoKeras并查看分类器的代码——在这种情况下,是一个图像分类器。AutoKeras在计算分类度量时显示了数据的准确性:
![图 3.47 – 使用 AutoKeras 的 AutoML – 运行 epoch]()
图 3.47 – 使用 AutoKeras 的 AutoML – 运行 epoch
-
快速跳过 fit 过程,现在您已经发现了
model.save方法,并将在以后使用它进行eval。您可以在 Colab 笔记本的左侧面板中看到存储在model_autokeras文件夹中的模型,如下面的截图所示:![图 3.51 – 使用 AutoKeras 的 AutoML – 导出为 Keras 模型]()
图 3.51 – 使用 AutoKeras 的 AutoML – 导出为 Keras 模型
-
一旦模型被保存,就可以使用
load_model来检索数据,并对它进行预测,如下面的截图所示:

图 3.52 – 使用 AutoKeras 的 AutoML – 预测值
AutoKeras使用高效神经网络架构搜索(ENAS),这是一种类似于迁移学习的方法。像集成一样,在搜索过程中学习的超参数被用于其他模型,这有助于我们避免重新训练并提供改进的性能。
在我们概述开源库的总结中,有两款优秀且易于使用的 AutoML 框架值得特别提及:Ludwig和AutoGluon。
Ludwig – 无代码的 AutoML 工具箱
Uber 的自动化 ML 工具 Ludwig 是一个开源的深度学习工具箱,用于实验、测试和训练 ML 模型。建立在 TensorFlow 之上,Ludwig 使用户能够创建模型基线和执行不同网络架构和模型的自动化 ML 风格实验。在其最新版本中,Ludwig 现在与 CometML 集成并支持 BERT 文本编码器。
工具包可在 GitHub 上下载:github.com/uber/ludwig。
关于这个主题,这里有很多很好的例子:ludwig-ai.github.io/ludwig-docs/examples/#image-classification-mnist。
AutoGluon – 深度学习的 AutoML 工具包
从 AWS 实验室出发,考虑到 ML 民主化的目标,AutoGluon 被描述为开发出来以实现“易于使用和易于扩展的 AutoML,专注于深度学习和涵盖图像、文本或表格数据的实际应用*”。作为 AWS 自动化 ML 策略的一部分,AutoGluon 使初级和经验丰富的数据科学家都能够轻松构建深度学习模型和端到端解决方案。像其他自动化 ML 工具包一样,AutoGluon 提供网络架构搜索、模型选择以及改进自定义模型的能力。
工具包可在 GitHub 上下载:github.com/awslabs/autogluon。
摘要
在本章中,你回顾了一些用于 AutoML 的主要开源工具,包括 TPOT、AutoKeras、auto-sklearn、Featuretools 和 Microsoft NNI。这些工具提供给你,以帮助你理解我们在 第二章 中讨论的概念,即 自动化机器学习、算法和技术,以及每个库中使用的底层方法。
在下一章中,我们将深入探讨商业自动化机器学习产品,从微软 Azure 平台开始。
进一步阅读
关于本章涵盖的主题的更多信息,请参阅资源和链接:
-
Python 中的 TPOT 自动机器学习:
machinelearningmastery.com/tpot-for-automated-machine-learning-in-python/ -
Featuretools 示例:
www.featuretools.com/demos/ -
波士顿数据集:
scikit-learn.org/stable/modules/generated/sklearn.datasets.load_boston.html -
如何自动化机器学习:
www.knime.com/blog/how-to-automate-machine-learning -
由 Randal S. Olson 撰写的 将机器学习应用于生物信息学问题的数据驱动建议:
www.ncbi.nlm.nih.gov/pmc/articles/PMC5890912/ -
Python 中的 TPOT 自动机器学习:
towardsdatascience.com/tpot-automated-machine-learning-in-python-4c063b3e5de9 -
微软 NNI:
github.com/microsoft/nni -
TPOT 示例:
github.com/EpistasisLab/tpot/blob/master/tutorials/Digits.ipynb
第二部分:云平台上的 AutoML
本部分详细概述了使用 Microsoft Azure、Amazon Web Services 和 Google Cloud Platform 构建自动化机器学习解决方案。
本节包括以下章节:
-
第四章, Azure 机器学习入门
-
第五章, 使用 Microsoft Azure 进行自动化机器学习
-
第六章, 使用 Amazon Web Services 进行机器学习
-
第七章, 使用 Amazon SageMaker Autopilot 进行自动化机器学习
-
第八章, 使用 Google Cloud Platform 进行机器学习
-
第九章, 使用 GCP Cloud AutoML 进行自动化机器学习
第四章:开始使用 Azure 机器学习
“作为一名技术专家,我看到人工智能和第四次工业革命将影响人们生活的各个方面。”
– 斯坦福大学计算机科学教授李飞飞
在上一章中,你被介绍了主要的 AutoML 开源软件(OSS)工具和库。我们游览了主要的 OSS 产品,包括 TPOT、AutoKeras、auto-sklearn、Featuretools 和 Microsoft NNI,这将有助于你,读者,理解每个库中使用的差异化的价值主张和方法。
在本章中,我们将开始探索许多商业产品中的第一个,即微软的 Azure 自动化机器学习(ML)能力。Azure 机器学习是微软 AI 生态系统的一部分,它利用 Windows Azure 平台和服务的力量来加速端到端的机器学习生命周期。我们将从一个企业级的机器学习服务开始,用于构建和部署模型,这使开发人员和数据科学家能够更快地构建、训练和部署机器学习模型。通过示例和演示,你将学习构建和部署使用 Azure 的自动化机器学习解决方案的基础知识。
在本章中,我们将涵盖以下主题:
-
开始使用 Azure 机器学习
-
Azure 机器学习堆栈
-
开始使用 Azure 机器学习服务
-
使用 Azure 机器学习进行建模
-
使用 Azure 机器学习部署和测试模型
开始使用 Azure 机器学习
不久前,如果你想在 Azure 平台上使用机器学习在生产环境中,你需要汇集一系列不同的服务来支持完整的机器学习生命周期。
例如,要使用数据集,你需要存储库,例如 Azure Blob 存储或 Azure Data Lake 存储来存储数据。对于计算,你可能需要单独的虚拟机、使用 HDInsight 的 Spark 集群,或者 Azure Databricks 来实际运行你的模型代码。为了保护你的数据以适应企业级,你需要引入你的虚拟网络或配置你的计算和数据在同一个虚拟网络内,以及使用 Azure Key Vault 来管理和保护你的凭证。为了通过使用一致的机器学习库及其不同版本来提供实验的可重复性,你会创建 Docker 容器并使用 Azure 容器注册表来存储这些 Docker 容器。你需要将它们放在你的虚拟网络内,然后使用 Azure Kubernetes 服务。哇!这听起来像是要拼凑很多东西才能让机器学习和所有模型以及一切都能工作。
但自那时以来,情况已经有所进展,你很幸运。通过 Azure 机器学习服务,微软消除了这种复杂性。作为一个托管服务,Azure 机器学习自带自己的计算、托管笔记本以及模型管理、版本控制和模型可重复性的功能。你可以在现有的 Azure 服务之上构建这些功能。例如,你可以连接并整合你已有的计算和存储,以及其他基础设施服务。Azure 机器学习在单一环境中连接和编排它们,以便你拥有一个端到端模块化平台,用于整个机器学习生命周期,从准备数据、构建、训练、打包到部署你的机器学习模型。
微软的 Azure 机器学习开发团队提供了一份优秀的速查表(aka.ms/mlcheatsheet),它可以帮助你为手头的预测分析任务选择最佳的机器学习算法。无论你想预测类别之间的差异,发现结构,还是从文本中提取信息,在以下流程中,你可以根据自己的需求找到最佳算法:

图 4.1 – 机器学习算法速查表概览
Azure 机器学习服务为公民数据科学家提供了一个理想的工作环境。他们可以获得服务、工具,几乎所有配置都为他们准备好了,而且无需编译所有这些单个服务,这使他们能够专注于最重要的事情——解决业务问题。这些领域专家也不需要学习如何使用新工具。你可以使用 Jupyter 笔记本、你喜欢的 Python 编辑器——包括 VS Code 和 PyCharm,Azure 机器学习与任何 Python 机器学习框架库兼容,如 TensorFlow、PyTorch、scikit-learn 等。这在缩短生命周期、快速启动和运行方面非常出色。你将在本章的其余部分中看到一些这些示例,当我们通过使用 Azure 机器学习服务构建分类模型时。
Azure 机器学习堆栈
微软的 Azure 生态系统相当广泛;在本章中,我们将重点关注其与 AI 和机器学习相关的云产品,特别是 Azure 机器学习服务。
下图显示了 Azure 云中可用的机器学习产品:

图 4.2 – Azure 云机器学习产品
你可以访问以下链接获取有关前表中产品信息的更多信息:docs.microsoft.com/en-us/azure/architecture/data-guide/technology-choices/data-science-and-machine-learning.
)
在众多先前列出的 Azure 机器学习产品中,了解应该选择哪个可能会令人困惑。以下图表有助于根据给定的业务和技术场景选择正确的产品:

图 4.3 – Azure 机器学习决策流程
自动机器学习是 Azure 机器学习服务功能的一部分。其他功能包括协作笔记本、数据标注、机器学习操作、拖放式设计工作室、自动扩展功能以及以下表格中描述的许多其他工具。

图 4.4 – Azure 机器学习关键服务功能
Azure 提供的 AI 和 ML 功能非常全面,详细了解这些功能的最佳起点是 Microsoft Learn 上的 Azure AI 基础学习路径:aka.ms/AzureLearn_AIFundamentals.
)
Azure 机器学习服务几乎提供了数据科学家所需的一切。它包括环境、实验、管道、数据集、模型、端点和工作区,这有助于启用以下 Azure 资源:
-
Azure 容器注册库(ACR):此注册库存储了训练和部署期间使用的 Docker 容器信息。
-
Azure 存储帐户:ML 工作区的默认数据存储;它还存储相关的 Jupyter 笔记本。
-
Azure 应用洞察:此服务存储模型监控信息。
-
Azure 密钥保管库:用于计算和工作空间所需的凭据和其他机密。
要训练任何机器学习算法,您需要处理能力,即计算资源。Azure 支持各种不同的计算资源,从您的本地计算机到远程虚拟机。以下表格概述了不同工作负载的训练目标。如表中所示,您可以使用本地计算机、计算集群、远程虚拟机以及各种其他自动机器学习工作负载的训练目标:

图 4.5 – Azure 机器学习训练目标
在逐步说明中,您将了解如何创建和选择计算目标。最后,所有机器学习算法都需要实现化和部署。那句著名的格言“在我的机器上它运行得很好”只能走这么远;因此,您需要一个部署计算资源来托管您的模型并提供端点。
这就是您的服务所在之处,也将从这里被消费,也称为用于部署的计算目标。以下表格显示了不同类型的部署目标:

图 4.6 – Azure 机器计算目标
在介绍 Azure 机器学习功能的基础上,让我们一步步探索如何使用 Azure 机器学习服务构建分类模型。
开始使用 Azure 机器学习服务
在本节中,我们将逐步探索使用 Azure 机器学习创建分类模型的过程:
-
注册一个 Microsoft 账户,除非您已经有了,否则请登录到 Azure 机器学习门户 ml.azure.com。在这里,您将看到以下图所示的 ML 工作室。Azure 订阅基本上是您支付服务的方式。如果您已经有了现有的订阅,您可以使用它,或者注册一个新的。对于全新的用户,Azure 的好人们提供 200 美元的信用额度,让您熟悉环境。确保在不使用资源时关闭资源;不要让数据中心灯光一直亮着:![图 4.7 – Azure 机器学习服务订阅启动页面
![图 4.7 – Figure_4.7_B16890_.jpg]()
图 4.7 – Azure 机器学习服务订阅启动页面
-
在以下图中,您可以看到我们现在被要求选择一个订阅。在这种情况下,我们将选择免费试用来探索服务。您也可以选择按量付费,在这种情况下,您的账户将根据您的计算、存储和其他服务使用情况进行收费:![图 4.8 – Azure 机器学习服务订阅选择页面
![图 4.8 – Figure_4.8_B16890_.jpg]()
图 4.8 – Azure 机器学习服务订阅选择页面
-
现在您已经选择了订阅,您将被带到 Azure 门户,在那里您可以做很多事情。在这种情况下,点击
MachineLearning服务,您将看到以下屏幕以创建 Azure 机器学习服务。这是您可以创建一个或多个 ML 工作区的地方。现在通过点击创建 Azure 机器学习按钮继续:![图 4.10 – Azure 机器学习服务启动页面在门户中![图 4.10 – Figure_4.10_B16890_.jpg]()
图 4.10 – Azure 机器学习服务启动页面在门户中
-
点击创建 Azure 机器学习后,您将被带到以下页面以创建一个 ML 工作区。这是您将选择订阅、创建资源组并选择地理位置的地方:![图 4.11 – Azure 机器学习服务 – 创建工作区
![图 4.11 – Figure_4.11_B16890_.jpg]()
图 4.11 – Azure 机器学习服务 – 创建工作区
-
以下图显示了创建名为
auto-ml-workspace的 ML 工作区的填写好的表单。资源组充当一组不同资源的容器,因此相关的资产(计算、存储等)也包含在内:![图 4.12 – Azure 机器学习服务页面![图 4.12 – Figure_4.12_B16890_.jpg]()
图 4.12 – Azure 机器学习服务页面
一个工作空间可以包含计算实例、实验、数据集、模型、部署端点等,是 Azure 机器学习中的顶级资源。你可以参考以下图中所示的 Azure 工作空间的分解:
![图 4.13 – 什么是 Azure 机器学习工作空间?]()
图 4.13 – 什么是 Azure 机器学习工作空间?
在项目详情下点击创建按钮后,你的 ML 服务将被部署,并创建相关的依赖项。这可能需要几分钟。你将看到如下所示的图示:
![图 4.14 – Azure 机器学习服务部署]()
图 4.14 – Azure 机器学习服务部署
-
一旦部署完成,你将看到资源组和其关联的资源,如下图所示。现在你可以点击转到资源按钮,这将带你进入 ML 工作空间:
![图 4.15 – Azure 机器学习部署完成屏幕]()
图 4.15 – Azure 机器学习部署完成屏幕
-
这是你的 ML 工作空间。在这里,你可以看到你的资源组、订阅、密钥保管库以及所有重要的高级细节,但你还没有进入 ML 场域。还需要再点击一次。所以现在,请点击启动工作室按钮,进入 ML 工作室:
![图 4.16 – Azure 机器学习工作室控制台启动工作室]()
图 4.16 – Azure 机器学习工作室控制台启动工作室
-
现在,以下是你一直耐心等待的屏幕:ML 工作室!请继续,点击开始游览按钮 – 我们会等待:

图 4.17 – Azure 机器学习工作室主页
以下图示展示了 Azure 机器学习工作室。曾经有一个“经典”版本的 ML 工作室,但现在它已经不再活跃,所以我们只关注这个新的闪亮基于网页的门户,它可以帮助你完成所有机器学习任务。在左侧面板中,你可以看到所有不同的服务,这些服务也通过下拉菜单提供:

图 4.18 – Azure 机器学习工作室主页
界面现代、简洁、高效。你可以通过创建一个新的笔记本、一个自动化的 ML 实验,或者一个设计器来开始。每个服务都有不同的用途,但它们有相似的基础设施。笔记本是面向动手数据科学家的优秀工具,而自动化的 ML 实验旨在实现 AI 的民主化。设计器界面提供了拖放功能,用于准备数据和部署模型。
使用 Azure 机器学习进行建模
在我们创建自动化的 ML 工作流之前,让我们从一个简单的 Azure 笔记本开始:
-
Azure 笔记本是 Azure 机器学习服务的一部分,您可以选择创建或使用示例笔记本开始:
![图 4.19 – Azure 机器学习示例笔记本]()
图 4.19 – Azure 机器学习示例笔记本
-
在
MNIST中,它将过滤以显示笔记本。选择image-classification-part1-training.ipynb文件以在右侧窗格中查看笔记本,然后点击克隆此笔记本以创建您的副本:![图 4.20 – MNIST 图像分类笔记本]()
图 4.20 – MNIST 图像分类笔记本
-
点击
user目录下的yml配置文件:![图 4.21 – MNIST 图像分类笔记本]()
图 4.21 – MNIST 图像分类笔记本
-
现在您已经克隆了资产,是时候设置计算目标了。没有机器来运行,您是无法运行笔记本的。如您之前所见,我们能够在 Google Colab 或本地运行代码。在这种情况下,我们正在 Azure 上运行此工作负载,这要求我们更明确地表达我们的意图,因此您必须创建一个计算目标才能继续。点击创建计算实例:
![图 4.22 – MNIST 图像分类笔记本]()
图 4.22 – MNIST 图像分类笔记本
-
一旦您点击了创建计算实例,您将看到提供的计算选项及其相关成本。更大的更好硬件成本更高并不令人惊讶:
注意
您可以在
azure.microsoft.com/en-us/pricing/details/virtual-machines/series/了解不同类型的虚拟机及其相关成本。![图 4.23 – 创建新的计算实例]()
图 4.23 – 创建新的计算实例
-
为了本 AutoML 笔记本的目的,我们将选择一个标准小型虚拟机,如下图所示,并创建计算实例。您可以根据需要创建多个计算实例并将它们分配给不同的实验:
![图 4.24 – 创建新的计算实例]()
图 4.24 – 创建新的计算实例
-
点击创建以创建新的计算实例——当您创建计算实例时,这可能需要一些时间,因为您会看到耐心旋转的圆圈,此时您可以探索 Azure 机器学习门户的其他部分:
![图 4.25 – MNIST 自动化机器学习计算实例]()
图 4.25 – MNIST 自动化机器学习计算实例
现在,计算实例已准备好使用,如下图所示。首先,您会看到状态为启动中,如下图所示:
![图 4.26 – 计算实例属性]()
图 4.26 – 计算实例属性
当计算实例准备就绪时,计算实例的状态将变为运行中。您可以选择停止、重启或删除计算资源,只要您愿意。只需记住,这将危及其依赖项(使用或计划使用此计算资源的事物):
![图 4.27 – 计算实例运行]()
图 4.27 – 计算实例运行
-
通过点击打开的
image-classification-mnist-data笔记本,我们可以运行代码以确保其正常工作。您还可以看到以下图中打印的 Azure Machine Learning SDK 版本:![图 4.28 – MNIST 图像分类笔记本]()
图 4.28 – MNIST 图像分类笔记本
-
还有一个配置步骤尚未完成——您必须通过工作区进行身份验证才能利用资源。为此,内置了一个交互式身份验证系统,您需要点击以下图中显示的链接(
devicelogin)并输入代码(也在以下图中)以进行身份验证。我确信您不会使用以下图中的代码——它不会起作用,但很好尝试一下!!图 4.29 – MNIST 图像分类笔记本图 4.29 – MNIST 图像分类笔记本
-
既然我们已经完成了身份验证,让我们创建一个计算目标。所有配置的
样板代码已经作为 Jupyter 笔记本的一部分为您编写好了。通过运行以下图中的单元格,您现在可以以编程方式连接到ComputeTarget并配置节点:![图 4.30 – MNIST 图像分类笔记本]()
图 4.30 – MNIST 图像分类笔记本
-
现在是时候以编程方式下载 MNIST 数据集进行训练了。Yann LeCun(纽约大学 Courant 研究所)和 Corinna Cortes(纽约谷歌实验室)拥有 MNIST 数据集的版权,该数据集是原始 MNIST 数据集的派生作品。MNIST 数据集在 Creative Commons Attribution-Share Alike 3.0 许可条款下提供。下载后,您还可以像以下笔记本屏幕截图所示那样可视化它:
![图 4.31 – MNIST 图像分类笔记本]()
图 4.31 – MNIST 图像分类笔记本
-
如您可能从我们之前与 MNIST 的冒险经历中记得,我们将为数据集创建如图所示的训练和测试分割,并训练一个逻辑回归模型。现在我们还将创建一个估算器,用于将运行提交到集群:
![图 4.32 – MNIST 图像分类笔记本]()
图 4.32 – MNIST 图像分类笔记本
在使用 Azure 机器学习工作时,有一条必须记住的规则,那就是所有实验及其关联的运行都是相互关联的,以保持生态系统的连贯性。这非常有帮助,因为无论你在哪里运行实验(在笔记本、JupyterLab、自定义代码等),你都可以调出运行情况并查看详细信息。关于这一点,稍后会有更多介绍。
在下面的图中,你可以看到创建估算器的代码,然后通过调用
experiment对象的submit函数将作业提交到集群:![图 4.33 – MNIST 图像分类笔记本
![图片]()
图 4.33 – MNIST 图像分类笔记本
-
在这一点上,运行以下图中的单元格演示了如何使用 Jupyter 小部件的
wait_for_completion方法可视化experiment的详细信息,以查看作业的状态。这显示了在远程集群上运行的作业,以及作为小部件一部分的相应构建日志。你可以看到如下图中作为小部件一部分的 运行 详细信息:![图 4.34 – MNIST 图像分类笔记本![图片]()
图 4.34 – MNIST 图像分类笔记本
当作业在远程集群上运行时,我们看到结果流进来,你可以通过相应的百分比指示器观察到训练在你眼前展开:

图 4.35 – MNIST 图像分类笔记本
当作业完成时,你将在小部件中看到所花费的时间和运行 ID,如下面的截图所示:

图 4.36 – MNIST 图像分类笔记本
你也可以通过点击后续的详细信息页面来查看实验的详细信息。你可以通过查看以下截图中的文档页面链接来了解有关实验如何工作的详细文档:

图 4.37 – MNIST 图像分类笔记本
一旦训练完成,你将看到运行期间记录的结果指标,并且还可以注册模型。这意味着你将获得模型的相应 .pkl 文件:

图 4.38 – MNIST 图像分类笔记本
现在你可以通过调用 run.get_metrics() 获取运行期间记录的所有指标,包括模型的准确度。在这种情况下,准确度为 0.9193:

图 4.39 – MNIST 图像分类笔记本
在这一点上,笔记本会自动将模型文件(.pkl)保存为输出文件夹中的输出。您可以通过调用run.get_file_names()方法来查看文件。在接下来的步骤中,我们将使用此模型文件来创建网络服务并调用它:
![Figure 4.40 – MNIST image classification notebook
![img/Figure_4.40_B16890.jpg]
图 4.40 – MNIST 图像分类笔记本
使用 Azure 机器学习部署和测试模型
模型现在已经训练完成,创建了一个.pkl文件,并且模型可以用于测试。部署部分在第二个笔记本part2-deploy.ipynb中完成,如下图中所示。要部署模型,我们通过点击左侧面板中的笔记本来打开part 2-deploy.ipynb笔记本。我们通过调用joblib.Load方法来加载.pkl文件。您还可以在下面的屏幕截图中看到run方法,它接收原始 JSON 数据,调用模型的predict方法,并返回结果:
![Figure 4.41 – MNIST image classification notebook
![img/Figure_4.41_B16890.jpg]
图 4.41 – MNIST 图像分类笔记本
在这一步中,我们通过调用如下图所示的Model构造函数来创建一个模型对象。此模型使用来自Environment对象的配置属性,并使用服务名称部署端点。此端点使用Azure 容器实例(ACI)部署。部署成功后,端点位置即可使用:
![Figure 4.42 – MNIST image classification notebook
![img/Figure_4.42_B16890.jpg]
图 4.42 – MNIST 图像分类笔记本
-
您现在可以检索评分 URI,该 URI 可用于调用服务并从模型获取结果:![Figure 4.43 – MNIST image classification notebook
![img/Figure_4.43_B16890.jpg]
图 4.43 – MNIST 图像分类笔记本
-
现在您可以调用网络服务以获取结果:
![Figure 4.44 – MNIST image classification notebook
![img/Figure_4.44_B16890.jpg]
图 4.44 – MNIST 图像分类笔记本
您还可以通过调用confusion_matrix方法查看相应的混淆矩阵:
![Figure 4.45 – MNIST image classification notebook
![img/Figure_4.45_B16890.jpg]
图 4.45 – MNIST 图像分类笔记本
这就完成了在 Azure 机器学习中构建模型、部署和测试的整个周期。我们将在下一章继续介绍自动化机器学习。
摘要
在本章中,你学习了如何开始使用 Microsoft Azure 平台,了解 ML 服务生态系统功能,并了解了微软的 AI 和 ML 产品。你还简要了解了 Azure 平台内的不同功能,例如协作笔记本、拖放式 ML、MLOPS、RStudio 集成、强化学习、企业级安全、自动化 ML、数据标注、自动扩展计算、与其他 Azure 服务的集成、负责任 ML 和成本管理。最后,为了测试你新发现的 Azure 超能力,你使用 Azure 机器学习笔记本配置、构建、部署并测试了一个分类 Web 服务。
在下一章中,我们将进一步深入探讨使用 Azure 机器学习服务的自动化 ML 功能。
进一步阅读
如需了解更多关于以下主题的信息,您可以访问提供的链接:
-
带有 Azure 机器学习示例的 ML 和深度学习 Python 笔记本:
)
-
Azure 机器学习中的计算目标是什么?
docs.microsoft.com/en-us/azure/machine-learning/concept-compute-target
)
-
在 Python 的 Azure 机器学习管道中使用自动化 ML:
docs.microsoft.com/en-us/azure/machine-learning/how-to-use-automlstep-in-pipelines
)
-
巴哈多·卡莱吉对 AutoML 解决方案的批判性概述:
medium.com/analytics-vidhya/a-critical-overview-of-automl-solutions-cb37ab0eb59e
)
第五章:使用微软 Azure 进行自动化机器学习
“迄今为止,人工智能最大的危险是人们过早地得出他们理解它的结论。”
– 以利亚泽·尤德科夫斯基
微软 Azure 平台及其相关工具集种类繁多,是更大企业生态系统的一部分,这是一个不容忽视的力量。它通过改善沟通、资源管理和促进高级可操作分析来加速增长,使企业能够专注于他们最擅长的事情。在前一章中,您被介绍到 Azure 机器学习平台及其服务。您学习了如何开始使用 Azure 机器学习,并使用微软 Azure 平台及其服务瞥见了端到端机器学习生命周期。这实际上是(在非字面意义上的词)冰山一角。
在本章中,我们将通过了解微软 Azure 中的自动化机器学习(AutoML)来开始。您将构建一个分类模型,并使用 Azure 的 AutoML 功能进行时间序列预测。本章将为您提供构建和部署 AutoML 解决方案所需的所有技能。
在本章中,我们将涵盖以下主题:
-
微软 Azure 中的 AutoML
-
使用 Azure AutoML 和 JupyterLab 进行时间序列预测
让我们开始吧!
微软 Azure 中的 AutoML
在 Azure 平台中,AutoML 被视为一等公民。特征工程、网络架构搜索和超参数调整的基本思想与我们在第二章“自动化机器学习、算法和技术”和第三章“使用开源工具和库进行自动化机器学习”中讨论的内容相同。然而,用于民主化这些技能的抽象层使它们对非机器学习专家更具吸引力。
Azure 平台中 AutoML 的关键原则如下所示图所示。用户输入,如数据集、目标指标和约束(作业运行时间、计算分配的预算等)驱动 AutoML“引擎”,通过迭代找到最佳模型,并根据训练成功的分数对其进行排名:


Figure 5.1 – Azure AutoML workflow – how AutoML works
在本节中,我们将提供 AutoML 方法的逐步说明。在第四章“开始使用 Azure 机器学习”中,您看到了 Azure 机器学习的主页。在那里,我们创建了一个分类模型,并使用笔记本对其进行测试:


Figure 5.2 – Azure Machine Learning portal
现在,让我们探索基于 AutoML 的模型开发在训练和调整模型时的运作方式:
-
从 Azure 门户,点击 自动机器学习 | 立即开始。您将被带到以下屏幕,在那里您可以创建一个新的自动机器学习运行:
![图 5.3 – Azure 机器学习 – 创建自动机器学习运行]()
图 5.3 – Azure 机器学习 – 创建自动机器学习运行
-
创建自动机器学习运行的第一步是选择要工作的数据集。在这里,您可以选择创建自己的数据集,或者——更好的是——从 Azure 提供的公共数据集存储库中选择现有的一个:
![图 5.4 – AutoML 数据集选择页面]()
图 5.4 – AutoML 数据集选择页面
-
可以从开放数据集中创建数据集。在这种情况下,我们将使用我们经过测试的 MNIST 数据集来创建 AutoML 运行,如下面的截图所示:
MNIST 数据集
Yann LeCun(纽约大学柯朗研究所)和 Corinna Cortes(纽约谷歌实验室)拥有 MNIST 数据集的版权,该数据集是原始 NIST 数据集的派生作品。MNIST 数据集已在 Creative Commons Attribution-Share Alike 3.0 许可证下提供。

图 5.5 – 从开放数据集创建数据集页面
一旦您选择了数据集,它将作为您运行的一部分出现,您还可以预览它。除了指定数据集的版本外,您还可以指定您是否希望使用整个数据集,或者它应该注册为表格数据源或文件类型数据源:

图 5.6 – 来自 Azure 机器学习数据集存储库的精选数据集
选择 创建 后,您将看到以下屏幕,因为数据集已成为您运行的一部分:

图 5.7 – 来自 Azure 机器学习数据集存储库的精选数据集
如果您点击数据集的名称,MNIST 数据集也可以作为数据预览的一部分查看,如下面的截图所示:

图 5.8 – 来自 Azure 机器学习数据集存储库的精选数据集的预览
让我们面对现实——这个 MNIST 像素数据集的预览并不那么令人兴奋,但如果您有一些更具代表性的数据(如医疗保健、零售或金融数据等),预览将帮助我们了解数据导入过程进行得很好,我们没有运行分隔符灾难的风险。
类似地,数据统计在以下屏幕截图中显示。如果你熟悉 pandas,可以将其视为 describe() 功能。由于其基于图像的特性,这并不完全相关,但当我们在本章后面使用一些其他数据集时,它却非常有用:

图 5.9 – Azure AutoML 中数据统计的预览
-
现在我们已经选择了数据集,我们可以通过提供实验名称、目标列(用于训练和分类的标记特征)和计算集群来配置运行,如下面的屏幕截图所示:
![图 5.10 – 配置 AutoML 运行]()
图 5.10 – 配置 AutoML 运行
-
第三步和最后一步是选择任务类型 – 分类、回归或时间序列预测。在这种情况下,我们根据关联的标签对数字进行分类。你将在未来的示例中学习如何使用其他任务类型:
![图 5.11 – 选择 AutoML 运行的任务类型]()
图 5.11 – 选择 AutoML 运行的任务类型
-
考虑额外的配置是很重要的。在这里,你可以选择主要指标、其可解释性、任何允许的算法(默认情况下,所有算法都允许)、退出标准和任何验证分割信息,如下面的屏幕截图所示:
![图 5.12 – AutoML 运行的任务类型额外配置]()
图 5.12 – AutoML 运行的任务类型额外配置
额外的配置根据任务类型而有所不同。以下屏幕截图显示了回归配置元素:
![图 5.13 – AutoML 运行的任务类型额外配置]()
图 5.13 – AutoML 运行的任务类型额外配置
特征化 – 即选择和转换特征 – 是你在处理数据集时需要考虑的重要因素。当你点击 查看特征化设置 链接时,Azure 机器学习会为你提供以下屏幕。从这里,你可以选择特征的类型,分配特定的数据类型,并指定你希望用哪些数据来填充特征:
![图 5.14 – AutoML 运行的特征化]()
图 5.14 – AutoML 运行的特征化
自动特征化 – 即将不同的数据类型转换为数值向量 – 是任何数据科学工作流程的典型部分。以下图表显示了在特征化开启时自动应用于数据集的技术(参见前一个截图顶部的蓝色切换按钮)。以下图表显示了自动特征化过程中采取的一些关键步骤。您可以在
docs.microsoft.com/en-us/azure/machine-learning/how-to-configure-auto-features了解更多关于枚举的特征化技术。![图 5.15 – AutoML 运行的特征化方法]()
图 5.15 – AutoML 运行的特征化方法
缩放和归一化(有时也称为正则化和标准化)是处理将数据转换为共同值范围的两种重要特征化方法。以下图表显示了自动特征化算法中使用的缩放和归一化技术。您可以在
docs.microsoft.com/en-us/azure/machine-learning/how-to-configure-auto-features了解更多关于各种枚举的缩放和特征化技术。![图 5.16 – Azure AutoML – 缩放和特征化]()
图 5.16 – Azure AutoML – 缩放和特征化
在不提及护栏的情况下,特征化的话题就不完整。数据护栏是 AutoML 引擎的一部分,有助于识别和解决数据集的问题,如缺失特征值、处理高基数特征(许多唯一值)、类别不平衡(少数类和异常值)等。以下图表概述了您应该熟悉的这些护栏。您可以在 Azure 文档中进一步了解这些护栏的详细信息(
docs.microsoft.com/en-us/azure/machine-learning/how-to-configure-auto-features):![图 5.17 – AutoML 运行的数据护栏]()
图 5.17 – AutoML 运行的数据护栏
-
现在,当您点击完成按钮,如图 5.10 所示,在设置任务类型和任何附加配置项的给定参数后,您将看到以下屏幕,该屏幕验证运行:
![图 5.18 – AutoML 运行的数据护栏]()
图 5.18 – AutoML 运行的数据护栏
需要记住的一个重要观点是,您需要有良好的计算资源来运行实验;否则,它将失败。例如,在这个实验中,我将训练时间设置为 0.25 小时;即 15 分钟。这对于给定的计算资源来说时间不够,这意味着运行注定要失败,如下面的截图所示:
![Figure 5.19 – AutoML experiment run settings
![img/Figure_5.19_B16890.jpg]
图 5.19 – AutoML 实验运行设置
以下截图显示,由于我们没有为运行 AutoML 实验分配正确的计算资源,它失败了:
![Figure 5.20 – AutoML experiment run failure message
![img/Figure_5.20_B16890.jpg]
图 5.20 – AutoML 实验运行失败信息
以下错误信息详细说明了用户错误,以及可能的解决方案,例如增加计算资源、应用实验超时以及进行数据集采样更改:
![Figure 5.21 – AutoML experiment run failure message
![img/Figure_5.21_B16890.jpg]
图 5.21 – AutoML 实验运行失败信息
将时间限制增加到 5 小时会有所帮助,正如您将在以下步骤中看到的那样。Azure AutoML 现在已经拥有了足够的时间和资源来执行多个实验。这教会了您,在时间和/或资源上节省成本并不是一个好的 AutoML 策略。
-
在 AutoML 子运行的下个屏幕中显示了单个迭代。它清楚地展示了如何使用不同的数据预处理方法,如
StandardScalerWrapper、RobustScaler和MaxAbsScaler/MinMaxScaler,以及预测算法,如RandomForest、LightGB、ElasticNet、DecisionTree和LassoLars。以下截图中的运行54和53展示了如何通过点击相关的标签查看集成算法及其权重:![Figure 5.22 – AutoML experiment run details![img/Figure_5.22_B16890.jpg]
图 5.22 – AutoML 实验运行详情
-
点击 模型 标签,可以看到哪个模型提供了什么程度的准确度以及它关联的运行,如下面的截图所示:
![Figure 5.23 – AutoML experiment run details
![img/Figure_5.23_B16890.jpg]
图 5.23 – AutoML 实验运行详情
运行指标也是获取有关相关运行更详细信息的绝佳方式。例如,您可以看到算法的名称、相关的准确度、AUC 分数、精确度、F1 分数等:
![Figure 5.24 – AutoML experiment run details
![img/Figure_5.24_B16890.jpg]
图 5.24 – AutoML 实验运行详情
通过点击相应的标签,可以看到为保护数据质量所采取的数据边界措施,如下面的截图所示。此页面显示了为确保用于训练模型的输入数据质量高,使用了哪些边界技术:
![Figure 5.25 – AutoML experiment data guardrails
![img/Figure_5.25_B16890.jpg]
图 5.25 – AutoML 实验数据边界
从主运行摘要页面,您可以查看最佳模型及其总结的结果。在这种情况下,基于软投票的VotingEnsemble()方法是明显的赢家。它是 Azure AutoML 当前支持的两种集成方法之一。另一种是StackEnsemble,它从先前运行的迭代中创建集合。集成方法是用于结合多个模型以获得最佳结果的技巧;投票、堆叠、袋装和提升是集成方法的一些可用类别:

图 5.26 – AutoML 实验摘要页面
假设您已经跟随了这些实验,并亲自尝试了这些步骤,那么应该很明显,每次运行都有几个子运行——也就是说,每个模型都有单独的迭代。因此,当我们查看运行摘要页面的指标选项卡时,我们不仅看到不同的指标,还有一个精确度召回率图:

图 5.27 – AutoML 实验准确度指标和 PR 曲线
现在,让我们看看模型解释。机器学习模型的可解释性非常重要,尤其是在 AutoML 中。这是因为您作为领域专家,希望了解哪些特征在结果中发挥了关键作用。在下面的屏幕截图中,您可以看到一个表格形式的特征重要性解释,对于前k个特征,以及它们如何用于预测 0-9 的数字:

图 5.28 – AutoML 实验特征解释
上述截图显示了哪些特征在预测数字中扮演了什么角色。特征 377 在预测数字 7 时很重要,特征 379 和 434 在预测 9 时很重要,等等。这个 MNIST 数据集可能看起来与您无关,但让我们想象您正在查看一个 HR 招聘数据集,性别、种族或年龄成为重要的特征。这将引发警报,因为这会违反您的公司关于性别偏见、种族主义或年龄相关歧视的政策。这也可能违反法律,并且您可能会因为机器中的偏见而在合规性和声誉方面陷入严重麻烦。更不用说,基于与员工完成工作能力无关的属性进行歧视是不道德的(而且说实话是荒谬的)。
这种可解释性还提供了特征的摘要重要性,您可以可视化全局和局部特征中单个 k 特征的相对重要性。以下截图所示的蜂群图在非常细粒度级别上可视化相同的数据。它显示了 MNIST 数据集中元素的数量与它们对应的特征之间的一对一映射,类似于前一个截图中的表格表示:

图 5.29 – Azure 机器学习 top k 特征摘要重要性图
在对自动机器学习分类的概述之后,让我们继续前进,并将相同的技巧应用于时间序列预测。
使用 AutoML 进行时间序列预测
预测能源需求是工业界的一个实际问题,能源供应商喜欢提前预测消费者的预期需求。在这个例子中,我们将使用纽约市能源需求数据集,该数据集可在公共领域获得。我们将使用历史时间序列数据并应用 AutoML 进行预测;即预测未来 48 小时的能源需求。
机器学习笔记本是 Azure 模型仓库的一部分,可以在 GitHub 上访问,网址为github.com/Azure/MachineLearningNotebooks/。让我们开始吧:
-
在您的本地磁盘上克隆上述 GitHub 仓库并导航到
forecasting-energy-demand文件夹:![图 5.30 – Azure 机器学习笔记本 GitHub 仓库]()
图 5.30 – Azure 机器学习笔记本 GitHub 仓库
-
点击以下截图所示的 Azure 笔记本仓库中的
forecasting-energy-demand文件夹:![图 5.31 – 在 Azure 机器学习笔记本工作区上传文件夹]()
图 5.31 – 在 Azure 机器学习笔记本工作区上传文件夹
-
一旦文件夹上传完成(参见以下截图左侧的文件),双击
ipynb(笔记本)文件并打开它。您将看到以下屏幕:![图 5.32 – 在 AutoML 笔记本工作区上传文件]()
图 5.32 – 在 AutoML 笔记本工作区上传文件
-
现在,通过点击相应的下拉菜单,如图以下截图所示,在 JupyterLab 中打开它。重要的是要记住,尽管您在 JupyterLab 中运行文件,但自动机器学习实验是在 Azure 机器学习工作区中运行的,您始终可以跟踪并查看那里的每个实验。这展示了与第三方工具无缝集成的强大功能:
![图 5.33 – 在 AutoML 笔记本工作区上传文件并在 JupyterLab 中打开]()
图 5.33 – 在 AutoML 笔记本工作区上传文件并在 JupyterLab 中打开
现在,文件正在一个非常熟悉的环境中运行,内核是 Python 3.6 – Azure 机器学习运行时。这种与笔记本的无缝集成是 Azure 机器学习的一个强大功能:
![图 5.34 – 在 AutoML 笔记本工作区上传文件并在 JupyterLab 中打开
![图片]()
图 5.34 – 在 AutoML 笔记本工作区上传文件并在 JupyterLab 中打开
由于我们正在处理时间序列数据,值得注意的是 Azure AutoML 提供了各种原生时间序列以及深度学习模型来支持与时间序列相关的分析工作负载。以下截图显示了这些算法的列表:
![图 5.35 – Azure AutoML 时间序列功能
![图片]()
图 5.35 – Azure AutoML 时间序列功能
Azure 自动化机器学习提供了各种回归、分类和时间序列预测算法以及评分机制,并且您可以始终添加自定义指标。以下截图显示了 Azure AutoML 分类、回归和时间序列预测算法和措施的列表:
![图 5.36 – Azure AutoML 分类、回归和时间序列预测算法
![图片]()
图 5.36 – Azure AutoML 分类、回归和时间序列预测算法
以下是一系列用于衡量上述方法准确性的指标:
![图 5.37 – Azure AutoML 的分类、回归和时间序列预测度量
![图片]()
图 5.37 – Azure AutoML 的分类、回归和时间序列预测度量
-
快速浏览一下样板设置代码,我们可以通过设置目标列为目标和将时间列的名称设置为时间戳来设置实验。完成这些操作后,数据将被下载并成为 pandas DataFrame 的一部分,如下面的截图所示:![图 5.38 – 在笔记本中为纽约市电力供应加载数据
![图片]()
图 5.38 – 在笔记本中为纽约市电力供应加载数据
-
现在,让我们将数据拆分为训练集和测试集:![图 5.39 – 在笔记本中为纽约市电力供应进行数据拆分
![图片]()
图 5.39 – 在笔记本中为纽约市电力供应进行数据拆分
-
在这个练习中,您将必须设置的一个关键参数是预测范围;也就是说,您希望预测多远未来的数据。自动化机器学习算法足够智能,可以根据数据集的时间序列频率知道使用什么单位(小时、天数或月份)。根据我们的业务问题,我们将预测范围设置为
48(小时)并提交作业,如下面的截图所示:![图 5.40 – 为预测作业创建 AutoML 配置![图片]()
图 5.40 – 为预测作业创建 AutoML 配置
-
现在我们已经创建了配置,让我们提交实验,如下所示屏幕截图所示:![图 5.41 – 将 AutoML 实验提交到远程服务器执行
![图片]()
图 5.41 – 将 AutoML 实验提交到远程服务器执行
-
要演示 Jupyterlab 与 Azure Machine Learning 服务的集成,请点击 ML 服务门户中的 实验 选项卡,如下所示屏幕截图。在这里,您可以看到实验已被提交,现在正准备使用关联的配置运行 AutoML 参数:![图 5.42 – 在远程服务器上进行的 AutoML 实验的实验面板视图
![图片]()
图 5.42 – 在远程服务器上进行的 AutoML 实验的实验面板视图
当您等待作业完成时,AutoML 配置元素也可以作为笔记本的一部分观察到:
![图 5.43 – 提交作业后运行 wait_for_completion() 方法的笔记本
![图片]()
图 5.43 – 提交作业后运行 wait_for_completion() 方法的笔记本
-
笔记本与相应实验之间的这种内在集成也可以在以下屏幕截图中看到。在这里,我们可以看到 实验 笔记本如何在实验控制台中反映:
![图 5.44 – 在 Azure Machine Learning 的实验面板中显示的笔记本中的实验]()
图 5.44 – 在 Azure Machine Learning 的实验面板中显示的笔记本中的实验
每次运行都会概述算法的名称和错误详情,并显示出错误率的持续降低。以下屏幕截图显示了 MNIST 分类中归一化 RMSE 和准确度指标:
![图 5.45 – 在 Azure Machine Learning 的实验面板中显示的笔记本中的实验
![图片]()
图 5.45 – 在 Azure Machine Learning 的实验面板中显示的笔记本中的实验
数据护栏类型也值得关注。在以下屏幕截图中,您可以看到它们与我们之前在分类练习中使用的护栏不同。在这种情况下,数据通过频率检测和缺失特征值插补进行验证。AutoML 引擎足够智能,能够学习针对不同类型实验和数据集需要应用哪些类型的护栏:
![图 5.46 – Azure Machine Learning 实验面板的护栏
![图片]()
图 5.46 – Azure Machine Learning 实验面板的护栏
-
现在实验已完成,我们可以在笔记本中检索最佳模型,如下所示屏幕截图(或如果您更倾向于视觉方式,在机器学习服务控制台中):
![图 5.47 – 笔记本中的模型检索]()
图 5.47 – 笔记本中的模型检索
-
你可能还记得在前几章中介绍了深度特征搜索或自动化特征工程。你可以通过在模型上调用
get_engineered_feature_names()方法,并按照以下步骤从笔记本中访问和检索工程化特征:![图 5.48 – 通过 get_engineered_feature_names 检索工程化特征]()
图 5.48 – 通过 get_engineered_feature_names 检索工程化特征
查看这些特征的工程化摘要,包括有机特征,为你提供了构建这些特征的推理依据,如下面的截图所示:
![图 5.49 – 通过 get_featurization_summary()查看工程化特征摘要]()
图 5.49 – 通过 get_featurization_summary()查看工程化特征摘要
-
使用评分方法,我们可以在图表上创建测试得分并绘制预测点,如下面的截图所示:

图 5.50 – 为测试数据得分构建散点图
预测数据测试得分用蓝色表示,实际得分用绿色表示:
注意
这张图片对你来说可能是黑白相间的。当你实际在示例上工作时,你会更好地理解颜色参考。

图 5.51 – 测试数据得分及其相关图表
X_trans 捕获了工程化,包括数据集中自动特征工程的变化,如下面的截图所示:

图 5.52 – X_trans 显示能源预测的时间序列特征
尽管 MNIST 数据集的可解释性并不那么直观,但在探索能源需求数据集时,你可以可视化不同的模型并看到哪些特征对预测使用影响最大。很明显,温度与全球电力使用的全局重要性呈正相关。更高的温度会导致空调使用量增加,从而增加电力使用。模型还认为一天中的时间和一周中的某一天也很重要,如下面的图表所示:

图 5.53 – 全局重要性解释图
在下面的截图中,不同的解释模型(工程化特征与原始特征)将结果与 Y 的不同预测值进行映射。模型解释视图帮助我们理解哪些特征直接影响了模型:

图 5.54 – 全局重要性解释图
这是我们使用 Azure 中的 AutoML 进行时间序列预测演示的结束。
摘要
在本章中,你学习了如何在 Azure 中应用 AutoML 来解决分类问题和时间序列预测问题。你能够在 Azure 机器学习环境中使用 Azure 笔记本和 JupyterLab 构建模型。然后你了解了整个工作空间如何与实验和运行相关联。你还看到了这些自动化运行期间的可视化;这正是特征重要性、特征的全球和局部影响以及基于原始和工程特征的解释提供直观理解的地方。除了你对工具的亲和力之外,平台与你的企业路线图相一致也很重要。Azure 是一个整体上很棒的平台,拥有全面的工具集,我们希望你喜欢探索其自动化 ML 功能。
进一步阅读
关于本章所涉及主题的更多信息,请查看以下链接:
-
Azure AutoML:
docs.microsoft.com/en-us/azure/machine-learning/concept-automated-ml -
Azure 上的实用 AutoML:
第六章: 使用 AWS 进行机器学习
“无论你现在在学习什么,如果你没有跟上深度学习、神经网络等,你就会落后。我们正在经历一个过程,其中软件将自动化软件,自动化将自动化自动化。”
– 马克·库班
在上一章中,您被介绍了 Azure 的机器学习(ML)景观以及如何在 Azure 平台上进行自动机器学习。在本章中,您将学习如何使用亚马逊网络服务(AWS)开始机器学习之旅,以及不同的产品和服务,以及对庞大的 AWS 云堆栈的深入了解。
本章的主题是通过介绍 AWS 机器学习功能来开始,以提供一个更广泛的视角,不仅限于 AWS 作为超大规模云服务提供商,还包括该领域的广泛性。许多用例和排列需要专门的解决方案,没有一种解决方案可以满足企业的 AI 和 ML 需求。这就是为什么在您开始自动机器学习之旅时,了解每个云服务提供者的知识广度非常重要。
在本章中,我们将涵盖以下主题:
-
AWS 景观中机器学习的概述
-
开始使用 AWS 机器学习
-
与 AWS SageMaker Autopilot 协作
AWS 景观中的机器学习
Gartner 是少数几家定期审查技术景观并在其魔力象限报告中提供其发现全面概述的主要咨询公司之一。在其最新发布中,魔力象限包含 Anaconda 和 Altair 作为利基玩家,Microsoft、DataRobot、KNIME、Google、H2O.ai、RapidMiner 和 Domino 作为愿景家,IBM 作为挑战者,以及 Alteryx、SAS、Databricks、MathWorks、TIBCO 和 Dataiku 作为数据科学和机器学习领域的领导者。
看不到 AWS 在这里被提及,这让我们感到惊讶。由于他们在数据科学和人工智能解决方案交付方面的一致记录,有六家公司位于领导象限,而七家公司被归类为愿景家。然而,AWS 未能进入愿景家和/或领导者象限,这归因于公告延迟。AWS 的旗舰人工智能产品 SageMaker Studio 和 SageMaker Autopilot 是在 Gartner 提交截止日期之后宣布的;因此,它们未能入选。由于 AWS 解决方案景观的广泛性,没有看到 AWS 在名单上令人惊讶。作为一个具有先发优势的云服务提供商,AWS 的市场份额超过了其最接近的三家竞争对手的总和。
AWS 为开发者、数据科学家、机器学习工程师和爱好者提供了一套全面的工具,以帮助他们与人工智能和机器学习进行工作。这些工具包括框架和基础设施组件、机器学习服务、人工智能服务、集成开发环境(IDEs)和 API,以及培训和教程,帮助您在 AWS 提供的不断增长的世界中开始您的旅程。以下是对 AWS 机器学习堆栈的鸟瞰图:

图 6.1 – Amazon ML 栈 – 一系列 AI 和 ML 服务和功能 – 由 Amazon re:Invent 提供
由于这些众多服务的深度和广度,每个服务都至少值得拥有一章,但那样我们就无法满足那些滑稽的截止日期了。因此,为了节省时间和简洁,我们只会关注自动 ML 部分,即 Amazon SageMaker 及其 Autopilot 服务。请参阅 进一步阅读 部分,以获取更多关于 Amazon ML 栈的链接。
SageMaker 是一个完全托管、基于云的 ML 平台,通过启用端到端 ML 工作流程,提供 AI 运营能力,无需比喻性的泪水。在下图中,您将看到用于准备、构建、训练、调整、部署和管理模型的 AWS 端到端 ML 组件。您还将注意到 SageMaker Autopilot 如何在整个范围内提供自动构建和训练模型的能力,以及在整个生命周期中准备、构建和维护这些模型:

图 6.2 – 使用 AWS 的端到端 ML
尽管我们的重点是自动 ML 功能,但探索 Amazon SageMaker 的生态系统仍然值得。其中一项关键服务是 Amazon SageMaker Studio,这是一个基于 Web 的 ML 集成开发环境(IDE),用于准备、构建、部署和运营模型。当提到 SageMaker 时,大多数人首先想到的就是这个 IDE,但您会发现它只是更大生态系统的一部分。
笔记本是数据科学家的瑞士军刀。Amazon SageMaker Studio 笔记本提供了数据科学家所熟知和喜爱的舒适环境,大部分情况下是这样的。Amazon SageMaker Ground Truth 提供训练数据集,而 Amazon 增强 AI (A2I) 则实现了 人机协同 (HITL),需要碳基生命体来审查 ML 预测,尤其是那些置信度分数较低的预测。Amazon SageMaker Experiments 与您之前在其他超大规模云服务提供商中探索的类似,它有助于跟踪数据,使实验的重建和共享成为可能,并为审计目的提供跟踪信息。Amazon SageMaker 内置了各种算法,用于分类、回归、文本分析、主题建模、预测、聚类以及更多用例,如下图所示:

图 6.3 – Amazon SageMaker 内置算法
Amazon SageMaker Debugger 帮助检查参数和数据,而 Amazon SageMaker Model Monitor 则关注模型在生产中的行为。由于数据漂移可能会严重影响模型质量,因此模型监控最近受到了大量关注。在线学习可能存在风险;让 Tay 成为我们的教训。Amazon SageMaker 为人工智能民主化提供的某些功能可以在以下图中看到:
![Figure 6.4 – 不同类型的 Amazon SageMaker 功能 – 由 Amazon re:Invent 提供
![img/Figure_6.4_B16890.jpg]
图 6.4 – 不同类型的 Amazon SageMaker 功能 – 由 Amazon re:Invent 提供
亚马逊 SageMaker 还提供了强化学习、批量转换和弹性推理功能。Amazon SageMaker Neo 实现了“一次训练,到处运行”的能力,并有助于分离训练和推理基础设施。Neo 由 Apache 许可的 Neo-AI-DLR 公共运行时提供支持,支持常见的框架(TensorFlow、MXNet、PyTorch、ONNX 和 XGBoost),甚至声称可以加速它们。最后,我们还有 Amazon SageMaker Autopilot,本书的重点,公民数据科学家可以在此构建、训练和测试机器学习模型,使我们更接近人工智能的民主化。
我们将在本章的后半部分更详细地讨论 SageMaker Autopilot。首先,让我们探索在 AWS SageMaker 中编写一些代码。
AWS ML 入门
在本节中,我们将对 AWS 管理控制台进行操作演示,并逐步指导您如何使用 AWS SageMaker。让我们开始吧。AWS ML 环境相当直观且易于使用:
-
要开始,首先通过在浏览器中访问 aws.amazon.com 打开 AWS 管理控制台。现在,点击 登录到控制台,或者如果您是回头客,请重新登录:![Figure 6.5 – AWS 管理控制台
![img/Figure_6.5_B16890.jpg]
图 6.5 – AWS 管理控制台
-
在 根用户电子邮件地址 字段中输入您的根(账户)用户电子邮件地址以继续:![Figure 6.6 – AWS 管理控制台登录
![img/Figure_6.6_B16890.jpg]
图 6.6 – AWS 管理控制台登录
-
登录成功后,您将被带到以下屏幕,即 AWS 管理控制台:![Figure 6.7 – AWS 管理控制台
![img/Figure_6.7_B16890.jpg]
图 6.7 – AWS 管理控制台
-
AWS 拥有一系列众多不同的服务。在 AWS 管理控制台中,找到服务搜索框,然后输入
sagemaker以找到Amazon SageMaker服务,如以下截图所示,并点击它:![Figure 6.8 – 在 AWS 管理控制台中搜索 SageMaker![img/Figure_6.8_B16890.jpg]
图 6.8 – 在 AWS 管理控制台中搜索 SageMaker
-
这将带您到下面的截图所示的 SageMaker 主页。在这里,您可以了解不同的服务,如地面实况、笔记本、作业处理等:![图 6.9 – Amazon SageMaker 主页
![图片]()
图 6.9 – Amazon SageMaker 主页
AWS 团队投入了大量工作来构建文档、培训视频和合作伙伴培训计划,以便让开发者跟上进度。您可以在章节末尾的 进一步阅读 部分中查看一些这些课程。例如,在这里,当您点击左侧面板顶部的链接时,它将显示有关如何使用 Amazon SageMaker Studio 构建、训练和部署模型的信息。上下文文档,相当不错吧!
![图 6.10 – Amazon SageMaker Studio 主页
![图片]()
图 6.10 – Amazon SageMaker Studio 主页
-
现在,让我们探索 SageMaker Studio,我们将在这里为我们的最爱数据集开发一个分类模型。在 入门 部分,您将创建一个用户名并定义执行 身份和访问管理(IAM)角色。IAM 角色为您提供了细粒度的权限,以确定您可以在 AWS 平台上做什么和不能做什么。点击 执行角色 下拉菜单以选择您打算使用的角色(或创建一个新角色):![图 6.11 – Amazon SageMaker Studio 入门屏幕
![图片]()
图 6.11 – Amazon SageMaker Studio 入门屏幕
-
如果您还没有 IAM 角色,可以创建一个并授予适当的权限,如下面的截图所示。S3 是 AWS 存储机制之一,下面的屏幕允许您创建 IAM 角色以访问 S3 存储桶。这是一个一次性设置过程,除非您计划进行更改:![图 6.12 – Amazon SageMaker Studio IAM 角色创建屏幕
![图片]()
图 6.12 – Amazon SageMaker Studio IAM 角色创建屏幕
-
创建 IAM 角色完成后,您将看到以下成功消息。按 提交 键导航到下一屏幕:![图 6.13 – Amazon SageMaker Studio IAM 角色创建成功
![图片]()
图 6.13 – Amazon SageMaker Studio IAM 角色创建成功
-
一旦创建了角色,您将被带到 SageMaker 仪表板,在那里您将看到可用的服务,如下面的截图所示:![图 6.14 – Amazon SageMaker Studio 仪表板
![图片]()
图 6.14 – Amazon SageMaker Studio 仪表板
-
从这个早期的屏幕,您现在可以导航到 控制面板 来查看您的关联用户并点击 打开工作室,这将最终带您到 SageMaker Studio:![图 6.15 – Amazon SageMaker Studio 仪表板
![图片]()
图 6.15 – Amazon SageMaker Studio 仪表板
以下截图显示了 SageMaker Studio 的外观。它类似于你可能在之前的章节中看到的,以及未来关于超大规模服务器的章节中可能看到的其他在线云 ML IDE。在这里,你可以创建笔记本,构建实验,部署并监控你的 ML 服务:
![图 6.16 – Amazon SageMaker Studio 仪表板
![图片]()
图 6.16 – Amazon SageMaker Studio 仪表板
-
点击 创建笔记本 按钮,你将看到以下屏幕,这将打开 Jupyter Notebook:![图 6.17 – Amazon SageMaker Studio 加载
![图片]()
图 6.17 – Amazon SageMaker Studio 加载
-
一旦你看到以下启动器屏幕,你将能够创建笔记本。在我们的案例中,我们将克隆 GitHub 上的 AWS SageMaker
examples仓库 (GitHub.com/awslabs/amazon-sagemaker-examples):![图 6.18 – Amazon SageMaker 笔记本活动启动器![图片]()
图 6.18 – Amazon SageMaker 笔记本活动启动器
-
点击 克隆仓库 并提供 GitHub 仓库以本地下载,你将看到以下窗口弹出。点击 克隆 以克隆仓库:![图 6.19 – Amazon SageMaker 克隆仓库对话框
![图片]()
图 6.19 – Amazon SageMaker 克隆仓库对话框
-
一旦仓库被克隆,你将能够在 AWS SageMaker 中看到以下树状结构:![图 6.20 – Amazon SageMaker 克隆仓库目录视图
![图片]()
图 6.20 – Amazon SageMaker 克隆仓库目录视图
-
导航到
/aws_sagemaker_studio/getting_started/文件夹并打开xgboost_customer_churn_studio.ipynb笔记本。打开此笔记本时,你需要选择一个首选的 Python 内核来运行它。选择 Python 3 (数据科学) 内核:![图 6.21 – Amazon SageMaker 仓库 – 选择首选内核![图片]()
图 6.21 – Amazon SageMaker 仓库 – 选择首选内核
-
现在你已经选择了内核,你会注意到你仍然无法运行笔记本。为什么?因为你需要一个计算资源!现在是时候选择你想要使用的计算实例了。在我们的案例中,我们选择了
ml.t3.medium通用实例(在撰写本文时每小时费用为 0.05 美元),但你可以选择更大更好的机器以加快你的实验运行速度。定价详情请见此处:aws.amazon.com/sagemaker/pricing/。点击 保存并继续 以继续:![图 6.22 – Amazon SageMaker 仓库 – 选择首选计算实例![图片]()
图 6.22 – Amazon SageMaker 仓库 – 选择首选计算实例
-
可能存在需要更改计算实例类型的情况。在这种情况下,您需要删除之前的实例,因为您的账户可能不允许同时运行多个实例。您可以在以下截图中的链接中查看删除应用程序的方法:
![图 6.23 – Amazon SageMaker 仓库 – 选择首选计算实例]()
图 6.23 – Amazon SageMaker 仓库 – 选择首选计算实例
-
计算资源和内核已识别;现在您已经准备好使用以下截图中的控制工具栏运行此笔记本,并安装 Python 以及其他相关 SDK。这个 Amazon SageMaker Studio 初学者指南是一个很好的起点,因为它会向您介绍 SageMaker Studio 的一些关键功能。这里的关键用例是使用梯度提升树预测移动客户流失,包括数据集的准备和上传到 Amazon S3,使用 Amazon SageMaker XGBoost 算法进行训练,构建 S3 实验,调试,托管和监控。我们将把这个指南作为您的作业:

图 6.24 – Amazon SageMaker Studio 浏览笔记本
在本节中,您已经学习了如何开始使用 AWS SageMaker,并进行了快速浏览。这并不是对 SageMaker 功能的全面总结,这正是 Amazon SageMaker 开发者指南所提供的。您可以从这里下载:docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-dg.pdf。
在下一节中,我们将探讨 AWS SageMaker 的自动化机器学习功能。
AWS SageMaker 自动驾驶仪
如同其名,SageMaker 自动驾驶仪是一个完全托管系统,提供自动机器学习解决方案。其目标,就像任何自动化机器学习解决方案一样,是尽可能地将大部分冗余和耗时的工作转移到机器上,而人类可以从事更高层次的认知任务。在以下图中,您可以查看 SageMaker 自动驾驶仪覆盖的机器学习生命周期部分:

图 6.25 – Amazon SageMaker 的生命周期
作为 SageMaker 生态系统的一部分,SageMaker Autopilot 被赋予成为自动化机器学习引擎的任务。以下图中定义了一个典型的自动化机器学习用户流程,其中用户分析表格数据,选择目标预测列,然后让 Autopilot 执行其寻找正确算法的魔法。这里的秘诀是底层贝叶斯优化器,如 Das 等人在其论文《Amazon SageMaker Autopilot:大规模白盒 AutoML 解决方案》中定义的那样(www.amazon.science/publications/amazon-sagemaker-autopilot-a-white-box-automl-solution-at-scale):

图 6.26 – Amazon SageMaker Autopilot 生命周期
自动模型创建阶段完成后,它为模型笔记本提供了全面的可见性。以下图中的工作流程显示了机器学习管道的作业处理。提供结构化数据集和目标列,AWS SageMaker Autopilot 将数据分割为训练和验证折,通过管道执行转换数据,审查模型列表,并按质量指标对它们进行排名:

图 6.22 – Amazon SageMaker Autopilot – 内部结构
贝叶斯优化器和基于候选笔记本的多次试验是此超参数优化的根本。以下内部图显示了如何从一个候选笔记本产生多个试验,以及更多的模型训练和调整实例。这个过程最终生成了一组候选模型,可以根据模型准确率、延迟和其他权衡进行选择和排名。
以下图中可以看到权衡。模型 #1 和 #2 之间的准确率差异为 2%;然而,延迟,即模型响应所需的时间,增加了 250 毫秒,这是一个相当大的变化:

图 6.28 – 自动驾驶作业准确率与延迟权衡 – 感谢 Amazon re:Invent
SageMaker Autopilot 发布最终模型,即显示超参数、算法和相关指标的管道。这个演示有助于从 MLOps 角度使这些模型透明化,并创建高质量、可编辑的机器学习模型,这些模型具有良好的可扩展性。这些模型可以在 SageMaker 生态系统中发布和监控漂移,并且可以随意选择和部署替代模型。这些功能是 AWS 机器学习生态系统的前沿,使开发者能够为客户构建和部署有价值的解决方案。
AWS JumpStart
2020 年 12 月,亚马逊宣布 SageMaker JumpStart 作为一个功能,可以访问预构建模型库,也称为模型动物园,以加速模型开发。作为 Amazon SageMaker 的一部分集成,JumpStart 提供了用于预测性维护、计算机视觉、自动驾驶、欺诈检测、信用风险预测、从文档中提取和分析数据的 OCR、客户流失预测以及个性化推荐的预构建模板。
JumpStart 为开发者提供了一个绝佳的起点,让他们可以使用这些现成的模板来快速启动(寓意如此)他们的开发。这些加速器和入门套件可在 GitHub 上找到,github.com/awslabs/,并提供使用 Amazon SageMaker 模型开发和部署机制的食谱和最佳实践。
关于使用 AWS JumpStart 的更多详细信息,请参阅此处。docs.aws.amazon.com/sagemaker/latest/dg/studio-jumpstart.html
摘要
在本章中,您了解了 AWS ML 堆栈以及如何开始使用 AWS SageMaker 和笔记本开发。您还熟悉了 SageMaker Autopilot 及其自动 ML 工作流程功能。我们为您提供了内置算法、SageMaker ML 生命周期以及 SageMaker 自动 ML 使用的算法和技术的概述。本介绍为您提供了进一步探索和学习 AWS ML 堆栈和 SageMaker 自动 ML 生命周期的背景知识。
在下一章中,我们将实际使用 SageMaker Autopilot 的一些功能来运行分类、回归和时间序列分析。
进一步阅读
关于以下主题的更多信息,您可以参考以下链接:
-
Piali Das 等人撰写的《Amazon SageMaker Autopilot:大规模的白盒 AutoML 解决方案》:
www.amazon.science/publications/amazon-sagemaker-autopilot-a-white-box-automl-solution-at-scale -
使用 Amazon SageMaker 构建、训练和部署 ML 模型:
aws.amazon.com/getting-started/hands-on/build-train-deploy-machine-learning-model-sagemaker/ -
Amazon SageMaker Studio - 使用 Amazon SageMaker AutoPilot 进行 AutoML(第一部分):
www.youtube.com/watch?v=qMEtqJPhqpA -
SageMaker Studio - 使用 Amazon SageMaker AutoPilot 进行 AutoML(第二部分):
www.youtube.com/watch?v=qMEtqJPhqpA&ab_channel=JulienSimon -
SageMaker Studio - 使用 Amazon SageMaker AutoPilot 进行 AutoML(第三部分):
www.youtube.com/watch?v=KZSTsWrDGXs&ab_channel=JulienSimon -
SageMaker Studio - 使用 Amazon SageMaker AutoPilot 进行 AutoML (第四部分):
www.youtube.com/watch?v=vRHyX3kDstI&ab_channel=JulienSimon
第七章:使用 Amazon SageMaker Autopilot 进行自动机器学习
"机器学习的圣杯之一就是自动化越来越多的特征工程过程。"
– Pedro Domingos
"自动机器学习,自从切片面包以来最好的事情!"
– 匿名
自动化机器学习(AutoML)通过超规模商(即云服务提供商)——有可能将 AI 民主化推广到大众。在前一章中,您在 SageMaker 中创建了一个机器学习(ML)工作流程,并学习了 SageMaker Autopilot 的内部机制。
在本章中,我们将探讨几个示例,解释如何以可视化和笔记本格式使用 Amazon SageMaker Autopilot。
在本章中,我们将涵盖以下主题:
-
创建一个 Amazon SageMaker Autopilot 限制性实验
-
创建一个 AutoML 实验
-
运行 SageMaker Autopilot 实验并部署模型
-
调用和测试 SageMaker Autopilot 模型
-
从笔记本中构建和运行 SageMaker Autopilot 实验
让我们开始吧!
技术要求
您需要访问您机器上的 Amazon SageMaker Studio 实例。
创建一个 Amazon SageMaker Autopilot 限制性实验
让我们通过 SageMaker Autopilot 来获得 AutoML 的实际操作介绍。我们将下载并应用 AutoML 到一个开源数据集。让我们开始吧!
-
从 Amazon SageMaker Studio 开始,通过点击
bank-additional-full.csv以及所有示例(完整数据),按日期排序(从 2008 年 5 月到 2010 年 11 月) -
bank-additional.csv,从bank-additional-full.csv中随机选择了 10%(4,119 个)的示例 -
bank-additional-names.txt,其中包含前一个屏幕截图中所描述的字段信息如以下屏幕截图所示,一旦将 CSV 文件加载到 pandas DataFrame 中,您就可以使用 pandas 查看文件内容:

图 7.6 – Amazon SageMaker Studio Jupyter Notebook – 在 pandas DataFrame 中加载数据集并进行可视化
使用 NumPy 将数据集分割为训练和测试部分。在这种情况下,我们将使用 95%的数据进行训练,5%的数据进行测试,如下面的屏幕截图所示。您将把数据存储在两个文件中:一个用于训练,另一个用于测试。

图 7.7 - Amazon SageMaker Studio Jupyter Notebook – 将数据集分割为训练/测试并保存文件到 S3
使用 SageMaker API,创建一个会话并将我们在上一步创建的训练数据上传到 S3:

图 7.8 – Amazon SageMaker Studio Jupyter Notebook – 将数据集上传到 S3
在上一章中,我们学习了如何使用笔记本创建一个 AutoML 实验。现在,让我们通过 SageMaker UI 创建一个实验。在左侧面板中点击实验图标,通过提供实验名称和 S3 存储桶地址来创建一个实验,如下截图所示:

图 7.9 – Amazon SageMaker Studio UI – 创建实验
-
将目标属性设置为
y。目标属性在数据集中描述为输出变量(期望的目标):y– 客户是否订阅了定期存款?(二进制:“是”,“否”):![图 7.10 – Amazon SageMaker Studio UI – 创建实验![图片]()
图 7.10 – Amazon SageMaker Studio UI – 创建实验
如前述截图所示,您可以自己定义 ML 问题——在这种情况下是二分类——或者让 SageMaker AutoML 引擎自行决定。在这种情况下,我们将将其保留为自动,您将看到 SageMaker 将其识别为二分类问题。
-
您可以选择运行完整实验——即数据分析、特征工程和模型调优——或者创建一个笔记本来查看候选定义。我们将使用这个数据集来演示每种方法的好处:![图 7.11 – Amazon SageMaker Studio UI – 完整实验与试点 对于候选定义
![图片]()
图 7.11 – Amazon SageMaker Studio UI – 完整实验与试点候选定义
最后,您还可以设置一些高级可选参数,例如自定义 SageMaker 角色、加密密钥(如果您的 S3 数据已加密)和 VPC 信息,如果您正在使用虚拟私有云:
![图 7.12 – Amazon SageMaker Studio UI – 高级设置
![图片]()
图 7.12 – Amazon SageMaker Studio UI – 高级设置
这样,我们已经输入了所有必要的信息,可以运行实验。提交作业后,您将看到以下屏幕,其中包含两个步骤(数据分析候选定义生成)。这是因为我们选择不运行整个实验;我们只选择生成候选定义:
![图 7.13 – Amazon SageMaker Studio 实验创建 UI – 分析数据屏幕
![图片]()
图 7.13 – Amazon SageMaker Studio 实验创建 UI – 分析数据屏幕
-
一旦这个部分实验完成,你将看到以下屏幕,它显示了完成的作业信息、试验和作业配置文件。由于我们在此情况下只生成了候选者,实验没有花费太多时间。打开候选生成笔记本和打开数据探索笔记本按钮位于页面右上角。这两个按钮都将打开相应的笔记本:

图 7.14 – Amazon SageMaker AutoML 实验完成视图
SageMaker Autopilot 候选定义笔记本帮助数据科学家更深入地了解数据集、其特征、其分类问题和训练模型的指标质量。这本质上是对 SageMaker Autopilot 管道背后发生的事情的深入了解,并给数据科学家一个机会手动运行并根据自己的需要调整或修改:

图 7.15 – Amazon SageMaker Autopilot 候选定义笔记本
候选定义笔记本是一个相当大的文件,其中包含一个目录,如前一张截图所示。同样,数据探索笔记本为您提供了对数据集的洞察:

图 7.16 – Amazon SageMaker Autopilot 数据探索笔记本
这些洞察包括数据科学家通常期望的内容——数据科学家会寻找特征及其数据类型、范围、平均值、中位数、描述性统计、缺失数据等。即使你对通用的 AutoML 功能持怀疑态度,这也是数据科学家探索数据集及其相应候选者的绝佳地方:

图 7.17 – Amazon SageMaker Autopilot 数据探索笔记本 – 描述性统计
Amazon SageMaker Autopilot 数据探索和候选定义笔记本为用户提供了一个透明的视角来分析数据和进行实验。作为笔记本,这些是可执行的代码片段,你可以看到预处理程序、超参数、算法、超参数的范围以及所有用于识别最佳候选者的预定预处理步骤:
在下一节中,我们将构建并运行一个完整的 Autopilot 实验。
创建一个 AutoML 实验
由于 Autopilot 数据探索和候选定义笔记本提供了数据集的深入概述,完整的实验实际上运行了这些步骤,并根据这些笔记本中描述的步骤为你提供一个最终调优模型。现在,让我们使用之前查看过的相同 UI 创建一个完整实验:
- 从 Amazon SageMaker Studio 开始一个数据科学实验。在左侧面板中单击实验图标,通过提供实验名称和 S3 存储桶地址来创建实验,如图下屏幕截图所示:
![Figure 7.18 – Amazon SageMaker Autopilot – 创建实验
![img/Figure_7.18_B16890.jpg]
图 7.18 – Amazon SageMaker Autopilot – 创建实验
在之前的创建 Amazon SageMaker Autopilot 限制性实验部分中,我们进行了限制性运行。在本节中,我们将使用完整实验功能:
![Figure 7.19 – Amazon SageMaker Autopilot – 创建完整实验
![img/Figure_7.19_B16890.jpg]
图 7.19 – Amazon SageMaker Autopilot – 创建完整实验
当你开始实验时,它的行为将非常类似于我们之前的候选实验,除了这个完整的实验将花费更长的时间,并且将构建和执行整个管道。在此期间,当你等待结果时,你会看到以下屏幕:
![img/Figure_7.20_B16890.jpg]
图 7.20 – Amazon SageMaker Autopilot – 运行完整实验
在实验运行期间,你可以通过查看单个实验并从试验选项卡中获得有价值的见解来跟踪其进度。你也许还会注意到,此处的问题类型被正确分类为二元分类:
![Figure 7.21 – Amazon SageMaker Autopilot – 运行完整实验
![img/Figure_7.21_B16890.jpg]
图 7.21 – Amazon SageMaker Autopilot – 运行完整实验
以下屏幕截图显示的实验详细摘要显示了所使用的推理容器、模型数据 URI 以及所使用的环境,以及它们各自的Amazon 资源名称(ARN),这些名称唯一标识 AWS 资源:
![Figure 7.22 – Amazon SageMaker Autopilot 推理容器信息
![img/Figure_7.22_B16890.jpg]
图 7.22 – Amazon SageMaker Autopilot 推理容器信息
试验选项卡显示了运行的不同试验和调优作业,以及目标函数(F1 分数),它展示了其随时间如何改进:
![Figure 7.23 – Amazon SageMaker Autopilot 实验运行试验 – 最佳模型
![img/Figure_7.23_B16890.jpg]
图 7.23 – Amazon SageMaker Autopilot 实验运行试验 – 最佳模型
您在前面的章节中已经看到了这个具体的迭代;这又是一次似曾相识。我们已经看到了这个过程在 OSS 工具中的展开,但在这里它是以更组织化的端到端方式进行。您有一个完整的管道集成在一个地方;也就是说,策略、数据分析、特征工程、模型调优和超参数优化过程。您可以在以下截图中查看调优作业的详细信息:

图 7.24 – Amazon SageMaker Autopilot 调优作业详情显示贝叶斯策略和资源信息
现在我们已经运行了整个实验并且过程已经完成,让我们部署最佳模型。
运行 SageMaker Autopilot 实验和部署模型
Amazon SageMaker Studio 使我们能够轻松地构建、训练和部署机器学习模型;也就是说,它使数据科学生命周期得以实现。为了部署我们在上一节中构建的模型,我们需要设置某些参数。为此,您必须提供端点名称、实例类型、实例数量(计数)以及是否需要捕获请求和响应信息。让我们开始吧:
-
如果您选择数据捕获选项,您需要一个 S3 存储桶来存储,如下截图所示:![图 7.25 – Amazon SageMaker 端点部署
![图片]()
图 7.25 – Amazon SageMaker 端点部署
-
点击部署后,您将看到以下屏幕,显示新端点创建的进度:![图 7.26 – Amazon SageMaker 端点部署进行中
![图片]()
图 7.26 – Amazon SageMaker 端点部署进行中
部署完成后,您将看到以下 InService 状态:
![图 7.27 – Amazon SageMaker 端点部署完成
![图片]()
图 7.27 – Amazon SageMaker 端点部署完成
-
模型端点是确保模型质量的重要资源。通过启用模型监控,您可以检测数据漂移并监控任何生产中模型的品质。这种对模型质量的主动检测有助于确保您的机器学习服务在生产中不会提供错误的结果。您可以通过点击“启用监控”按钮来激活 Amazon SageMaker 模型监控:

图 7.28 – Amazon SageMaker Autopilot 模型监控启动屏幕
模型监控是机器学习生命周期的一个重要领域。如下截图所示,Amazon SageMaker 模型监控通过捕获数据、创建基线、安排监控作业,并在出现异常和违规情况时允许专家解释结果来解决这个问题:

图 7.29 – Amazon SageMaker Autopilot 模型监控启用笔记本
现在我们已经创建并部署了模型,是时候通过调用它来测试它了。这种通过网络服务公开的机器学习模型的调用操作通常被称为推理或评估。
调用模型
使用 Amazon SageMaker Autopilot 构建和部署的模型,我们可以对其进行测试。还记得我们之前保存的测试数据吗?现在,是时候使用它了。在这里,你可以看到我们正在迭代automl-test.csv文件,并通过传递数据行作为请求来调用端点:

图 7.30 – Amazon SageMaker Autopilot – 从笔记本中调用模型
请求包含关于申请贷款的人的信息。我们已经从请求中移除了结果(标签),然后按照我们的意愿进行比较,以便打印出值。你可以在前面的截图中看到请求、标签和来自网络服务的相应响应。你可以使用这些信息来计算服务结果的准确性;它们相当准确:

图 7.31 – Amazon SageMaker Autopilot – 模型调用响应
现在你已经学会了如何在 Amazon SageMaker Autopilot UI 中设置 AutoML 实验,在下一节中,我们将使用笔记本来完成同样的操作。
从笔记本中构建和运行 SageMaker Autopilot 实验
客户流失对企业来说是一个真正的问题,在这个例子中,我们将利用我们在 Amazon SageMaker Autopilot 中完成 AutoML 的知识,使用笔记本构建一个客户流失预测实验。在这个实验中,我们将使用由 Daniel T. Larose 在其书籍《Discovering Knowledge in Data》中提供的美国移动客户公开数据集。为了展示完整的流程,示例笔记本通过执行特征工程、构建模型管道(包括任何最优超参数)以及部署模型来执行 Autopilot 实验。
UI/API/CLI 范式的发展帮助我们能够在多种格式中利用相同的界面;在这种情况下,我们将直接从笔记本中利用 Amazon SageMaker Autopilot 的能力。让我们开始吧:
-
打开
autopilot_customer_churn笔记本,位于amazon-sagemaker-examples/autopilot文件夹中,如下截图所示:![图 7.32 – Amazon SageMaker Autopilot – 客户流失预测 Autopilot 笔记本]()
图 7.32 – Amazon SageMaker Autopilot – 客户流失预测 Autopilot 笔记本
-
通过指定 S3 存储桶和身份和访问管理(IAM)角色来运行设置,就像我们在之前的创建 AutoML 实验部分所做的那样。下载数据集,如下截图所示:
![图 7.33 – Amazon SageMaker Autopilot – 运行笔记本以设置默认存储桶并创建会话]()
图 7.33 – Amazon SageMaker Autopilot – 运行笔记本以设置默认存储桶并创建会话
-
在这一点上,您需要安装先决条件,并下载数据集,如下截图所示:
![图 7.34 – Amazon SageMaker Autopilot – 下载数据集和解压文件]()
图 7.34 – Amazon SageMaker Autopilot – 下载数据集和解压文件
-
一旦数据集下载并解压,您就可以将其添加到 pandas DataFrame 中并查看。它显示了有关客户的信息,例如他们的呼叫属性,如下截图所示:
![图 7.35 – Amazon SageMaker 笔记本显示数据集信息]()
图 7.35 – Amazon SageMaker 笔记本显示数据集信息
-
我们现在可以采样数据集作为测试和训练存储桶,然后将这些文件上传到 S3 以供将来使用。一旦上传,您将获得 S3 存储桶的名称,如下截图所示:
![图 7.36 – Amazon SageMaker Autopilot – 为测试和训练采样数据集并将文件上传到 S3]()
图 7.36 – Amazon SageMaker Autopilot – 为测试和训练采样数据集并将文件上传到 S3
到目前为止,我们所做的一切都是传统的笔记本工作。现在,我们将设置 Autopilot 作业。
-
让我们定义配置,如下截图所示:
![图 7.37 – Amazon SageMaker Autopilot – 配置 Autopilot 作业配置]()
图 7.37 – Amazon SageMaker Autopilot – 配置 Autopilot 作业配置
-
现在,让我们通过调用
create_auto_ml_jobAPI 调用启动 SageMaker Autopilot 作业,如下所示:![图 7.38 – Amazon SageMaker Autopilot – 配置 Autopilot 作业]()
图 7.38 – Amazon SageMaker Autopilot – 配置 Autopilot 作业
作业以多个试验运行,包括每个实验的组件,如下截图所示:
![图 7.39 – Amazon SageMaker Autopilot – Autopilot 作业笔记本中的试验组件]()
图 7.39 – Amazon SageMaker Autopilot – Autopilot 作业笔记本中的试验组件
在跟踪 Amazon SageMaker Autopilot 作业进度时,您可以打印其状态以及任何延迟,如下截图所示。然而,为了以有意义的方式直观地查看单个试验运行的详细信息,您可以使用用户界面:
![图 7.40 – Amazon SageMaker Autopilot – Autopilot 作业笔记本中的试验组件
![图片]()
图 7.40 – Amazon SageMaker Autopilot – Autopilot 作业笔记本中的试验组件
-
一旦试验中的特征工程和模型调优作业完成,你可以运行
describe_auto_ml_job来获取最佳候选信息。然后,你可以遍历best_candidate对象来获取底层分数和指标信息,如下面的截图所示:

图 7.41 – Amazon SageMaker Autopilot – Autopilot 作业笔记本中的试验组件
作业完成后,你将看到候选模型、最终指标(在本例中为 F1 分数)以及任何相关值:

图 7.42 – Amazon SageMaker Autopilot 作业结果
我们将在下一节中部署和调用具有 93% F1 分数的最佳候选模型。
托管和调用模型
与我们之前使用实验 UI 调用构建的模型类似,我们现在将在笔记本中托管和调用我们在笔记本中构建的模型。不同之处在于,在前一个实例中,我们是低代码,而在这里我们使用代码构建:
-
要托管服务,你需要创建一个模型对象、端点配置,最终是一个端点。之前这是通过 UI 完成的,但在这里,我们将使用 Amazon SageMaker Python 实例来完成同样的工作。这可以在下面的截图中看到:![图 7.43 – Amazon SageMaker 笔记本 – 托管模型
![图片]()
图 7.43 – Amazon SageMaker 笔记本 – 托管模型
get_waiter方法是 Boto3 的一部分,它是 AWS 的 Python SDK。与其他等待器一样,它会轮询直到达到成功状态。通常在 60 次失败的检查后返回错误。你可以通过查看它的 API 文档来了解这些方法,该文档可以在以下位置找到:boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_endpoint。现在端点已经创建,模型已经托管,我们可以调用该服务。为了评估模型,你需要创建一个预测实例,并传递端点信息和预测参数。我们不是逐行调用端点,而是通过传递整个测试数据 CSV 文件来进行批量预测,并将结果与真实值进行比较。你可以在下面的截图中看到准确率数字:
![图 7.44 – Amazon SageMaker 模型评估准确性
![图片]()
图 7.44 – Amazon SageMaker 模型评估准确性
-
一旦你完成了端点的测试,我们必须进行清理。在云环境中,你必须自己清理,所以请将此作为优先事项清单项。如果你不这样做,你不会喜欢服务器运行留下的账单。无论是虚拟的还是实体的,所有这些都会累积起来。
当你在清理 UI 时,关闭并删除计算实例和端点。由于我们正在进行手动清理,你必须删除端点、端点配置和模型:

图 7.45 – 使用结果响应代码的 Amazon SageMaker Autopilot 清理
尽管这些示例已经向你展示了 AWS AutoML 如何使你能够执行特征工程、模型调整和超参数优化,但你不必局限于 AWS 提供的算法。你可以将你自己的数据处理代码带到 SageMaker Autopilot,如github.com/aws/amazon-sagemaker-examples/blob/master/autopilot/custom-feature-selection/Feature_selection_autopilot.ipynb所示。
摘要
从零开始构建 AutoML 系统以民主化人工智能是一项相当大的努力。因此,云超大规模提供商充当了推动者和加速器,以启动这一旅程。在本章中,你学习了如何通过笔记本和实验用户界面使用 Amazon SageMaker Autopilot。你还接触到了更大的 AWS 机器学习生态系统和 SageMaker 的功能。
在下一章中,我们将研究另一个主要的云计算平台,即 Google Cloud Platform,以及它提供的 AutoML 服务。祝编码愉快!
进一步阅读
关于本章涵盖的主题的更多信息,请参阅以下链接和资源:
-
《在 AWS 上掌握机器学习:使用 SageMaker、Apache Spark 和 TensorFlow 的高级机器学习》,作者 Dr. Saket S.R. Mengle、Maximo Gurmendez,Packt Publishing:
www.amazon.com/Mastering-Machine-Learning-AWS-TensorFlow/dp/1789349796 -
《学习 Amazon SageMaker:为开发人员和数据科学家构建、训练和部署机器学习模型的指南》,作者 Julien Simon 和 Francesco Pochetti,Packt Publishing:
www.amazon.com/Learn-Amazon-SageMaker-developers-scientists/dp/180020891X
第八章:使用 Google Cloud Platform 进行机器学习
“我一直坚信,要让人工智能工作,唯一的方法是以类似于人脑的方式进行计算。这就是我一直追求的目标。我们在进步,尽管我们仍然有很多关于大脑实际工作方式的知识需要学习。”
– 几何夫·辛顿
在上一章中,你被介绍了主要的超大规模云服务提供商,即亚马逊网络服务(AWS)平台,AWS SageMaker,以及其自动化的机器学习(ML)能力,即 AWS SageMaker Autopilot。
Gartner 在其 2020 年云基础设施和平台服务魔力象限报告中将 Google 评为领导者。Google 的计算服务提供了一套计算技术、工具和服务,以支持使用与 Google 自身产品和服务相同基础设施的企业。在本章中,我们将回顾 Google 的计算服务及其人工智能(AI)和 ML 产品,特别是云 AutoML Tables 的自动化 ML 能力。
在本章中,我们将涵盖以下主题:
-
开始使用 Google Cloud Platform 服务
-
Google Cloud Platform 上的 AI 和 ML
-
Google Cloud AI 平台和 AI Hub
-
开始使用 Google Cloud AI 平台
-
使用 Google Cloud 进行自动化 ML
开始使用 Google Cloud Platform 服务
与其他超大规模云服务提供商和云计算平台一样,Google Cloud 的计算服务也提供了一系列通用计算、分析、存储和安全服务。除了众所周知的 App Engine、Cloud Run、Compute Engine、Cloud Functions、存储、安全、网络和物联网服务外,Google Cloud Platform(GCP)产品页面列出了 100 多个产品。你可以通过输入console.cloud.google.com来访问 GCP 控制台,如下面的图所示:
![Figure 8.1 – GCP 控制台
![img/Figure_8.1_B16890.jpg]
图 8.1 – GCP 控制台
关键产品和提供的服务被分为计算、存储、数据库、网络、运营、大数据、AI 和通用开发工具等类别。GCP 服务摘要(cloud.google.com/terms/services)提供了 GCP 所有服务和提供的最新列表。这些服务的范围和广度非常巨大,超出了本书的范围。然而,为了介绍,以下是一个简要概述:
-
计算:在这个类别中,GCP 提供 App Engine、Compute Engine、Kubernetes Engine、Cloud Functions、Cloud Run 和 VMware Engine 等服务。这些服务涵盖了广泛的计算能力,包括 CPU、GPU 或云 TPU 等不同模式。
-
存储: 通过 Cloud Storage、Cloud Filestore、Persistent Disk、Cloud Storage for Firebase 和高级数据传输功能,GCP 实现了与其他云存储提供商的功能对等。这些存储库可以根据需要从 Compute Engine 访问。
-
数据库: 在数据库领域,GCP 提供的产品包括 Cloud Bigtable、Datastore、Firestore(一个 NoSQL 文档数据库)、Memorystore(用于 Redis 和 Memcached)、Cloud Spanner(一个关系型数据库)和 Cloud SQL。凭借庞大的市场提供的产品,您可以通过 Cloud SQL 在 Compute Engine 上迁移和运行 Microsoft SQL Server。GCP Cloud SQL 提供的产品有助于在 GCP 上迁移、维护、管理和管理关系型数据库,如 MySQL、PostgreSQL 和 SQL Server。
-
网络: GCP 的网络服务与其他任何超大规模云服务提供商相当。它们流行的网络服务包括 Cloud Load Balancing、Cloud DNS、Cloud VPN(虚拟私有云)、Cloud CDN(内容分发网络)、Cloud Router、Cloud Armor(策略框架)、Cloud NAT(网络地址转换)、Service Directory、Traffic Director 和 Virtual Private Cloud。GCP 提供的网络服务提供混合连接、网络安全和智能服务。
-
运维: 在运维领域,GCP 并不逊色。无论是监控、调试、错误报告、日志记录、性能分析还是跟踪,Cloud Debugger、Cloud Logging、Cloud Monitoring、Cloud Profiler 和 Cloud Trace 等工具都提供用于正常运行时间检查的仪表板和警报,确保您的系统可靠运行。
-
开发者工具: 这些工具包括 Artifact Registry(用于管理容器)、Cloud SDK、Container Registry、Cloud Build(用于与 GitHub 和 Bitbucket 集成进行 CI/CD,创建如 Docker 容器或 Java 归档等工件)、Cloud Source Repositories、Firebase Test Lab(移动应用测试)和 Test Lab。
其他工具包括用于构建管理的 Cloud Build、Cloud Tasks、Container Registry、Artifact Registry、Cloud Scheduler、Deployment Manager、API Gateway、Endpoints、Identity Platform、Source Repositories、Workflows 和 Private Catalog。
-
数据分析: GCP 提供的产品包括托管数据分析服务,如 BigQuery,以及托管工作流程编排服务,包括 Cloud Composer、Cloud Data Fusion(集成服务)、Dataflow(数据处理管道)、Datalab(探索性数据分析(EDA)和可视化)、Dataproc(托管 Spark 和 Hadoop)、Pub/Sub(异步消息)、Data Catalog(元数据管理)和 Cloud Life Sciences(用于处理生命科学数据)。
-
API 管理服务,包括完整的 API 管理生命周期,由 Apigee 提供。其他工具包括用于混合和多云管理的 Cloud Endpoints 和 Anthos 产品。Google Kubernetes Engine(GKE)是开源容器调度器,而 Connect 和 Hub 用于管理客户注册集群上的功能和服务。
-
迁移和数据传输:迁移工具包括 BigQuery 数据传输服务,它有助于将数据从 HTTP/S 可达位置传输,包括 亚马逊简单存储服务(Amazon S3)和谷歌云产品。传输设备是一种使用硬件和软件将数据传输到 GCP 的解决方案。
-
安全和身份:这里提供的服务包括空间、访问透明度、政府保证工作负载、二进制授权、证书授权服务、云资产库存、云数据丢失预防、云外部密钥管理器(Cloud EKM)、云硬件安全模块(Cloud HSM)、云密钥管理服务、事件威胁检测、安全命令中心、VPC 服务控制、秘密管理器和用于漏洞扫描的网络安全扫描器。
-
*reCAPTCHA和 Web 风险 API。 -
无服务器计算:在无服务器计算领域,GCP 提供云运行(无状态容器)、云函数、云函数(Firebase)、云调度器和云任务(用于分布式任务管理)。还有作为完全托管服务提供的 物联网(IoT)核心。
-
管理工具:这些工具包括云控制台应用(原生移动应用)、云部署管理器、云壳和推荐器(用于推荐和预测使用)。还有作为基础平台构建的服务基础设施组件,包括服务管理 API、服务消费者管理 API 和服务控制 API。
GCP 提供了各种合作伙伴解决方案和垂直服务。在医疗保健和生命科学领域的垂直服务包括云医疗保健,而对于媒体和游戏行业,GCP 提供游戏服务器。GCP 高级软件和合作伙伴解决方案包括 Redis Enterprise、Confluent 上的 Apache Kafka、DataStax Astra、Elasticsearch 服务、MongoDB Atlas 和云卷。
这是对 GCP 在信息系统不同类别中提供的产品的一个简要列举。在下一节中,我们将讨论 GCP 提供的 AI 和 ML 服务。
GCP 上的 AI 和 ML
在早期以 AI 为先的公司中,谷歌在构建和维护高级 AI 平台、加速器和 AI 构建块方面具有先发优势。谷歌云 AI 平台是一个高度综合的基于云的认知计算产品,您可以在其中构建模型和笔记本,执行数据标注,创建 ML 作业和管道,并访问 AI Hub:

图 8.2 – Google Cloud AI 平台功能
AI 平台和加速器包括构建 ML 管道、部署等功能。它包含数据标注能力、平台笔记本、神经架构搜索、训练和预测功能。
自动化机器学习也是关键构建块之一,包括 AutoML 自然语言、AutoML 表格、AutoML 翻译、AutoML 视频、AutoML 视觉和推荐 AI。其他 AI 产品还包括 Cloud Natural Language API、Cloud Translation、Cloud Vision、Dialogflow(提供基础版和客户体验版)、Document AI、媒体翻译 API、语音转文本和文本转语音服务以及视频智能 API。
如下图中所示,您可以通过console.cloud.google.com/ai-platform/dashboard访问 AI 平台:

图 8.3 – AI 平台的主屏幕
作为开发者的一个一站式商店,AI 平台充当一个门户,从这里您可以导航到其他区域进行数据标注、自然语言处理、推荐、翻译和其他功能。自动化机器学习的重点领域包括视觉、语言、对话和结构化数据:

图 8.4 – 包括 AutoML 在内的 AI 平台组件
为了本书的目的,我们将专注于结构化数据中的 AutoML 功能,特别是 AutoML 表格。
Google Cloud AI 平台和 AI Hub
作为更大 AI 平台服务的一部分,Google Cloud AI Hub 是所有 AI 相关事物的一站式商店——主页上甚至也这样宣称。AI Hub 在撰写本文时处于测试阶段。然而,这不应该阻止你尝试其惊人的单点部署功能。AI Hub 和 AI 平台可能会让人困惑;区别在于 GCP 如何定义问题。AI Hub 专注于企业级共享能力,以实现私有协作和托管,而 AI 平台是一个更大的 AI 生态系统,包括笔记本、作业和平台等。这并不是说这些能力没有重叠,GCP 营销团队可能会有一天提出一个连贯的战略——但在此之前,这种双重性仍在继续。
以下截图显示了 AI Hub 主页。您可以通过点击 AI 平台页面上的 AI Hub 链接console.cloud.google.com/ai-platform/dashboard或直接在浏览器中输入aihub.cloud.google.com/来导航到这个页面:

图 8.5 – AI Hub 的主屏幕
AI Hub 主页以最简单的方式阐述其问题陈述。它为你提供入门套件、关于机器学习用例的最新新闻、前沿机器学习技术和教程。在这里,你可以构建 Kubeflow 管道和机器学习容器,启动虚拟机 (VM) 映像,使用训练好的模型,探索和分享他人构建的食谱,所有这些都在一个地方:

图 8.6 – AI Hub 的主屏幕,涵盖协作、学习、构建和分享
Google Cloud AI Hub 旨在提供对世界上最强大的算法的全面理解,以及如何利用 Google DeepMind 的前沿人工智能研究来优化它们。你可能还记得 Google DeepMind,它在 AlphaGo 中,DeepMind 团队试图教会一个 AI “学习”,最终能够首次击败人类围棋选手。同一家公司还提供了关于时间序列预测、生成对抗网络、计算机视觉、文本分析和自动化机器学习等领域的尖端研究和可用模型,所有这些都可以作为 AI Hub 的一部分使用。
你可以在以下屏幕截图中看到 AI Hub 中列出的一些产品:

图 8.7 – 使用预构建模型和探索 DeepMind 的新研究
在对 AI Hub 和 AI 平台进行初步介绍之后,让我们深入了解如何使用 Cloud AI 平台制作一个简单的笔记本,这是一个你非常熟悉的工具。
开始使用 Google Cloud AI 平台
你可以使用 Google Cloud AI 平台做一些事情,包括创建笔记本和 Kubeflow 管道,或者启动预安装的虚拟机 (VM)。Kubeflow 是一个用于 Kubernetes 的机器学习框架,它是一个易于学习的流程管理系统,在构建机器学习管道时表现出色。这可以在以下图所示的开始使用 Cloud AI 平台主页上看到:

图 8.8 – 开始使用 Cloud AI 平台
为了开始使用 AI 平台笔记本,导航到 cloud.google.com/ai-platform-notebooks,在那里你会看到如图 8.9 所示的屏幕。
这是构建 AI 平台笔记本的起点。点击进入控制台按钮,导航到如图所示的平台控制台:

图 8.9 – AI 平台笔记本页面
或者,你可以在 AI 平台主页的左侧面板中点击笔记本链接,如图所示:

图 8.10 – 开始使用 Google Cloud AI 平台
任何这些操作都会带你到笔记本实例页面,如下面的图所示。
现在,要创建一个笔记本,你需要创建一个新的实例,然后可以根据你的需求进行定制。你可以选择特定的语言(Python 2 或 3)和框架(TensorFlow 或 PyTorch 等),如下面的图所示。为了本次演示的目的,我们将创建一个简单的 Python 笔记本。从下面的图中所示的下拉菜单中选择Python 2 和 3选项,然后点击下一步:
![Figure 8.11 – 在 AI 平台上创建笔记本实例
![img/Figure_8.11_B16890.jpg]
图 8.11 – 在 AI 平台上创建笔记本实例
现在你会被要求选择笔记本实例的参数。这包括你希望部署笔记本的区域和区域。通常,你会选择离你最近的一个。接下来是操作系统和环境选项。在我们的案例中,我们将选择Debian Linux 发行版和 Intel 处理器,实际上,这对于打印 Hello World 消息非常有效。你将在屏幕上看到如下环境信息:
![Figure 8.12 – 创建 AI 平台笔记本实例 – 设置环境
![img/Figure_8.12_B16890.jpg]
图 8.12 – 创建 AI 平台笔记本实例 – 设置环境
一旦你选择了环境变量,你就可以看到运行此笔记本实例可能产生的预估成本。说到金钱,你应该小心不要在云中留下闲置资源运行——这可能会对你的财务状况造成不利影响。
点击图 8.12中所示的CREATE以继续操作,GCP 将为你实例化一个具有指定参数的笔记本。你将在主笔记本实例页面上看到所有你的笔记本实例,如下面的图所示:
![Figure 8.13 – AI 平台笔记本实例枚举
![img/Figure_8.13_B16890.jpg]
图 8.13 – AI 平台笔记本实例枚举
笔记本及其相关的计算资源已准备就绪。现在点击前面截图所示的OPEN JUPYTERLAB链接以启动熟悉的 Jupyter 环境,它将如下所示。点击以下截图下笔记本标题下的Python 3图标:
![Figure 8.14 – AI 平台笔记本选项 – Jupyter Notebook 环境
![img/Figure_8.14_B16890.jpg]
图 8.14 – AI 平台笔记本选项 – Jupyter Notebook 环境
一旦你选择了 Python 3 笔记本,你将被带到一个新的 Jupyter 笔记本——这是一个你应该非常熟悉的环境。在这里,你可以编写 Python 代码,导入库,并执行各种数据科学操作。当然,为了本次演示的目的,我们决定保持简单,并打印Hello World。你可以在下面的图中看到这个演示:

图 8.15 – AI 平台笔记本实例 – 运行一个简单的 Jupyter 笔记本
这就结束了我们对如何开始使用 AI Hub 和运行简单笔记本的基本介绍,这是进入令人惊叹的 GCP 世界的第一步。AI 平台充满了令人惊叹的工具,我们将在下一节中探索其自动化机器学习部分。
基于 Google Cloud 的自动化机器学习
自动化机器学习是 Google Cloud AI 平台的关键构建块之一。自动化机器学习产品套件包括 AutoML 自然语言、AutoML 表格、AutoML 翻译、AutoML 视频、AutoML 视觉,如下图中所示:

图 8.16 – 作为 Google Cloud AI 平台一部分提供的 AutoML 产品
Google Cloud 自动化机器学习产品的基础组件包括神经架构搜索和超参数优化方法。然而,通过抽象出所有复杂性,它使得消费者使用起来变得容易。
Google Cloud AutoML 视觉是一种基于计算机视觉的能力,它可以帮助在自定义标签上训练机器学习模型。您还可以使用 AutoML 视觉边缘服务在边缘设备上执行相同的操作。
AutoML 视频智能产品系列提供了分类和对象跟踪功能。目前处于预 GA(测试版),您可以使用这些服务来训练您的模型,根据您自己的自定义标签定义识别视频中的特定对象、镜头和片段。这些结果可以扩展到视频的其余部分,以发现、检测和跟踪类似标签。
AutoML 自然语言是一种非结构化文本分析服务,它可以帮助您构建、管理和部署处理文本文件和文档的模型。自然语言处理是行业专业人士和研究人员都非常感兴趣的一个领域,如果您计划执行诸如单标签或多标签分类实体提取,或使用定制标签进行情感分析等任务,AutoML 可以使这一切变得非常简单。
AutoML 翻译是自动化机器学习方法与Google 神经机器翻译(Google NMT)的结合。Google Cloud AutoML 翻译允许您上传自己的数据集并增强翻译。通过计算 BLEU、base-BLEU 和 BLEU 增益,AutoML 翻译为定制模型开发和测试提供了一个复杂的环境。
AutoML 表格真正体现了我们迄今为止关于自动化机器学习的了解——将经过实战检验、全球规模的神经网络算法的威力从 Google 带到非结构化数据上。以下图中展示了 Google Cloud AutoML 表格的工作流程:

图 8.17 – Google Cloud AutoML 表格工作流程
获取结构化数据(表格输入)后,自动机器学习表格通过分析输入特征(特征工程),选择模型(神经架构搜索),执行超参数调整,并反复评估模型行为以确保一致性、准确性和可靠性而迅速行动。谷歌自动机器学习表格在各种场景中得到广泛应用,从最大化收入到优化金融组合以及理解客户流失。自动机器学习表格实现了在结构化数据上构建和部署最先进机器学习模型的承诺,并成为谷歌云自动机器学习套件自助服务部分的瑰宝。
摘要
在本章中,您学习了如何开始使用谷歌云人工智能平台,并了解了 AI Hub,如何创建笔记本实例,以及如何运行简单的程序。您还了解了 GCP 提供的不同类型的自动机器学习,包括自动机器学习自然语言、自动机器学习表格、自动机器学习翻译、自动机器学习视频和自动机器学习视觉。如果您对 GCP 提供的广泛的产品、功能和服务的范围感到不知所措,那么您并不孤单。
在下一章中,我们将深入探讨谷歌云自动机器学习表格(Google Cloud AutoML Tables)。我们将构建模型并解释自动机器学习功能如何与自动机器学习表格协同工作,也就是说,如何将非结构化数据进行分析(特征工程),选择模型(神经架构搜索),以及进行超参数调整。我们将在 GCP 上部署这些模型,并通过网络服务进行测试,以展示这些功能的实际应用。敬请期待。
进一步阅读
如需了解更多关于以下主题的信息,您可以访问以下链接:
-
使用机器学习探索神经网络架构:
ai.googleblog.com/2017/05/using-machine-learning-to-explore.html -
云自动机器学习 – 以最少的努力和机器学习专业知识训练高质量的定制机器学习模型:
第九章:使用 GCP 的自动化机器学习
"任何在商业中使用的技术的第一规则是,应用于高效操作的自动化将放大效率。第二是,应用于低效操作的自动化将放大低效。"
-比尔·盖茨
这是一段漫长而有益的学习之旅,了解了主要超大规模企业及其如何在各自的平台上实施自动化机器学习。在前一章中,你学习了如何开始使用 Google Cloud AI 平台,了解了 AI Hub,以及如何在 GCP 中构建 notebook 实例。你还了解了 GCP 提供的不同类型的自动化机器学习,包括 AutoML 自然语言、AutoML Tables、AutoML 翻译、AutoML 视频和 AutoML 视觉。
在继续探讨 GCP 提供的广泛的产品、功能和服务的背景下,我们现在将深入探讨 Cloud AutoML Tables。我们将构建模型并解释如何使用 AutoML Tables 进行自动化机器学习;也就是说,如何通过分析输入特征(特征工程)、选择模型(神经架构搜索)和执行超参数调整来对非结构化数据进行自动化机器学习任务。我们将将这些模型部署到 GCP,并通过网络服务进行测试,以展示其运营化。
在本章中,我们将涵盖以下主题:
-
开始使用 Google Cloud AutoML Tables
-
创建一个 AutoML Tables 实验
-
理解 AutoML Tables 模型部署
-
使用 BigQuery 公共数据集的 AutoML Tables
-
自动化机器学习进行价格预测
开始使用 Google Cloud AutoML Tables
AutoML Tables 帮助利用结构化数据中的洞察力。在任何大型企业中,都存在多种数据模式,包括结构化、非结构化和半结构化数据。对于大多数处理数据库和交易的组织来说,确实存在大量的结构化数据。这些数据非常适合高级分析,而 GCP 的 AutoML Tables 正是帮助你自动构建和部署基于结构化数据的机器学习模型的工具。
AutoML Tables 使机器学习工程师和数据科学家能够比手动操作更快地自动构建和部署结构化数据上的最先进的机器学习模型。它自动化了广泛数据类型的建模,从数字和类别到字符串、时间戳、列表和嵌套字段。Google Cloud AutoML tables 通过最少的代码实现这一点。在本章中,我们将学习如何获取一个导出的 CSV 文件,点击几个按钮,等待一段时间,然后在另一端获得一个高度调优的模型。
谷歌的自动化机器学习团队努力工作,以确保该工具适用于各种数据类型。谷歌的 AutoML Tables 探索了可能的模型和超参数的广阔空间,以便代表你尝试优化事物。在我们探索本章的示例时,你会发现第一步是通过导入选项卡导入你的训练数据,给它命名,并选择来源——无论是 BigQuery 中的表、你机器上的文件,还是 Google Cloud Storage 上的文件。这一步需要一些时间,因为系统正在分析你的数据集的列。一旦完成这一步,你将能够编辑自动生成的模式并选择用于预测的列。在这里,你还可以更新列类型,以及它是否为可空。
你还可以查看可能有很多列的数据集,以获得它们数据的良好概述。你可以点击不同的列名来查看关于你列的一些统计信息。在分析数据后,我们可以开始训练过程。在这里,AutoML 真正大放异彩,因为你所要做的就是点击训练。
你可以设置一些选项,包括最大训练小时数预算。这使你能够在做出全面、更长时间的训练运行承诺之前,对你的数据进行实验并限制训练时间。你会注意到显示的训练时间相对较长。这是因为它不仅在进行模型调优,还在选择最初要使用的模型。因此,在训练期间有很多事情发生。但我们在这里不需要做任何事情。
一旦训练完成,我们必须评估和部署模型。你将能够看到训练的效果,以及关于模型性能的指标。最后,我们将部署模型以获取预测。浏览器中甚至还有一个编辑器,可以对你的端点进行请求,因此你不需要设置本地环境来尝试和测试这些调用。
现在你已经了解了 AutoML Tables 的工作原理,让我们来实际探索一下。
创建 AutoML Tables 实验
AutoML Tables 自动在结构化数据上构建和部署最先进的机器学习模型。让我们从我们的第一个实验开始,将这一知识付诸实践:
-
通过访问此链接访问谷歌云 AI 平台主页:
console.cloud.google.com/home/。点击左侧面板中的数据集链接;你将看到以下屏幕:![图 9.1 – 谷歌云 AI 平台主页![图片]()
图 9.1 – 谷歌云 AI 平台主页
-
在
IrisAutoML上,然后点击创建数据集:![图 9.2 – AutoML Tables – 创建新数据集屏幕![图片]()
图 9.2 – AutoML Tables – 创建新数据集屏幕
-
对于这个实验,我们将从 Iris 数据集开始。你可以从
www.kaggle.com/uciml/iris下载 CSV 文件,因为我们将在下一步中使用它。尽管数据集太小,不适合用于自动化机器学习,但你很快就会看到它是如何展开的。 -
现在,你需要将数据(CSV)文件导入到 Google AutoML 表格。文件需要上传到存储桶。从你的机器中选择文件并点击 浏览 在 GCP 上创建存储目标,如下截图所示:

图 9.3 – AutoML 表格 – 从本地计算机导入文件
要创建存储桶,你需要遵循以下步骤。
-
首先,为你的存储桶提供一个名称:
![图 9.4 – AutoML 表格 – 在 GCP 上创建存储桶]()
图 9.4 – AutoML 表格 – 在 GCP 上创建存储桶
-
然后,选择你希望存储数据的位置。选项包括区域(单个区域)、双区域高可用性(HA)或多区域,以实现跨多个位置的最高可用性。在这个例子中,我们将选择 us-central1 作为单个区域,但如果你在地理位置上更合适,可以选择其他区域:
![图 9.5 – AutoML 表格 – 选择创建存储桶的位置]()
图 9.5 – AutoML 表格 – 选择创建存储桶的位置
-
接下来,选择数据的默认存储类别。你可以选择的存储类别有 标准、近线(备份)、冷线(灾难恢复)和存档(用于存档用途)**。为了这次实施,选择 标准 类别,如下截图所示:
![图 9.6 – AutoML 表格 – 在 GCP 上为你的数据选择存储类别]()
图 9.6 – AutoML 表格 – 在 GCP 上为你的数据选择存储类别
-
最后,需要配置加密设置。在这里,你可以提供自己的密钥或使用默认的 Google 管理密钥设置。点击 创建 完成创建存储桶的过程:

图 9.7 – AutoML 表格 – 选择加密设置
这将触发创建存储桶和数据导入。你将看到以下屏幕:

图 9.8 – AutoML 表格 – 数据正在导入到 GCP 存储桶
这是我们将要学习的一个重要教训:并非所有数据都适合自动化机器学习。一旦导入过程完成,你将看到以下错误信息:

图 9.9 – AutoML 表格 – 行数不足错误
尽管您可以用其他工具进行这个实验,但云自动机器学习平台设定了一个最低标准,以确保其算法的质量不受损害。这个例子给我们提供了一个重要的教训,即并非所有问题都适合自动机器学习。
让我们用更大的数据集重复相同的实验 – 贷款风险数据集,它包含 21 个字段和 1,000 个实例。您可以从 BigML 下载它(bml.io/W2SpyF,BigML,Inc. Corvallis,俄勒冈州,美国,2011)。这个数据集由汉堡大学统计学与计量经济学研究所的汉斯·霍夫曼博士创建,包含诸如检查状态、持续时间、信用历史、目的、信用金额和储蓄状态等字段。这些字段可以用来创建一个预测贷款申请风险水平的模型。
让我们通过创建一个桶来执行上述步骤,用于贷款风险数据集:
-
从
bml.io/W2SpyF下载数据集。点击创建数据集按钮并导入贷款风险数据集:![图 9.10 – AutoML 表格 – 选择新的数据集桶]()
图 9.10 – AutoML 表格 – 选择新的数据集桶
-
当导入过程开始时,上传从步骤 5 下载的数据集提取的 csv 文件,并通过点击选择文件按钮将其指向目标云存储:
![图 9.11 – AutoML 表格 – 选择数据存储]()
图 9.11 – AutoML 表格 – 选择数据存储
由于贷款数据集满足所需的大小限制,它已成功导入,您将看到以下训练界面。这是您可以编辑自动生成的模式并选择预测列的地方。您还可以更新列类型,以及它是否为可空。
此界面提供了数据集的详细概述。您可以通过点击不同的列名来查看有关您列的一些统计信息:
![]()
图 9.12 – AutoML 表格 – 训练界面
-
现在,选择目标列;即预测列,也就是类别。类别是一个具有两个可能值的分类字段:良好信用或不良信用。这决定了这个特定个人是否有资格获得信用。一旦您选择了类别,点击训练模型:

图 9.13 – AutoML 表格 – 选择训练的目标列
点击训练模型按钮后,您将在右侧看到一个流动菜单。该菜单在以下屏幕截图中可见。这是您可以设置实验参数的地方,也是 AutoML 真正发光的地方,因为您只需点击训练。您可以设置一些选项,包括训练小时数的最大预算。这使您能够在做出全面、更长时间训练运行承诺之前,对数据进行实验并限制训练时间。您会注意到显示的训练时间相对较长。这是因为它不仅在进行模型调优,还在选择最初要使用的模型:

图 9.14 – AutoML 表格 – 在 GCP 上为您的数据选择存储类别
您应该训练模型多长时间?GCP 建议的训练时间定义在cloud.google.com/automl-tables/docs/train,如下面的屏幕截图所示:

图 9.15 – AutoML 表格 – 建议的训练时间
您可以在cloud.google.com/automl-tables/pricing找到相应的定价指南。
您还可以查看高级选项,在这里您可以查看实验的优化目标。由于这是一个分类实验,列出的目标包括 AUC ROC、Log 损失、AUC PR、精确度和召回率。提前停止切换确保在检测到无法再进行改进时停止进程。否则,AutoML 表格将继续训练,直到达到预算:
点击训练模型以启动此操作:

图 9.16 – AutoML 表格 – 训练的高级选项
在启动实验时,您将看到以下屏幕。它是在基础设施设置以及模型最终训练时启动的:

图 9.17 – AutoML 表格 – 开始 AutoML 表格实验
训练完成后,我们必须评估和部署模型。在这个阶段,您将能够看到训练的效果,以及关于模型性能的任何指标。最后,您可以部署模型以获取关于信用价值的预测:

图 9.18 – AutoML 表格 – 在 GCP 上为您的数据选择存储类别
准确率以百分比衡量,而 0 到 1 下的面积。使用不同的训练成本(持续时间)训练模型将得到更高的值,这表明模型质量更高:

图 9.19 – AutoML 表格 – 训练模型的详细信息,包括其 F1 分数、准确率和精确率
下一页还显示了混淆矩阵,它显示了模型在数据上的质量;即预测正确的数据点数量与预测错误的数据点数量相比:

图 9.20 – AutoML 表格 – 混淆矩阵
特征重要性 – 即哪个特征对最终模型的影响最大 – 也已展示。在这种情况下,你可以观察到检查状态、信用期限和目的似乎对信用决策影响最大:

图 9.21 – AutoML 表格 – 特征重要性表
现在我们已经训练了模型,接下来让我们进行其部署。
理解 AutoML 表格模型部署
为了部署我们在上一节中训练的模型,请执行以下步骤:
-
我们必须点击 测试 & 使用 选项卡来部署模型。有多种测试训练模型的方法:你可以将其作为批量预测(基于文件),作为在线预测(API),或者将其导出为 Docker 容器。页面顶部的选项允许你在通过 REST API 进行在线预测和批量预测之间切换。这允许你上传 CSV 文件或指向 BigQuery 表,并获取整个文件或表的预测结果。考虑到使用所需的时间,AutoML 表格使你能够达到比手动更高的模型性能水平。在本节中,我们将进行基于在线 API 的预测:
![图 9.22 – AutoML 表格 – 导出模型]()
图 9.22 – AutoML 表格 – 导出模型
-
点击 在线预测 选项卡。你将看到以下屏幕。在这里,你可以直接从控制台调用 API:
![图 9.23 – AutoML 表格 – 在训练模型上进行在线预测]()
图 9.23 – AutoML 表格 – 在训练模型上进行在线预测
-
然而,如果你只是点击 预测,它将给出以下截图所示的错误。为什么?因为模型尚未部署,这意味着没有可调用的端点:
![图 9.24 – AutoML 表格 – 在训练模型上进行在线预测的错误]()
图 9.24 – AutoML 表格 – 在训练模型上进行在线预测的错误
-
点击部署模型按钮。你将看到一个弹出窗口,确认部署细节。现在,点击部署:
![图 9.25 – AutoML 表格 – 部署训练好的模型弹出窗口]()
图 9.25 – AutoML 表格 – 部署训练好的模型弹出窗口
这启动了模型部署的过程。一旦完成,你将看到以下屏幕,它表明模型已成功部署并可供请求,同时显示了它所占用的空间大小。你应该记住,模型现在正在服务器上运行,因此你将承担与模型运行相关的计算和存储成本。这就是之前警告的内容。
-
在这一点上,你可以点击
0.661置信度分数。此时,你可以切换到特征列视图并编辑一些参数。我们直观地知道年龄和信用期限对我们的信用结果有重大影响。将年龄从48降低到18,并在可编辑表中将信用期限增加到60,将这个良好的信用决策变成不良的。 -
让我们更改这些值并再次调用 API。你将看到结果变成了不良的,如下面的截图所示:

图 9.28 – AutoML 表格 – 使用修改后的年龄和信用期限调用模型
之前的实验已经向你展示了如何训练、部署和测试一个模型。现在,让我们探索如何使用基于 BigQuery 的公开数据集与 AutoML 表格一起使用。
使用 BigQuery 公开数据集的 AutoML 表格
数据被称为数字经济的新石油。为了扩展这个类比,自动化机器学习是使用数据提供高级分析而不需要每次都进行定制手动配置的引擎,但我跑题了。进行机器学习实验的现实世界数据来自各种组织,尽管需要对应者来执行实验和尝试假设。这样的数据仓库是 Google BigQuery 云数据仓库——具体来说,是其大量的公开数据集集合。在这个例子中,我们将使用 BigQuery,这是 AutoML 表格数据摄取过程中指定的三种方法之一,用于我们的实验。
与我们之前使用的贷款数据集类似,成人收入数据集是从 1994 年美国人口普查局获得的一个公开数据集,它使用人口统计信息来预测两类人的收入:每年超过或低于 50,000 美元。该数据集包含 14 个属性,目标字段是收入和属性数量。数据可以从www.kaggle.com/wenruliu/adult-income-dataset?select=adult.csv下载。然而,BigQuery 包含了一个流行的公开数据集仓库,因此我们将使用它。让我们开始吧:
-
如我们之前所做的那样,在表格选项卡中点击创建新数据集,然后点击创建数据集按钮:
![图 9.29 – AutoML 表格 – 创建新数据集提示]()
图 9.29 – AutoML 表格 – 创建新数据集提示
-
现在,为了添加到数据集中,选择第三个选项 – 即从 BigQuery 中选择一个表或视图 – 如以下截图所示:
![图 9.30 – AutoML 表格 – 选择 BigQuery 数据]()
图 9.30 – AutoML 表格 – 选择 BigQuery 数据
-
BigQuery 可以通过
console.cloud.google.com/bigquery访问。这是您可以查看其包含的数据集的地方。您可以通过调用以下查询来完成此操作:SELECT * FROM `bigquery-public-data.ml_datasets.census_adult_income`您将看到以下输出。我们的目标是导出这些数据到一个存储桶中,以便用于我们的实验。将查询结果的目标表设置为数据集,然后点击运行:

图 9.31 – AutoML 表格 – 从人口普查成年人收入数据集的 BigQuery 搜索结果
以下是一个简短的 BigQuery 公共数据集列表。这使得在整个 GCP 产品套件中使用这些精心挑选的数据集变得非常容易和方便:

图 9.32 – AutoML 表格 – BigQuery 公共数据集
在上一步中,您运行了查询,现在已完成,并创建了一个数据集,如下面的截图所示:

图 9.33 – AutoML 表格 – BigQuery 公共数据集导出
现在数据已经导出到一个存储桶中,您可以使用它来在 AutoML 表格中进行实验。
自动化机器学习用于价格预测
到目前为止,您已经看到了如何使用 AutoML 表格来解决分类问题;也就是说,在数据集中找到类别。现在,让我们做一些回归;也就是说,预测值。为此,我们将使用房屋销售预测数据集。金县房屋销售数据集包含了金县的价格,其中包括西雅图。该数据集可以从 Kaggle 下载,网址为www.kaggle.com/harlfoxem/housesalesprediction。
对于这个实验,我们的目标是使用 21 个特征和 21,613 个观测值或数据点来预测房屋的销售价值(价格):
-
让我们在 AI 平台上开始,点击主页上的创建数据集按钮:
![图 9.34 – AutoML 表格 – 在 AI 平台主页上开始]()
图 9.34 – AutoML 表格 – 在 AI 平台主页上开始
在这里,你必须选择数据集名称和区域,如以下截图所示。将数据集类型设置为表格,因为它目前具有分类和回归自动机器学习功能,然后点击创建:
![图 9.35 – AutoML 表格 – 选择自动机器学习目标]()
图 9.35 – AutoML 表格 – 选择自动机器学习目标
-
点击创建后,你将看到以下屏幕。选择从您的计算机上传 CSV 文件选项,并通过点击继续将其上传到云存储:
![图 9.36 – AutoML 表格 – 选择数据存储参数]()
图 9.36 – AutoML 表格 – 选择数据存储参数
-
点击继续后,数据集将被上传,你将看到以下屏幕,显示数据的描述。点击训练新模型:
![图 9.37 – AutoML 表格 – 上传完成后数据描述的详细信息]()
图 9.37 – AutoML 表格 – 上传完成后数据描述的详细信息
-
在这个阶段,你处于训练新模型的工作流程中。在这里,将目标设置为
回归,方法设置为AutoML。然后,按继续:![图 9.38 – AutoML 表格 – 训练新模型步骤]()
图 9.38 – AutoML 表格 – 训练新模型步骤
-
接下来,我们必须编辑模型定义。在这里,选择目标列(要预测的价格)和数据拆分;即你希望如何拆分测试数据和训练数据。除非你有特定的需求进行手动或按时间顺序分层,否则默认的随机分配选项是一个不错的选择。点击继续以继续:
![图 9.39 – AutoML 表格 – 训练新模型步骤]()
图 9.39 – AutoML 表格 – 训练新模型步骤
以下截图提供了对数据进行细粒度操作的选择,例如删除或过滤列、应用转换等:
![图 9.40 – AutoML 表格 – 上传数据集后的描述]()
图 9.40 – AutoML 表格 – 上传数据集后的描述
-
你还可以选择优化目标。选项包括均方根误差(RMSE)、平均绝对误差(MAE)或均方根对数误差(RMSLE),它对异常值具有鲁棒性。选择RMSE(默认)并点击继续以继续:
![图 9.41 – AutoML 表格 – 优化目标的描述]()
图 9.41 – AutoML 表格 – 优化目标的描述
-
在我们开始训练之前,我们必须考虑的最后一件事情是训练预算。这一步应该从我们之前的实验中对你来说很熟悉。设置 5 小时的预算并点击开始训练。别忘了切换启用早期停止 – 如果结果提前达到,我们不希望耗尽预算:![图 9.42 – AutoML 表格 – 训练新模型的计算和价格步骤
![图片]()
图 9.42 – AutoML 表格 – 训练新模型的计算和价格步骤
模型将开始训练。你将能够在训练作业和模型侧面板中看到其进度:
![图 9.43 – AutoML 表格 – 新模型训练开始
![图片]()
图 9.43 – AutoML 表格 – 新模型训练开始
这个特定模型训练耗时 1 小时 35 分钟。一旦完成,将出现以下屏幕。此屏幕将显示模型的状态属性和训练性能:
![图 9.44 – AutoML 表格 – 训练性能和结果
![图片]()
图 9.44 – AutoML 表格 – 训练性能和结果
滚动到训练性能和结果页面以查看此模型的特征重要性图表。此图表证明了古老的格言“房地产 – 地点,地点,地点”是正确的。此外,房产的价格和居住空间的平方英尺密切相关。这也并不令人惊讶:
![图 9.45 – AutoML 表格 – 结果及其特征重要性
![图片]()
图 9.45 – AutoML 表格 – 结果及其特征重要性
-
在这一点上,你可以通过点击部署和测试来部署和测试模型,如下面的截图所示:

图 9.46 – AutoML 表格 – 将模型部署到端点
在本节中我们进行的几个实验中,我们发现数据的大小是提高准确性的一个重要因素。随着数据集中观测值的增加,自动化机器学习可以执行更好的神经网络架构搜索和超参数优化,以获得最佳结果。
摘要
在本章中,你学习了如何使用 AutoML 表格执行自动化机器学习。我们首先设置了一个基于 Cloud AutoML 表格的实验,然后展示了如何训练和部署 AutoML 表格模型。我们使用多个数据源,探索了 AutoML 表格与 BigQuery 公共数据集,以及分类和回归。我们希望本章使你熟悉了与 GCP AutoML 一起工作,以便你可以将其应用于你的自动化机器学习实验。
在下一章中,我们将探讨自动化机器学习的企业用例。
进一步阅读
关于本章涵盖的内容的更多信息,请参阅以下链接:
-
AutoML Tables 初学者指南:
-
AutoML Tables 笔记本:
第三部分:应用自动化机器学习
本节最后部分处理自动化机器学习的实际应用场景,探讨问题和案例研究。在本节中,详细讨论了数据清洗、特征工程和自动化在企业应用中的需求,并介绍了 AutoML 的透明度和可解释性功能。
本节包含以下章节:
- 第十章, 企业中的自动化机器学习
第十章:企业中的 AutoML
“利用机器学习可以带来变革,但要取得成功,企业需要来自顶层的领导。这意味着理解当机器学习改变商业的某个部分——例如产品组合——时,其他部分也必须改变。这可能包括从营销和生产到供应链,甚至招聘和激励系统的一切。”
– 埃里克·布林约尔松,麻省理工学院数字经济倡议主任
自动化机器学习(ML)是一个使能器和加速器,它释放了组织加快分析生命周期的承诺,而不需要数据科学家成为瓶颈。在前面的章节中,你学习了如何使用多个超规模器执行自动化机器学习,包括开源工具、AWS、Azure 和 GCP。
然而,本章却有所不同,因为在这里我们将探讨企业对自动化机器学习的使用。我们将探讨在现实世界应用中应用自动化机器学习,并讨论这种方法的优缺点。模型可解释性和透明度是自动化机器学习中的两个非常感兴趣的区域。我们将探讨机器学习中的信任模型,为企业应用自动化机器学习提供剧本。
在本章中,我们将涵盖以下主题:
-
我的组织需要自动化机器学习吗?
-
自动化机器学习——企业高级分析加速器
-
自动化机器学习的挑战和机遇
-
建立信任——自动化机器学习中的模型可解释性和透明度
-
在组织中引入自动化机器学习
-
行动呼吁——我接下来去哪里?
我的组织需要自动化机器学习吗?
技术决策者和利益相关者不喜欢潮流,你可能也不应该。在垂直企业中,仅仅为了技术而构建和使用技术具有有限的企业价值;技术必须解决业务问题或提供创新的差异化才能具有相关性。因此,这个调查变得非常关键:组织是否真的需要自动化机器学习,或者这只是我们在 AI 和机器学习成熟周期中可以没有的步骤之一?这笔投资会产生投资回报率(ROI),还是会成为那些当时听起来不错但未被使用的平台之一?
让我们通过查看自动化机器学习的价值主张来尝试回答这些问题,看看它是否适合您的组织。作为一名技术利益相关者,设想自己是一个试图构建企业人工智能剧本的人,并决定是否投资和利用或忽视自动化机器学习的效用。
巨头之间的冲突——自动化机器学习与数据科学家
在一个组织,无论大小,你首先需要将这个想法传达给你的数据科学团队。这可能是一个由拥有博士学位、机器学习工程师和数据科学家组成的大型团队,或者它可能是一个紧密团结的初创公司启动者团队,其首席数据科学专家是一位在其机器上安装了 Jupyter 笔记本的工程师。在两种情况下,你都需要有令人信服的论据来提出自动化机器学习的案例。
我们之前已经说过,但很乐意再次重复:自动化机器学习在不久的将来不会消灭数据科学家的职位。话虽如此,你很难找到一个承认使用自动化机器学习进行特征工程、超参数优化或神经架构搜索效率的数据科学家。作为数据科学家,我们往往认为,有时是正确的,数据科学是一种艺术形式,不能通过蛮力来实现。模型调整中涉及大量的专业知识和技术,因此最好留给那些知道自己在做什么的人。问题是这种模式无法扩展:

图 10.1 – 数据科学家的一生
有资质的数据科学家和其他有资质的个人,能够大规模地构建、调整、监控和部署模型,始终存在短缺。我们的组织数据丰富,但缺乏洞察力。我们看到了几个关键的业务智能、实验和洞察力项目被推到以收入为中心的项目优先级列表中。组织需要自动化机器学习,让主题专家(SMEs)和公民数据科学家能够构建数据实验并测试他们的假设,而无需拥有机器学习博士学位。他们会不会出错?我确信。然而,自动化机器学习将使他们能够构建高级机器学习模型并测试他们的假设。
因此,我们必须支持人工智能的民主化。这并不是说,由自动化机器学习训练的至关重要的信用风险模型应该在没有适当尽职调查和测试的情况下投入生产——即使是有手工制作的模型,情况也不会是这样。组织必须确保性能、鲁棒性、模型退化、对抗攻击、异常参数、准确度矩阵和 KPI 适用于所有模型。
简而言之,企业中的机器学习进展缓慢。扩展很困难,自动化程度不高。商业团队和数据科学家之间的协作困难,真正实现商业价值的模型寥寥无几。自动化机器学习承诺解决这些问题,并为数据科学家提供额外的工具,以减轻特征工程、超参数优化和神经架构搜索的手动繁琐工作。
自动化机器学习 – 企业高级分析加速器
在构建您的 AI 剧本和重新构想您组织的人工智能人才战略时,您应该将自动化机器学习视为一种加速器。以下是一些您可能希望考虑使用自动化机器学习来加速您组织的原因。
带有人类友好见解的人工智能民主化
自动化机器学习正迅速成为所有主要机器学习和深度学习平台的一个固有部分,将在民主化高级分析中发挥重要作用。所有主要平台都吹嘘这些功能,但要成为企业的加速器,自动化机器学习必须在人工智能民主化中发挥重要作用。工具集应该能够使公民数据科学家轻松执行艰巨的机器学习任务并获得人类友好的见解。任何缺乏可解释性、透明性和可重复性的人工智能和自动化机器学习都不会是您所期望的高级分析加速器。
增强智能
自动化机器学习正迅速成为大多数现代数据科学平台的一部分,因此将成为 MLOps 生命周期的一部分。对于数据科学家来说,最大的价值主张是特征工程、数据预处理、算法选择和超参数调整的简便性,即增强数据科学家的技能集。内置自动化机器学习的 MLOps 平台还提供训练和调整、模型监控和管理、以及用于 A/B 测试的头对头模型比较功能。这个出色的工具套件对于加强数据科学家的技能非常有帮助,因此自动化机器学习证明是数据科学家和领域专家 alike 的增强智能平台。
自动化机器学习的挑战与机遇
我们已经讨论了自动化机器学习的优势,但所有这些优势都不是没有挑战的。自动化机器学习不是万能的,有一些场景它可能不起作用。以下是一些挑战和自动化机器学习可能不是最佳选择的场景。
数据不足
数据集的大小是自动化机器学习(ML)有效运行的关键组成部分。当在小数据集上使用特征工程、超参数优化和神经架构搜索时,它们不会产生良好的结果。数据集必须足够大,自动化机器学习工具才能有效地完成其工作。如果您的数据集不符合这种情况,您可能想要尝试构建模型的替代方法,即手动构建模型。
模型性能
在少数情况下,您从现成模型中获得的表现可能不起作用——您可能需要手动调整模型以获得更好的性能或应用自定义启发式方法以进行改进。
领域专业知识与特殊用例
在您的模型需要大量专业知识以及内置规则的情况下,自动化机器学习模型带来的收益可能不会提供良好的回报。
计算成本
自动化机器学习在本质上计算成本高昂。如果数据集非常大,您可能需要考虑使用本地计算资源(这可能是更便宜的)来避免使用云机器带来的高昂成本。在这些情况下,训练模型产生的成本可能超过优化带来的好处——买者自负。
接受学习曲线
任何值得做的事情都不容易,比如锻炼或机器学习。自动化机器学习将重复和繁琐的任务的大部分工作都拿走了,但仍然存在学习曲线。大多数平台将他们的自动化机器学习产品称为零代码、低代码或无代码方法;然而,您仍然需要熟悉这个工具。当您的结果与基于多年专业知识直觉或假设不符时会发生什么?您如何根据识别出的重要特征微调模型?哪些模型在训练数据上表现良好,但在生产数据集上表现不佳,原因是什么?这些都是公民数据科学家和利益相关者需要作为学习曲线一部分考虑的实际问题。大量的学习和适应将取决于您选择的工具以及它如何使您的生活变得容易。
利益相关者适应
每一项新技术都会面临适应的挑战——由于自动化机器学习的本质,它可能会在到达时就宣告失败。您的企业人工智能战略应包括培训,并纳入引入新技术(如自动化机器学习)所带来的学习曲线和潜在颠覆。构建示例模板和入门套件有助于让利益相关者跟上进度。在实践中,我们看到让初级数据科学家和开发者参与进来有助于推广新技术。
让我们进入下一节,我们将讨论各种可以帮助在由自动化机器学习训练的模型中建立信任的技术。
建立信任——自动化机器学习中的模型可解释性和透明度
建立在由自动化机器学习训练的模型上的信任可能看起来是一个具有挑战性的价值主张。向业务领导者、审计师和负责自动化决策管理的利益相关者解释,他们可以信任一个算法来训练和构建一个将被用于可能具有关键使命的系统,需要您不要将其视为与“人工”机器学习模型不同的东西。模型监控和可观察性要求不会根据构建模型的技术而改变。可重复的模型训练和质量测量,如验证数据、组件集成、模型质量、偏差和公平性,也是任何机器学习开发生命周期的一部分。
让我们探讨一些我们可以用来在自动化机器学习模型中建立信任并确保治理措施的方法和技术。
特征重要性
特征重要性,即特定属性对预测结果的正向或负向贡献程度,是大多数,如果不是所有,自动机器学习框架提供的模型检查技术。在早期章节中,你已经看到了 AWS、GCP 和 Azure 都提供了它们训练模型的特征重要性分数的视图。这些信息可以被领域专家和公民数据科学家用来确保模型的准确性。
特征重要性不仅有助于验证假设,还可能为之前未知的数据提供见解。数据科学家在领域专家的帮助下,可以使用特征重要性来确保模型不会对任何受保护类别表现出偏见,并查看是否有任何偏好违反法律。例如,如果一个贷款决策算法对特定性别、种族或民族有偏见,那么在大多数情况下这是非法和不道德的。相反,如果一个乳腺癌数据库显示出显著的性别偏见,那是因为生物结构,因此这不是需要减轻或解决的社会或隐含偏见。通过扰动测试自动机器学习模型,或任何模型,对于特征重要性是一个很好的正确性、鲁棒性和偏见检查。
反事实分析
在算法可解释性中,反事实分析属于基于示例的解释类别。简单来说,它使用因果分析来展示如果某个事件已经发生或未发生,将会发生什么。例如,在一个有偏贷款模型中,反事实分析将揭示,在保持所有其他因素不变的情况下,修改贷款申请人的 ZIP 代码会对结果产生影响。这表明模型对特定地理区域的人存在偏见,可能是 ZIP 代码作为代理表现出的潜在种族偏见。除了偏见之外,反事实分析还可以揭示模型假设中的错误,这可能会非常有益。
模型准确性的数据科学度量
应该应用标准的机器学习方法来估计性能、模型选择和算法比较,以确保训练模型的准确性和鲁棒性。以下图中展示了验证机器学习模型的一些标准方法:

图 10.2 – 数据科学的标准度量
对于在大数据集上的性能估计,推荐的方法包括通过正态近似检查置信区间,以及训练/测试集划分。对于较小的数据集,重复 k 折交叉验证、留一法交叉验证和置信区间测试有助于确保性能估计的良好性。对于大型数据集的模型选择,训练验证、测试集划分和独立测试集的重复 k 折交叉验证的三重保留方法效果良好。为了比较模型和算法,建议应用多个独立的训练和测试集进行算法比较、McNemar 测试和 Cochran 测试,而对于较小的数据集,嵌套交叉验证非常有效。
为了确保基于机器学习的自动化模型准确且稳健,我们需要确保在整个生命周期中执行可解释性度量。因此,需要在建模前进行检查——即描述输入数据——在建模过程中——即设计可解释的模型架构和算法——以及建模后——即从输出中提取解释。
建模前的可解释性
建模前的可解释性分析从探索性数据分析、数据集统计描述和净化开始,即变量的描述、元数据、来源、统计数据、变量间关系(成对图和热图)、真实相关性以及生成合成数据的概率模型。这种可解释性扩展到可解释的特征工程,随后是可解释的原型选择和有意义异常值的识别。
建模过程中的可解释性
当使用自动化机器学习算法时,如果有机会,选择采用更可解释的模型家族;线性模型、决策树、规则集、决策集、广义加性模型和基于案例的推理方法比复杂的黑盒模型更可解释。
混合可解释模型也用于设计可解释的模型架构和算法,例如深度 K 近邻(DKNN)、深度加权平均分类器(DWAC)、自解释神经网络(SENN)、上下文解释网络(CENs)和特征包网络(BagNets)。使用如决策解释教学(TED)、多模态解释和合理化神经网络预测等模型将预测和解释结合起来的方法,极大地有助于解释模型。当然,视觉解释非常有效,因为“一图胜千言”,除非是在高维空间中,那时它可能会变得相当混乱,比如后现代艺术。
使用架构调整和正则化作为解释的工件,通过可解释的卷积神经网络(CNNs)、可解释的深度架构和基于注意力的模型来实现可解释性,这些模型被用于自然语言处理、时间序列分析和计算机视觉。
模型后解释性
自动机器学习工具包和超大规模计算平台中包含各种内置工具,用于模型后解释性。这些工具包括宏观解释和基于输入的解释或扰动,以查看输入操作如何可能影响输出。基于宏观解释的方法,如重要性分数、决策规则、决策树、依赖图、口头解释和反事实解释,是领域专家了解训练模型结果的有用资源。
还有尝试探测这个传说中的黑盒的解释估计方法,包括基于扰动的训练(LIME)、反向传播、代理模型、激活优化和 SHAP。
如前所述的方法,在机器学习模型中建立信任没有唯一的方法,无论是手动训练的还是通过自动机器学习工具构建的。实现这一目标的唯一方法是遵循工程最佳实践;验证、可重复性、实验审计轨迹和可解释性是验证和确保其有效性的最知名方法。你可能不需要所有这些方法作为你的机器学习工作流程的一部分,但要知道,这些以及各种其他方法在模型生命周期内验证和监控你的模型对于确保企业机器学习运营的成功至关重要。
在组织中引入自动机器学习
现在你已经审查了自动机器学习平台和开源生态系统,并了解了其内部工作原理,难道你不想在你的组织中引入自动机器学习吗?那么,你该如何操作呢?以下是一些指导方针,帮助你完成这个过程。
准备迎接影响
安德鲁·吴(Andrew Ng)是 Landing AI 的创始人兼首席执行官,百度的前副总裁和首席科学家,Coursera 的联合主席和联合创始人,Google Brain 的前创始人兼领导者,以及斯坦福大学的兼职教授。他广泛地撰写了关于人工智能和机器学习的文章,他的课程对于任何开始机器学习和深度学习的人来说都是开创性的。在他的《哈佛商业评论》关于企业人工智能的文章中,他提出了五个关键问题,以验证人工智能项目是否会成功。我们认为,这些问题同样适用于自动机器学习项目。你应该提出的问题如下:
-
项目是否给你带来快速的成功?
-
项目是否过于简单或规模过大?
-
你的项目是否特定于你的行业?
-
你是否与可信的合作伙伴一起加速你的试点项目?
-
你的项目是否在创造价值?
这些问题不仅有助于选择一个有意义的工程项目,还有助于寻求商业价值和技术尽职调查。组建一个小团队并指定一个领导者作为自动化机器学习的倡导者将有助于推进这一事业。
选择正确的自动化机器学习平台
开源、AWS、GCP、Azure 还是其他什么——你应该使用哪个自动化机器学习平台?
在选择自动化机器学习平台时,有几个考虑因素你应该记住。首先,如果你是云原生,也就是说你的数据和计算都位于云端,那么使用特定云提供商提供的自动化机器学习在所有实际用途上会更有意义。如果你有一个混合模型,尽量让你的自动化机器学习计算靠近你计划使用的数据,无论它位于何处。功能对等可能不会带来如此显著的区别;然而,无法访问正确的数据肯定会的。
一般而言,自动化机器学习的云计算和存储资源可能会迅速变得昂贵,尤其是当你处理大型模型并执行多个同时实验时。如果你在本地环境中拥有计算资源和数据,那么这是一个理想的游乐场,而不会增加你的超大规模账单。然而,这也伴随着建立基础设施和为本地工具包进行设置的职责。因此,如果你不担心成本,并且想快速探索自动化机器学习能为你做什么,基于云的工具包将是一个理想的伴侣。根据你与云提供商的关系,你也许还能获得折扣。
数据的重要性
从前几章的例子中,可能已经痛苦地明显,数据,尤其是大量的数据,是成功自动化机器学习项目最需要的东西。较小的数据集无法提供良好的准确性,也不适合作为自动化机器学习的用例。如果你没有足够大的数据集来工作,或者你的用例不适合自动化机器学习,那么可能这不是适合这项工作的正确工具。
为你的受众准备正确的信息
自动化机器学习(Automated ML)承诺为数据科学家和中小企业带来巨大价值;因此,你应该仔细构思你的提案。
对于商业领导者和利益相关者来说,这是一个商业赋能工具,将帮助公民数据科学家加快开发;商业用户可以更快地测试他们的假设并执行实验。
对于你的数据科学盟友,你应该介绍自动化机器学习作为一种工具,它通过从他们的日常工作中移除重复和枯燥的任务来增强他们的能力。在许多事情中,自动化机器学习可以帮助减轻从数据集中筛选重要特征的繁琐工作,并可以通过大搜索空间帮助识别正确的参数和模型。这将加速新数据科学家的培训,并帮助其他喜欢尝试数据科学实验的工程师通过实践来掌握基础知识。如果你的数据科学家和机器学习工程师认为这项技术有价值,并且没有感到威胁,他们愿意适应。这并不是他们第一次听说这项令人惊叹的技术,他们愿意使用它,尽管带着一丝怀疑。
行动号召 - 我接下来该去哪里?
所有美好的事物都必须结束,这本书也不例外。呼!我们在这里覆盖了很多内容。自动化机器学习是一个活跃的研究和发展领域,在这本书中,我们试图给你一个关于基础、关键优势和平台的广度概述。我们通过开源工具包和云平台中的示例,解释了自动化特征工程、模型和超参数学习以及神经架构搜索的底层技术。我们详细介绍了三个主要云平台,即微软 Azure、AWS 和 GCP。通过逐步的讲解,你看到了每个平台通过构建机器学习模型并尝试它们所提供的自动化机器学习功能集。
学习之旅并未结束。书中提供了几个很好的参考资料,你可以进一步深入研究这个主题。自动化机器学习平台,尤其是云平台,总是处于变化之中,所以当你阅读这本书的时候,一些屏幕和功能可能已经发生了变化。跟上这些超大规模企业的最佳方式是跟上变化,这是唯一的不变。
作为结束语,我们强烈相信理查德·布兰森爵士所说的,"你不应该通过遵循规则来学习走路。你应该通过实践和跌倒来学习。" 学习的最佳方式是通过实践——执行胜过没有应用的知。
开心编码!
参考文献和进一步阅读
关于本章涵盖的主题的更多信息,你可以参考以下链接:
-
安德鲁·吴的《如何选择你的第一个 AI 项目》:
hbr.org/2019/02/how-to-choose-your-first-ai-project -
神经科学中的可解释人工智能:行为神经刺激,2019 年 12 月,神经科学前沿,13:1346,DOI:10.3389/fnins.2019.01346
-
可解释机器学习 - 制作黑盒模型可解释的指南 by Christoph Molnar:
christophm.github.io/interpretable-ml-book/


































































































































浙公网安备 33010602011771号