选择算法 - Amazon SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

选择算法

机器学习可帮助您完成需要某种推理的实验性任务。此任务涉及插入,因为它使用数据训练算法以进行可概括的推理。这意味着,算法可以做出统计可靠的预测或决策,或在应用于未用于训练它们的新数据时完成其他任务。

为了帮助您为任务选择最佳算法,我们针对不同抽象级别对这些任务进行分类。在抽象度最高的级别,机器学习会尝试查找特征或结构化程度较低的项目之间的模式或关系,例如数据集中的文本。模式识别技术可分为不同的机器学习范例,每种范例都处理特定的问题类型。机器学习目前有三个基本范例,用于解决各种问题类型:

每个学习范例可以解决的问题类型是通过考虑您希望 根据您拥有或可能收集的数据类型做出的推理(或预测、决策或其他任务)确定的。机器学习范例使用算法方法来处理其各种问题类型。这些算法提供了用于解决这些问题的配方。

但是,很多算法(如神经网络)可以使用不同的学习范例部署到不同类型的问题上。多种算法还可以解决特定的问题类型。某些算法更普遍适用,而其他算法对于某些类型的目标和数据非常具体。因此,机器学习算法和问题类型之间的映射是多对多的。此外,还有各种适用于 算法的实施选项。

以下部分提供了有关适用于不同问题类型的实施选项、机器学习范例和算法的指南。

选择算法实施

选择算法后,您必须决定要使用的算法实施。 Amazon SageMaker 支持三个需要增加工作量的实施选项。

  • 如果数据集很大,并且需要大量资源来训练和部署模型,则内置算法需要最少的工作量和规模。

  • 如果没有可用的内置解决方案,请尝试开发一个将预先制作的映像用于受支持的框架(如 TensorFlow、PyTorch、MXNet 或 Chainer)的机器和深度学习框架的映像。

  • 如果您需要运行自定义程序包或使用不属于支持的框架或通过 PyPi 提供的任何代码,则需要构建您自己的自定义 Docker 映像,并将其配置为安装必要的程序包或软件。自定义映像还必须推送到在线存储库(如 Amazon Elastic Container Service)。

算法实施指南
实现 需要代码 预编码算法 支持第三方软件包 支持自定义代码 工作量
内置
Scikit-learn 仅限 PyPi
Spark ML 仅限 PyPi
XGBoost(开源) 仅限 PyPi
TensorFlow 仅限 PyPi 中高
PyTorch 仅限 PyPi 中高
MXNet 仅限 PyPi 中高
Chainer 仅限 PyPi 中高
自定义映像 是,来自任何源

使用内置算法

为问题和数据类型选择算法时,最简单的选择是使用 Amazon SageMaker的内置算法之一。这些内置算法有两个主要优势。

  • 内置算法无需编码即可开始运行实验。您需要提供的唯一输入是数据、超参数和计算资源。这使您能够更快地运行试验,并减少用于跟踪结果和代码更改的开销。

  • 内置算法附带跨多个计算实例的并行化,并且 GPU 支持现成的所有适用算法 (某些算法可能由于固有的限制而未包括在内)。如果您有大量可用于训练模型的数据,则大多数内置算法可以轻松地扩展以满足需求。即使您已经有一个预训练的模型,使用 中的它的推论SageMaker和输入已知超参数(而不是在支持的框架上使用脚本模式移植它)仍可能更简单。

有关 提供的内置算法的更多信息SageMaker,请参阅使用 Amazon SageMaker 内置算法

有关 Docker 注册表路径、数据格式、推荐的 EC2 实例类型和 提供的所有内置算法通用CloudWatch日志的重要信息SageMaker,请参阅有关内置算法的常见信息

在支持的框架中使用脚本模式

