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

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

选择算法

机器学习可以帮助您完成一些需要依靠经验进行归纳推理的任务。这类任务涉及归纳法,因为它使用数据训练算法来做出可归纳的推理。这意味着,算法可以做出在统计学上可靠的预测或决策,或者对新数据(未用于训练算法的数据)应用算法来完成其他任务。

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

每种学习范式所能解决的问题类型,根据您对所拥有或可以收集的数据类型要进行的推理(或预测、决策或其他任务)而定。机器学习范式使用算法方法来解决各种问题类型。算法提供解决这些问题的配方。

但是,许多算法,例如神经网络,可以用不同的学习范式部署,用于处理不同类型的问题。而某个特定的问题类型也可以通过多种算法来解决。一些算法更普遍适用,而另一些算法则非常具体地针对某些类型的目标和数据。因此,机器学习算法和问题类型之间的映射是 many-to-many。此外,还有各种实施选项可用于算法。

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

选择算法实施

在选择算法后,您必须决定要使用哪种实施。Amazon SageMaker 支持三种需要更多努力的实施选项。

  • 预训练的模型需要最少的精力,并且模型已准备好部署或使用进行微调和部署。 SageMaker JumpStart

  • 内置算法在数据集很大且需要大量资源来训练和部署模型时,需要更多的工作量和进行扩展。

  • 如果没有可行的内置解决方案,请尝试开发一种将预制图像用于机器和深度学习框架的解决方案,用于支持的框架,例如 Scikit-Learn、、、 TensorFlow、 PyTorch MxNet 或 Chainer。

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

算法实施指南
实施 需要代码 预编码算法 第三方软件包支持 自定义代码支持 工作量水平
内置
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,请参阅。有关内置算法的常见信息

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

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

有关所支持的框架的更多信息 SageMaker,请参阅机器学习框架和语言

自定义 Docker 映像

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

有关中自定义 Docker 镜像的更多信息 SageMaker,请参阅使用 Docker 容器构建模型

基本机器学习范式所适用的问题类型

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

有监督学习

如果您的数据集中的特征或者属性(输入)包含目标值(输出),则您遇到的是有监督学习问题。如果您的目标值是分类的(在数学上是离散的),那么您遇到的是分类问题。标准做法是区分二元分类和多元分类。

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

  • 多元分类是一种有监督学习类型,可根据个体的属性将个体分配给多个类别之一。这是有监督的,因为在训练模型所用的样本中,所提供的属性具有正确标记的对象。一个例子是预测与文本文档最相关的主题。文档可以分类为如宗教、政治或金融等类别,或者是其他多种预定义的主题类别之一。

如果您尝试预测的目标值在数学上是连续的,那么您遇到的是回归问题。回归根据一个或多个与其相关的其他变量或属性来估计因果目标变量的值。这样的一个例子是预测房屋价格,需要使用浴室和卧室的数量、房屋和花园的面积等特征。回归分析可以创建一个模型,该模型将其中一个或多个特征作为输入并预测房屋价格。

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

无监督学习

如果您的数据集中的特征或者属性(输入)不包含标签或目标值(输出),则您遇到的是无监督学习问题。在这种类型的问题中,必须根据在输入数据中发现的模式来预测输出。无监督学习问题的目标是发现数据中的模式,例如分组。无监督学习可用于各种各样的任务或问题类型。对于预处理的数据,通常会部署的两种主要方法是主成分和聚类分析。以下是无监督学习可以解决的问题类型的简短列表:

  • 降维通常是数据探索步骤的一部分,这种步骤用于确定最相关的特征,以便用来构造模型。其理念是将数据从高维度、稀疏填充的空间,转换为保留原始数据中最重要属性的低维度空间。对于在进行统计分析时会造成问题的稀疏填充、高维度的数据,这提供了缓解维度难题的方法。它还可以用来帮助理解数据,将高维度数据降维到能够可视化的低维度数据。

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

  • 异常检测是指标识数据集中稀有的项、事件或观测数据,由于它们与其余数据存在显著差异而导致其成为可疑的数据。例如,可以使用识别异常项来检测银行欺诈行为或医疗错误。异常值也称为离群值、新颖值、噪音值、偏差值和例外值。

  • 密度估计是根据观测到的数据,对无法观察到的潜在概率密度函数进行估计。密度估计的天然用途是进行数据探索。密度估计可以发现数据中的偏度和多模性等特征。密度估计的最基本形式是重新缩放直方图。

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

强化学习

强化学习是一种基于与环境的交互进行学习的类型。这种类型的学习是由代理人使用的,该代理必须通过与动态环境的 trial-and-error 互动来学习行为,在这种环境中,目标是最大限度地提高代理人因其行为而获得的长期回报。通过权衡具有不确定奖励的探索行为与具有已知奖励的探索行为,实现奖励最大化。

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