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

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

选择算法

机器学习可以帮助你完成需要某种感应性推断的经验任务。这项任务涉及上岗,因为它使用数据来训练算法来做出可概括的推论。这意味着,算法可以在统计上做出可靠的预测或决策,或者在应用于未用于训练它们的新数据时完成其他任务。

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

每种学习范式可以解决的问题类型是通过考虑你想从你拥有或可以收集的数据类型中做出的推断(或预测、决策或其他任务)来确定的。机器学习范例使用算法方法来解决各种问题类型。这些算法提供了解决这些问题的方法。

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

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

选择算法

选择算法后,必须决定要使用哪种实现算法。亚马逊 SageMaker 支持三种需要加大努力的实施方案。

  • 预训练模型所需的努力最少,模型是否准备好部署或者微调和部署使用 SageMaker JumpStart。

  • 内置算法如果数据集很大且需要大量资源来训练和部署模型,则需要更多的努力和规模。

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

  • 如果你需要运行自定义软件包或使用任何不属于受支持框架的一部分或可通过 PyPi 获得的代码,那么你需要构建你自己的自定义 Docker 镜像配置为安装必要的软件包或软件。还必须将自定义映像推送到亚马逊弹性容器注册表等在线存储库。

指导算法
实现 需要代码 预编码算法 Support 第三方套餐 Support 自定义代码 努力水平
内置
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,因此你可以编写自己的代码来训练算法。这些框架还允许你安装托管在上的任何 Python 软件包 PyPi 通过在训练代码中包含 requirements.txt 文件或包含自己的代码目录。R 在本地也受到支持 SageMaker 笔记本内核。一些框架,例如 cikit-learn 和 Spark ML,具有可以轻松使用的预编码算法,而其他框架如 TensorFlow 而 PyTorch 可能需要你自己实施算法。使用受支持的框架映像时唯一的限制是不能导入任何未托管在上的软件包 PyPi 或者框架的图像中尚未包含的那些内容。

有关 SageMaker 支持的框架的更多信息,请参阅将 Machine Learning 框架、Python 和 R 与 Amazon SageMaker 结合使用.

使用自定义 Docker 镜像

Amazon SageMaker 的内置算法和支持的框架应涵盖大多数使用案例,但有时您可能需要使用不包含在任何受支持框架中的软件包中的算法。您可能还会在需要部署的某个地方选择或保留预训练的模型。 SageMaker 使用 Docker 镜像托管所有模型的培训和服务,因此,如果所需的软件包或软件未包含在受支持的框架中,您可以提供自己的自定义 Docker 镜像。这可能是你自己的 Python 软件包,也可能是用 Stan 或 Julia 这样的语言编码的算法。对于这些图像,您还必须在 Dockerfile 中正确配置算法的训练和模型的服务。这需要对 Docker 的中级知识,除非你喜欢编写自己的机器学习算法,否则不推荐这样做。您的 Docker 映像必须先上传到在线存储库,例如 Amazon Elastic 容器注册表 (ECR),然后才能正确训练和提供模型。

有关 SageMaker 中自定义 Docker 映像的更多信息,请参阅将 Docker 容器用于 SageMaker.

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

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

监督学习

如果您的数据集包含包含目标值(输出)的要素或属性(输入),则会出现监督学习问题。如果你的目标值是分类的(数学上离散的),那么你有分类问题. 区分二进制分类和多类分类是一种标准做法。

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

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

如果你试图预测的目标值在数学上是连续的,那么你有一个回归问题。回归根据一个或多个与其相关的其他变量或属性来估计因果目标变量的值。一个例子是预测房屋价格所使用的特征,如浴室和卧室的数量以及房屋和花园的平方英尺数。回归分析可以创建一个模型,该模型将其中一个或多个特征作为输入并预测房屋价格。

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

无监督的学习

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

  • 维度缩减通常是用于确定用于模型构建的最相关特征的数据探索步骤的一部分。我们的想法是将数据从高维、人口稀少的空间转换为保留原始数据最重要属性的低维空间。这为减轻了人口稀少、高维数据可能产生的维度诅咒,统计分析成为问题。它还可以用来帮助理解数据,将高维数据减少到可视化的较低维度。

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

  • 异常检测是识别数据集中的稀有物品、事件或观测值,这些物品、事件或观测值因为它们与其余数据有很大差异而引起怀疑。例如,可以使用识别异常物品来检测银行欺诈或医疗错误。异常也称为异常值、新奇、噪音、偏差和异常。

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

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

强化学习

强化学习是一种基于与环境互动的学习类型。这种学习被必须通过学习行为的代理人使用 trial-and-error 与动态环境的互动,其目标是代理通过其操作获得最大化的长期奖励。通过利用已知奖励的行为来取消探索有不确定奖励的行为,从而最大限度地提高奖励。

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