

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

# 算法类型
<a name="algorithms-choose"></a>

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

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

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

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

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

**Topics**
+ [选择算法实施](#algorithms-choose-implementation)
+ [基本机器学习范式所适用的问题类型](#basic-machine-learning-paradigms)
+ [Built-in Amazon 中的算法和预训练模型 SageMaker](algos.md)
+ [在 Amazon A SageMaker I 中使用强化学习](reinforcement-learning.md)

## 选择算法实施
<a name="algorithms-choose-implementation"></a>

在选择算法后，您必须决定要使用哪种实施。Amazon SageMaker AI 支持三种需要更多努力的实施选项。
+ **Pre-trained 模型**需要最少的工作量，并且模型已准备好部署或使用 SageMaker JumpStart进行微调和部署。
+ Built-in 如果数据集很大，并且需要大量资源来训练和部署模型，则@@ **算法**需要更多的精力和规模。
+ 如果没有可行的内置解决方案，请尝试开发一种将**预制图像用于机器和深度学习框架的解决方案，用于支持的框架**，例如 Scikit-Learn、、 TensorFlow PyTorch、MxNet 或 Chainer。
+ 如果您需要运行自定义软件包或使用任何不属于支持的框架或可通过提供的代码 PyPi，则需要构建**自己的自定义 Docker 镜像，该镜像**配置为安装必要的软件包或软件。自定义映像还必须推送到在线存储库，例如 Amazon Elastic Container Registry。

**Topics**
+ [使用内置算法](#built-in-algorithms-benefits)
+ [在受支持的框架中使用脚本模式](#supported-frameworks-benefits)
+ [自定义 Docker 映像](#custom-image-use-case)

算法实施指南


| 实施 | 需要代码 | Pre-coded 算法 | 第三方软件包支持 | 自定义代码支持 | 工作量水平 | 
| --- | --- | --- | --- | --- | --- | 
| Built-in | 否 | 是 | 否 | 否 | 低 | 
| Scikit-learn | 支持 | 是 | PyPi 只有 | 是 | 中 | 
| Spark ML | 支持 | 是 | PyPi 只有 | 是 | 中 | 
| XGBoost（开源） | 支持 | 是 | PyPi 只有 | 是 | 中 | 
| TensorFlow | 是 | 否 | PyPi 只有 | 支持 | Medium-high | 
| PyTorch | 是 | 否 | PyPi 只有 | 是 | Medium-high | 
| MXNet | 是 | 否 | PyPi 只有 | 是 | Medium-high | 
| Chainer | 是 | 否 | PyPi 只有 | 是 | Medium-high | 
| 自定义映像 | 是 | 否 | 是，任何来源 | 是 | 高 | 

### 使用内置算法
<a name="built-in-algorithms-benefits"></a>

在为您的问题和数据类型选择算法时，最简单的选择是使用 Amazon A SageMaker I 的内置算法之一。这些内置算法主要有两个优势。
+ 内置算法无需编码即可开始运行实验。您需要提供的输入只有数据、超参数和计算资源。这让您可以更快地运行实验，同时减少跟踪结果和代码更改的开销。
+ 内置算法提供了跨多个计算实例的并行化处理功能，对于所有适用算法都提供了现成可用的 GPU 支持（一些算法由于固有的限制可能不包括在内）。如果您有大量数据来训练模型，大多数内置算法都可以轻松扩展以满足需求。即使你已经有了预训练的模型，在 SageMaker 人工智能中使用其必然结果并输入你已经知道的超参数可能比在支持的框架上使用脚本模式移植它要容易得多。

有关 SageMaker AI 提供的内置算法的更多信息，请参阅[Built-in Amazon 中的算法和预训练模型 SageMaker](algos.md)。

有关 docker 注册表路径、数据格式、推荐的 EC2 实例类型以及 A SageMaker I 提供的所有内置算法通用的 CloudWatch 日志的重要信息，请参阅。[Built-in 算法参数](common-info-all-im-models.md)

### 在受支持的框架中使用脚本模式
<a name="supported-frameworks-benefits"></a>

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

有关 SageMaker AI 支持的框架的更多信息，请参阅[机器学习框架和语言](frameworks.md)。

### 自定义 Docker 映像
<a name="custom-image-use-case"></a>

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

 有关 SageMaker AI 中自定义 Docker 镜像的更多信息，请参阅[用于训练和部署模型的 Docker 容器](docker-containers.md)。

## 基本机器学习范式所适用的问题类型
<a name="basic-machine-learning-paradigms"></a>

以下三个部分介绍了机器学习的三个基本范式解决的主要问题类型。有关 SageMaker AI 为解决这些问题类型而提供的内置算法列表，请参阅[Built-in Amazon 中的算法和预训练模型 SageMaker](algos.md)。

**Topics**
+ [有监督学习](#algorithms-choose-supervised-learning)
+ [无监督学习](#algorithms-choose-unsupervised-learning)
+ [强化学习](#algorithms-choose-reinforcement-learning)

### 有监督学习
<a name="algorithms-choose-supervised-learning"></a>

如果您的数据集中的特征或者属性（输入）包含目标值（输出），则您遇到的是有监督学习问题。如果您的目标值是分类的（在数学上是离散的），那么您遇到的是**分类问题**。标准做法是区分二元分类和多元分类。
+ **二元分类**是一种有监督学习类型，可根据个体的属性，将个体分配给两个预定义且互斥的类别之一。这是有监督的，因为在训练模型所用的样本中，所提供的属性具有正确标记的对象。基于诊断测试的结果对个人是否患有疾病的医学诊断是二元分类的一个示例。
+ **多元分类**是一种有监督学习类型，可根据个体的属性将个体分配给多个类别之一。这是有监督的，因为在训练模型所用的样本中，所提供的属性具有正确标记的对象。一个例子是预测与文本文档最相关的主题。文档可以分类为如宗教、政治或金融等类别，或者是其他多种预定义的主题类别之一。

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

有关 SageMaker AI 提供的内置监督学习算法的更多信息，请参阅[有监督学习](algos.md#algorithms-built-in-supervised-learning)。

### 无监督学习
<a name="algorithms-choose-unsupervised-learning"></a>

如果您的数据集中的特征或者属性（输入）不包含标签或目标值（输出），则您遇到的是无监督学习问题。在这种类型的问题中，必须根据在输入数据中发现的模式来预测输出。无监督学习问题的目标是发现数据中的模式，例如分组。无监督学习可用于各种各样的任务或问题类型。对于预处理的数据，通常会部署的两种主要方法是主成分和聚类分析。以下是无监督学习可以解决的问题类型的简短列表：
+ **降维**通常是数据探索步骤的一部分，这种步骤用于确定最相关的特征，以便用来构造模型。其理念是将数据从高维度、稀疏填充的空间，转换为保留原始数据中最重要属性的低维度空间。对于在进行统计分析时会造成问题的稀疏填充、高维度的数据，这提供了缓解维度难题的方法。它还可以用来帮助理解数据，将高维度数据降维到能够可视化的低维度数据。
+ **聚类分析**是一种用于将对象或案例分类为组的技术，这种组称为聚类。它尝试在数据中寻找离散组，其中一个组的成员尽可能彼此相似，而与其他组的成员尽可能互不相同。您可以定义希望算法用于确定相似性的特征或属性，选择一个距离函数来衡量相似性，然后指定要在分析中使用的聚类数量。
+ **异常检测**是指标识数据集中稀有的项、事件或观测数据，由于它们与其余数据存在显著差异而导致其成为可疑的数据。例如，可以使用识别异常项来检测银行欺诈行为或医疗错误。异常值也称为离群值、新颖值、噪音值、偏差值和例外值。
+ **密度估计**是根据观测到的数据，对无法观察到的潜在概率密度函数进行估计。密度估计的天然用途是进行数据探索。密度估计可以发现数据中的偏度和多模性等特征。密度估计的最基本形式是重新缩放直方图。

SageMaker AI 提供了几种内置的机器学习算法，您可以将其用于这些无人监督的学习任务。有关 SageMaker AI 提供的内置无监督算法的更多信息，请参阅[无监督学习](algos.md#algorithms-built-in-unsupervised-learning)。

### 强化学习
<a name="algorithms-choose-reinforcement-learning"></a>

强化学习是一种基于与环境的交互进行学习的类型。如果代理必须通过与动态环境的试错交互来学习行为，其目标是最大化代理通过其行为获得的长期奖励，那么这种类型的学习适用于代理。通过权衡具有不确定奖励的探索行为与具有已知奖励的探索行为，实现奖励最大化。

有关 SageMaker AI 的强化学习框架、工具包和环境的更多信息，请参阅[在 Amazon A SageMaker I 中使用强化学习](reinforcement-learning.md)。