如果要用于模型的算法不受内置选择的支持,并且您愿意编码自己的解决方案,则应考虑使用 Amazon SageMaker 支持的框架。这称为“脚本模式”,因为您用.py具有 扩展名的文本文件编写自定义代码 (脚本)。如上表所示, SageMaker 支持大多数常见的机器学习框架。这些框架预加载了相应的框架和一些额外的 Python 程序包,例如 Pandas 和 NumPy因此您可以编写自己的代码来训练算法。这些框架还允许您通过在训练代码中包含 requirements.txt 文件来安装托管在 PyPi 上的任何 Python 程序包,或者包含您自己的代码目录。SageMaker 笔记本内核本身也支持 R。某些框架(如 scikit-learn 和 Spark ML)具有可方便地使用的预编码算法,而其他框架(如 TensorFlow 和 PyTorch可能需要您自行实施算法。使用受支持的框架映像时的唯一限制是,您无法导入未在 PyPi 上托管或框架映像中尚未包含的任何软件包。

有关 支持的框架的更多信息SageMaker,请参阅将机器学习框架 Python 和 R 与 Amazon SageMaker 一起使用

使用自定义 Docker 映像

Amazon SageMaker的内置算法和支持的框架应涵盖大多数使用案例,但有时您可能需要使用未包含在任何支持的框架中的程序包中的算法。您还可能在需要部署的某个位置选取或保留预训练模型。 SageMaker 使用 Docker 映像托管所有模型的训练和服务,因此,如果您所需的程序包或软件未包含在支持的框架中,则可以提供您自己的自定义 Docker 映像。这可能是您自己的 Python 程序包或采用 Stan 或 Julia 等语言编码的算法。对于这些映像,您还必须在 Dockerfile 中正确配置算法的训练和服务模型。这需要具有 Docker 的中间知识,除非您愿意编写自己的机器学习算法,否则不建议这样做。您的 Docker 映像必须先上传到在线存储库(如 Amazon Elastic Container Service (ECS),然后才能正确训练和处理模型。

有关 中的自定义 Docker 映像的更多信息SageMaker,请参阅将 Docker 容器与 结合使用 SageMaker

基本机器学习范例的问题类型

以下三个部分介绍了机器学习的三个基本范例解决的主要问题类型。有关 SageMaker 提供的用于解决这些问题类型的内置算法的列表,请参阅使用 Amazon SageMaker 内置算法

指导式学习

如果您的数据集由包含目标值(输出)的功能或属性(输入)组成,则您具有指导式学习问题。如果您的目标值是分类型(在数学上是离散的),则您有分类问题。将二进制文件与多类别分类区分开来是一种标准做法。

  • 二进制分类是一种受监督的学习类型,它根据个体的属性将个体分配给两个预定义且互斥的类之一。它受到监督,因为模型是使用示例训练的,其中为属性提供了正确标记的对象。基于诊断测试的结果对个人是否患有疾病的医学诊断是二元分类的一个示例。

  • 多类别分类是一种受监督的学习类型,可根据个体的属性将个体分配给多个类别之一。它受到监督,因为模型是使用示例训练的,其中为属性提供了正确标记的对象。一个例子是预测与文本文档最相关的主题。文档可分类为与对话、政治或金融相关的文档,或与其他几个预定义的主题类之一相关的文档。

如果您尝试预测的目标值在数学上是连续的,则您具有回归问题。回归根据一个或多个与其相关的其他变量或属性来估计因果目标变量的值。一个示例是使用各种功能(如浴室和房间数以及房屋和花园的正方形空间)预测房屋价格。回归分析可以创建一个模型,该模型将其中一个或多个特征作为输入并预测房屋价格。

有关 提供的内置指导式学习算法的更多信息SageMaker,请参阅指导式学习

非自主学习

如果您的数据集由不包含标签或目标值(输出)的功能或属性(输入)组成,则您具有自主学习问题。在此类问题中,必须根据在输入数据中发现的模式来预测输出。非自主学习问题的目标是发现数据中的模式,例如分组。有大量的任务或问题类型可以应用自主学习。委托人组件和集群分析是通常部署用于预处理数据的两个主要方法。下面是可通过自主学习解决问题的问题类型的简短列表:

  • 维度缩减通常是数据探究步骤的一部分,该步骤用于确定用于模型构建的最相关特征。其概念是将数据从高维稀疏填充空间转换为低维空间,该空间保留原始数据的最重要属性。这为通过稀疏填充的高维数据(对其进行统计分析将变得有问题)产生的维度曲线提供了便利。它还可用于帮助理解数据,将高维数据减少到可可视化的较低维度。

  • 集群分析是一类技术,用于将对象或案例分类到称为集群的组中。它尝试在数据中寻找离散组,其中一个组的成员尽可能彼此相似,而与其他组的成员尽可能互不相同。您可以定义希望算法用于确定相似性的特征或属性,选择用于测量相似性的距离函数,并指定要在分析中使用的聚类数。

  • 异常检测 是数据集中的罕见项目、事件或观察的标识,它们将引发怀疑,因为它们与其余数据有很大不同。例如,可以使用异常项目识别功能来检测银行欺诈或医疗错误。异常也称为异常值、新意、噪声、偏差和异常。

  • 密度估计是根据观察到的数据构建不可观察的基本概率密度函数的估计值。密度估计值的自然用途是用于数据探索。密度估计可以发现数据中的偏斜度和多峰性等特征。密度估计的最基本形式是重新缩放的直方图。

SageMaker 提供了多种内置的机器学习算法,可用于这些自主学习任务。有关 提供的内置自主算法的更多信息SageMaker,请参阅非自主学习

强化学习

强化学习是一种基于与环境的交互的学习。这种类型的学习由代理使用,代理必须通过与动态环境进行试验和错误交互来学习行为,在动态环境中,代理通过其操作获得最大化的长期奖励。奖励通过对具有已知奖励的利用操作具有不确定奖励的探索操作进行权衡来最大化。

有关用于强化学习SageMaker的 框架、工具包和环境的更多信息,请参阅通过 使用强化学习Amazon SageMaker