

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

# 使用 API 创建用于时间序列预测的 AutoML 作业
<a name="autopilot-create-experiment-timeseries-forecasting"></a>

在机器学习中，预测是指根据历史数据和模式预测未来结果或趋势的过程。通过分析过去的时间序列数据并识别潜在模式，机器学习算法可以进行预测并提供对未来行为的有价值见解。预测的目标是开发模型，使其能够准确地捕捉一段时间内输入变量与目标变量之间关系。这涉及到研究各种因素，例如数据中的趋势、季节性和其他相关模式。然后，使用收集的信息来训练机器学习模型。模型在经过训练后，应该能够通过获取新的输入数据并应用学到的模式和关系来生成预测。它可以为各种使用场景提供预测，例如销售预测、股票市场趋势、天气预报、需求预测等等。

以下说明说明如何使用 SageMaker [API](https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-reference.html) 参考创建 Amazon A SageMaker utopilot 作业作为时间序列预测问题类型的试点实验。

**注意**  
文本和映像分类、时间序列预测和大型语言模型微调等任务都可以通过 [AutoML REST API](autopilot-reference.md) 的第 2 版独家实现。如果您选择的语言是 Python，则可以直接引用 Amazon SageMaker Python 软件开发工具包的 A [uto MLV2 对象](https://sagemaker.readthedocs.io/en/stable/api/training/automlv2.html#sagemaker.automl.automlv2.AutoMLV2)。[适用于 Python (Boto3) 的 AWS SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker/client/create_auto_ml_job_v2.html)  
喜欢用户界面便利性的用户可以使用 [Amazon SageMaker Canv](https://docs.aws.amazon.com/sagemaker/latest/dg/canvas-getting-started.html) as 访问预训练模型和生成式 AI 基础模型，或者创建针对特定文本、图像分类、预测需求或生成式 AI 量身定制的自定义模型。

您可以使用 Amazon Autopilot 支持的任何语言调用 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)API，以编程方式创建 SageMaker 自动驾驶时间序列预测实验。 AWS CLI

有关此 API 操作如何转换为所选语言中函数的信息，请参阅 `CreateAutoMLJobV2` 中的[另请参阅](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_SeeAlso)部分并选择 SDK。例如，对于 Python 用户，请参阅 适用于 Python (Boto3) 的 AWS SDK中 `[create\$1auto\$1ml\$1job\$1v2](https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker.html#SageMaker.Client.create_auto_ml_job_v2)` 的完整请求语法。

Autopilot 使用您的目标时间序列数据训练多个候选模型，然后为给定的目标指标选择最佳预测模型。当您的候选模型接受过训练后，您可以在对 `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` 的回复中的 `[BestCandidate](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateProperties.html#sagemaker-Type-CandidateProperties-CandidateMetrics)` 位置找到最佳候选指标。

以下各节定义了对于在时间序列预测中使用的 `CreateAutoMLJobV2` API，所必需和可选输入请求参数。

**注意**  
有关实用的[时间序列预测示例，请参阅笔记本使用 Amazon A SageMaker utopilot](https://github.com/aws/amazon-sagemaker-examples/blob/main/autopilot/autopilot_time_series.ipynb) 进行时间序列预测。在本笔记本中，您可以使用 Amazon A SageMaker utopilot 来训练时间序列模型，并使用经过训练的模型进行预测。笔记本提供了在 Amazon S3 上检索现成的表格历史数据集的说明。

## 先决条件
<a name="autopilot-timeseries-forecasting-prerequisites"></a>

在使用 Autopilot 在 A SageMaker I 中创建时间序列预测实验之前，请确保：
+ 准备您的时间序列数据集。数据集的准备涉及到从各种来源收集相关数据，清理和筛选数据以消除噪音和不一致的内容，然后将其整理为结构化的格式。要详细了解 Autopilot 中的时间序列格式要求，请参阅[时间序列数据集格式和缺失值填充方法](timeseries-forecasting-data-format.md)。或者，您可以使用所选国家/地区的公共假日日历来补充数据集，以便捕获相关的模式。有关假日日历的更多信息，请参阅[国家法定假日日历](autopilot-timeseries-forecasting-holiday-calendars.md)。
**注意**  
我们建议，每预测 1 个未来数据点，至少提供 3-5 个历史数据点。例如，若要根据每日数据提前 7 天（1 周）进行预测，则至少要根据 21-35 天的历史数据对模型进行训练。确保提供足够的数据，以捕捉季节性和经常性规律。
+ 将您的时间序列数据放入 Amazon S3 存储桶中。
+ 授予对包含用于运行实验的 Amazon S3 执行角色的输入数据的 SageMaker Amazon S3 存储桶的完全访问权限。完成此操作后，您可以在 Autopilot API 请求中使用此执行角色的 ARN。
  + 有关检索 SageMaker AI 执行角色的信息，请参阅[获取执行角色](sagemaker-roles.md#sagemaker-roles-get-execution-role)。
  + 有关向您的 SageMaker AI 执行角色授予访问 Amazon S3 中一个或多个特定存储桶的权限的信息，请参阅中的向 A * SageMaker I 执行角色添加其他 Amazon S3 权限*。[创建执行角色](sagemaker-roles.md#sagemaker-roles-create-execution-role)

## 必填参数
<a name="timeseries-forecasting-api-required-params"></a>

在调用 `[CreateAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html)` 以创建 Autopilot 实验进行时间序列预测时，您必须提供以下值：
+ `[AutoMLJobName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#API_CreateAutoMLJobV2_RequestSyntax)`，用于指定您作业的名称。名称应为 `string` 类型，最小长度为 1 个字符，最大长度为 32 个字符。
+ `[AutoMLJobInputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLJobInputDataConfig)` 中的至少一个 `[AutoMLJobChannel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobChannel.html)`，在其中指定包含数据的 Amazon S3 存储桶的名称。或者，您可以指定内容（CSV 或 Parquet 文件）和压缩 (GZip) 类型。
+ 类型为 `[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)` 的 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)`，用于配置时间序列预测作业的设置。具体而言，您必须指定：
  + 预测的**频率**，这是指预测的所需粒度（每小时、每天、每月等）。

    有效间隔是一个整数，后跟 `Y`（年）、`M`（月）、`W`（周）、`D`（日）、`H`（小时）和 `min`（分钟）。例如，`1D` 表示每天，`15min` 表示每 15 分钟。频率的值不得与下一个更大频率重叠。例如，您必须使用频率 `1H` 而不是 `60min`。

    每个频率的有效值如下所示：
    + 分钟 - 1-59
    + 小时 - 1-23
    + 天 - 1-6
    + 周 - 1-4
    + 月 - 1-11
    + 年 - 1
  + 预测中的预测**范围**，指的是模型预测的时间步长。预测范围也称为预测长度。最大预测范围是 500 个时间步长或数据集中时间步长 1/4 中较小的一个。
  + 其中 [TimeSeriesConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesConfig.html)，您可以通过指定以下内容来定义数据集的架构，以将列标题映射到您的预测：
    + `TargetAttributeName`：该列包含要预测目标字段的历史数据。
    + `TimestampAttributeName`：该列包含记录给定项目的目标值的时间点。
    + `ItemIdentifierAttributeName`：该列包含要预测目标值的项目标识符。

  以下是指定请求参数的示例。在此示例中，您设置的是在 20 天的时段中，对特定项目的预期数量或需求水平进行每日预测。

  ```
  "AutoMLProblemTypeConfig": { 
          "ForecastFrequency": "D",
          "ForecastHorizon": 20,
          "TimeSeriesConfig": {
              "TargetAttributeName": "demand",
              "TimestampAttributeName": "timestamp",
              "ItemIdentifierAttributeName": "item_id"
          },
  ```
+ `[OutputDataConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLOutputDataConfig.html)`，指定用于存储 AutoML 作业构件的 Amazon S3 输出路径。
+ `[RoleArn](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJob.html#sagemaker-CreateAutoMLJob-request-RoleArn)`，指定用于访问您的数据的角色的 ARN。您可以使用已授予对数据访问权限的执行角色的 ARN。

所有其他参数都是可选的。例如，您可以设置特定的预测分位数，为数据集中的缺失值选择填充方法，或者定义如何聚合与预测频率不一致的数据。要了解如何设置这些附加参数，请参阅[可选参数](#timeseries-forecasting-api-optional-params)。

## 可选参数
<a name="timeseries-forecasting-api-optional-params"></a>

以下各节提供了一些可以传递给时间序列预测 AutoML 作业的可选参数的详细信息。

### 如何指定算法
<a name="timeseries-forecasting-algorithms-selection"></a>

默认情况下，Autopilot 作业会在数据集上训练预先定义的算法列表。不过，您可以提供默认算法选择的子集。

对于时间序列预测，必须选择 `[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)` 作为 `[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)` 的类型。

然后，可以在的`AlgorithmsConfig`属性`AutoMLAlgorithms`中指定选定的数组[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)。

下面是一个 `AlgorithmsConfig` 属性的示例，在其 `AutoMLAlgorithms` 字段中正好列出了三种算法（“cnn-qr”、“prophet”和“arima”）。

```
{
   "[AutoMLProblemTypeConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-AutoMLProblemTypeConfig)": {
        "[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)": {
          "[CandidateGenerationConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html)": {
            "[AlgorithmsConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateGenerationConfig.html#sagemaker-Type-CandidateGenerationConfig-AlgorithmsConfig)":[
               {"[AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html)":["cnn-qr", "prophet", "arima"]}
            ]
         },
       },
     },
  }
```

有关可用的时间序列预测算法列表，请参见 [https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLAlgorithmConfig.html#sagemaker-Type-AutoMLAlgorithmConfig-AutoMLAlgorithms)。有关每种算法的详细信息，请参阅[时间序列预测支持的算法](timeseries-forecasting-algorithms.md)。

### 如何指定自定义分位数
<a name="timeseries-forecasting-custom-quantiles"></a>

Autopilot 使用您的目标时间序列数据训练 6 个候选模型，然后使用堆叠组合方法将这些模型结合起来，针对给定目标指标创建最佳的预测模型。每个 Autopilot 预测模型都通过生成分位数在 P1 和 P99 之间的预测来生成概率预测。这些分位数用于解释预测的不确定性。默认情况下，将为 0.1 (`p10`)、0.5 (`p50`) 和 0.9 (`p90`) 生成预测。您可以选择指定自己的分位数。

在 Autopilot 中，您最多可以在 0.01 (`p1`) 到 0.99 (`p99`) 之间指定五个预测分位数，增量为 0.01 或更高。`ForecastQuantiles` [TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)

在以下示例中，您设置的是在 20 天的时段中，对特定项目的预期数量或需求水平的每日第 10 个、第 25 个、第 50 个、第 75 个和第 90 个分位数进行预测。

```
"AutoMLProblemTypeConfig": { 
        "ForecastFrequency": "D",
        "ForecastHorizon": 20,
        "ForecastQuantiles": ["p10", "p25", "p50", "p75", "p90"],
        "TimeSeriesConfig": {
            "TargetAttributeName": "demand",
            "TimestampAttributeName": "timestamp",
            "ItemIdentifierAttributeName": "item_id"
        },
```

### 如何聚合不同预测频率的数据
<a name="timeseries-forecasting-aggregation"></a>

要创建预测模型（也称为实验中的最佳候选模型），您必须指定预测频率。在您的预测中，预测频率决定了进行预测的频率。例如，每月销售预测。Autopilot 最佳模型为数据生成预测的频率，可以大于所记录数据的频率。

在训练期间，Autopilot 会聚合与您指定的预测频率不一致的所有数据。例如，您可能有一些每日数据，但指定了每周预测频率。Autopilot 会根据每日数据所属的周来调整每日数据。然后，Autopilot 将其合并为每周的单个记录。

在聚合期间，默认的转换方法是对数据求和。您可以在的`Transformations`属性中创建 AutoML 作业时配置聚合。[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)支持的聚合方法包括 `sum`（默认）、`avg`、`first`、`min`、`max`。只有目标列支持聚合。

在以下示例中，您将配置聚合来计算单个促销预测的平均值，从而提供最终的聚合预测值。

```
"Transformations": {
            "Aggregation": {
                "promo": "avg"
            }
        }
```

### 如何处理输入数据集中的缺失值
<a name="timeseries-forecasting-fill-missing-values"></a>

Autopilot 提供了多种填充方法，用于处理时间序列数据集的目标列和其他数字列中的缺失值。有关支持的填充方法列表及其可用填充逻辑的信息，请参阅[处理缺失值](timeseries-forecasting-data-format.md#timeseries-missing-values)。

创建 AutoML 作业[TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)时，可以在的`Transformations`属性中配置填充策略。

要设置填充方法，您需要提供一个键/值对：
+ 键是要为其指定填充方法的列的名称。
+ 与键关联的值是一个对象，它定义该列的填充策略。

您可以为单个列指定多种填充方法。

要为填充方法设置特定值，您应将填充参数设置为所需的填充方法值（例如 `"backfill" : "value"`），并在带有“\$1value”后缀的其他参数中定义实际填充值。例如，要将 `backfill` 设置为值 `2`，您必须包括两个参数：`"backfill": "value"` 和 `"backfill_value":"2"`。

在以下示例中，您可以为不完整的数据列“price”指定填充策略，如下所示：项目第一个数据点和最后一个数据点之间的所有缺失值都设置为 `0`，之后所有缺失值都将填充值 `2`，直至数据集的结束日期值。

```
"Transformations": {
            "Filling": {
                "price": {
                        "middlefill" : "zero",
                        "backfill" : "value",
                        "backfill_value": "2"
                }
            }
        }
```

### 如何指定目标指标
<a name="timeseries-forecasting-set-objective-metric"></a>

Autopilot 会生成准确性指标来评估候选模型，帮助您选择使用哪个模型来生成预测。运行时间序列预测实验时，您可以选择 AutoML，让 Autopilot 为您优化预测变量，也可以手动为预测变量选择算法。

默认情况下，Autopilot 使用平均加权分位数损失。[但是，您可以在 “自动目标” `MetricName` 属性中创建 AutoML 作业时配置目标指标。MLJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLJobObjective.html)

有关可用算法的列表，请参阅[时间序列预测支持的算法](timeseries-forecasting-algorithms.md)。

### 如何将国家法定假日信息整合到数据集中
<a name="timeseries-forecasting-add-holiday-calendar"></a>

在 Autopilot 中，您可以将经过特征工程处理的国家法定假日信息数据集整合到您的时间序列中。Autopilot 原生提供了对 250 多个国家/地区的假日日历的支持。选择国家/地区后，Autopilot 会在训练期间，将该国家/地区的假日日历应用于数据集中的每个项目。这使模型能够识别与特定假日关联的模式。

在创建 AutoML 作业时，您可以通过将[HolidayConfigAttributes](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_HolidayConfigAttributes.html)对象传递给的属性来启用假日功能。`HolidayConfig` [TimeSeriesForecastingJobConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_TimeSeriesForecastingJobConfig.html)`HolidayConfigAttributes` 对象包含两个字母的 `CountryCode` 属性，确定扩充时间序列数据集时，使用哪个国家/地区的国家法定公共假日日历。

有关支持的日历及其相应的国家/地区代码的列表，请参阅[国家/地区代码](autopilot-timeseries-forecasting-holiday-calendars.md#holiday-country-codes)。

### 如何启用自动部署
<a name="timeseries-forecasting-auto-model-deployment"></a>

使用 Autopilot，您可以将预测模型自动部署到端点。要为 AutoML 作业的最佳候选模型启用自动部署，请在 AutoML 任务请求中包括 `[ModelDeployConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAutoMLJobV2.html#sagemaker-CreateAutoMLJobV2-request-ModelDeployConfig)`。这允许将最佳模型部署到 A SageMaker I 端点。以下是可供自定义的配置。
+ 要让 Autopilot 生成端点名称，请将 `[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)` 设置为 `True`。
+ 要为端点提供自己的名称，请设置 `[AutoGenerateEndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents) to False and provide a name of your choice in [EndpointName](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ModelDeployConfig.html#API_ModelDeployConfig_Contents)`。

### 如何配置 AutoML 以在 EMR Serverless 上为大型数据集启动远程作业
<a name="autopilot-set-emr-serverless-api-forecasting"></a>

您可以配置 AutoML 作业 V2，以便在处理大型数据集需要额外计算资源时，自动启动 Amazon EMR Serverless 上的远程作业。通过在需要时无缝过渡到 EMR Serverless，AutoML 作业可以处理超出初始资源配置的数据集，而无需您进行任何人工干预。EMR Serverless 可用于表格和时间序列问题类型。我们建议为大于 30 GB 的时间序列数据集设置此选项。

要让 AutoML 作业 V2 自动过渡到针对大型数据集的 EMR Serverless，您需要向 AutoML 作业 V2 输入请求的 `AutoMLComputeConfig` 提供一个 `EmrServerlessComputeConfig` 对象，其中包括一个 `ExecutionRoleARN` 字段。

`ExecutionRoleARN` 是 IAM 角色的 ARN，授予 AutoML 作业 V2 运行 EMR Serverless 作业所需的权限。

该角色应具有以下信任关系：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "emr-serverless.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
```

------

并授予权限进行：
+ 创建、列出和更新 EMR Serverless 应用程序。
+ 在 EMR Serverless 应用程序上启动、列出、获取或取消作业运行。
+ 标记 EMR Serverless 资源。
+ 将 IAM 角色传递给 EMR Serverless 服务以执行。

  通过授予 `iam:PassRole` 权限，AutoML 作业 V2 可以临时承担 `EMRServerlessRuntimeRole-*` 角色，并将其传递给 EMR Serverless 服务。EMR Serverless 任务执行环境使用这些 IAM 角色来访问运行时所需的其他 AWS 服务和资源，例如 Amazon S3，用于访问数据、记录、访问 AWS Glue 数据目录或其他基于您的工作负载 CloudWatch 要求的服务。

  有关此角色权限的详细信息，请参阅 [Amazon EMR Serverless 的作业运行时角色](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/security-iam-runtime-role.html)。

所提供 JSON 文档中定义的 IAM 策略会授予这些权限：

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [{
           "Sid": "EMRServerlessCreateApplicationOperation",
           "Effect": "Allow",
           "Action": "emr-serverless:CreateApplication",
           "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListApplicationOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListApplications",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessApplicationOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:UpdateApplication",
                "emr-serverless:GetApplication"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessStartJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:StartJobRun",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessListJobRunOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:ListJobRuns",
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessJobRunOperations",
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "EMRServerlessTagResourceOperation",
            "Effect": "Allow",
            "Action": "emr-serverless:TagResource",
            "Resource": "arn:aws:emr-serverless:*:*:/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/sagemaker:is-canvas-resource": "True",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
        },
        {
            "Sid": "IAMPassOperationForEMRServerless",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*",
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com",
                    "aws:ResourceAccount": "${aws:PrincipalAccount}"
                }
            }
         }
    ]
}
```

------

# 时间序列数据集格式和缺失值填充方法
<a name="timeseries-forecasting-data-format"></a>

时间序列数据是指在固定的时间间隔内记录的观察数据或测量值的集合。在这种类型的数据中，每个观察数据都与特定的时间戳或时间段相关联，从而创建按时间顺序排列的数据点序列。

您在时间序列数据集中包含的具体的列，取决于分析的目标和可供使用的数据。时间序列数据至少由一个 3 列表组成，其中：
+ 一列包含分配给各个项目的唯一标识符，用于引用它们在特定时刻的值。
+ 另一列表示在 point-in-time特定时刻记录给定项目值的值或**目标**。根据这些目标值对模型进行训练后，此目标列包含模型在定义的范围内按照指定频率预测的值。
+ 此外还包括一个时间戳列，用于记录测量该值的日期和时间。
+ 其他列可以包含可能影响预测性能的其他因素。例如，在以销售额或收入为目标的零售时间序列数据集中，您可以包括多种特征，用于提供有关已售单位、产品 ID、商店位置、客户数量、库存水平以及协变量指标（例如天气数据或人口统计信息）的信息。

**注意**  
您可以将经过特征工程处理的国家法定假日信息数据集添加到您的时间序列中。通过在时间序列模型中包含假期，您可以捕捉假日造成的周期性模式。这有助于您的预测更好地体现出数据的底层季节性。有关每个国家/地区的可用日历的信息，请参阅[国家法定假日日历](autopilot-timeseries-forecasting-holiday-calendars.md)

## 时间序列预测的数据集格式
<a name="timeseries-format"></a>

Autopilot 支持数字、分类、文本和日期时间数据类型。目标列的数据类型必须为数字类型。

Autopilot 支持格式化为 CSV（默认）文件或 Parquet 文件的时间序列数据。
+ **CSV** (comma-separated-values) 是一种基于行的文件格式，它以人类可读的纯文本存储数据，这是数据交换的热门选择，因为它们受到各种应用程序的支持。
+ **Parquet** 是一种基于列的文件格式，相比基于行的文件格式，数据的存储和处理更高效。这使它们成为解决大数据问题的更好选择。

有关用于在 Autopilot 中进行预测的时间序列数据集的资源限制的更多信息，请参阅 [时间序列预测 Autopilot 的资源限制](timeseries-forecasting-limits.md)。

## 处理缺失值
<a name="timeseries-missing-values"></a>

时间序列预测数据中的一个常见问题是存在缺失值。由于多种原因，您的数据可能会有缺失值，这包括测量失败、格式化问题、人为错误或缺乏可记录的信息。例如，如果您要预测零售商店的商品需求，并且某个商品已售罄或无货，则当该商品缺货时，该商品将没有销售数据可供记录。缺失值在占到一定的比例时，会显著影响模型的精度。

Autopilot 提供了多种填充方法来处理缺失值，对于目标列和其他附加列，分别有不同的填充方法。填充是向数据集中缺少的条目添加标准化值的过程。

请参阅[如何处理输入数据集中的缺失值](autopilot-create-experiment-timeseries-forecasting.md#timeseries-forecasting-fill-missing-values)，了解如何设置填充时间序列数据集中缺失值的方法。

Autopilot 支持以下填充方法：
+ **前向填充：**填充所有项目中最早记录的数据点，与各个项目的记录起点（各个项目可以从不同的时间开始）之间的所有缺失值。这样可以确保各个项目的数据都是完整的，并且覆盖了从最早记录数据点到其各自起点的范围。
+ **中间填充：**填充数据集中项目的开始日期和项目结束日期之间的任何缺失值。
+ **后向填充：**填充各个项目（各个项目可以在不同的时间停止）最晚记录的数据点，与所有项目中最晚记录的数据点之间的所有缺失值。
+ **未来填充：**填充所有项目中最晚记录的数据点与预测范围结束之间的任何缺失值。

下图提供了不同填充方法的可视化表示。

![\[Amazon A SageMaker utopilot 中用于时间序列预测的不同填充方法。\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/images/autopilot/autopilot-forecast-filling-methods.png)


### 选择填充逻辑
<a name="filling-logic"></a>

选择填充逻辑时，您应考虑模型将如何解释逻辑。例如，在零售场景中，记录有货商品的 0 销售额与记录无货商品的 0 销售额不同，因为后者并不意味着客户对该商品缺乏兴趣。因此，时间序列目标列中的 `0` 填充可能会导致预测变量的预测偏差过低，而 `NaN` 填充可能会忽略实际上出现 0 件商品有货可用于销售的情况，并导致预测变量的预测偏差过高。

### 填充逻辑
<a name="filling-restrictions"></a>

您可以对数据集中的目标列和其他数字列执行填充。目标列的填充准则和限制不同于其他数值列。

填充指南


| 列类型 | 是否默认填充？ | 支持的填充方法 | 默认填充逻辑 | 接受的填充逻辑 | 
| --- | --- | --- | --- | --- | 
| 目标列 | 是 | 中间填充和回填充 | 0 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/timeseries-forecasting-data-format.html)  | 
| 其他数值列 | 否 | 中间填充、回填充和未来填充 | 无默认值 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/sagemaker/latest/dg/timeseries-forecasting-data-format.html)  | 

**注意**  
对于目标列和其他数值列，根据缺失值之前最近的 64 个数据条目的滚动窗口来计算 `mean`、`median`、`min` 和 `max`。

# 国家法定假日日历
<a name="autopilot-timeseries-forecasting-holiday-calendars"></a>

Autopilot 支持国家法定假日日历信息的特征工程数据集，可访问 250 多个国家/地区的假日日历。假日日历功能在零售领域特别有用，公共假日会对需求产生重大影响。下一节列出了您可以用来访问每个受支持国家的假日日历的国家代码。

请参阅[如何将国家法定假日信息整合到数据集中](autopilot-create-experiment-timeseries-forecasting.md#timeseries-forecasting-add-holiday-calendar)，了解如何向数据集添加日历。

## 国家/地区代码
<a name="holiday-country-codes"></a>

Autopilot 提供了对以下国家/地区的公共假日日历的原生支持。通过 API 指定国家/地区时，请使用**国家/地区**代码。


| 国家/地区 | 国家/地区代码 | 
| --- | --- | 
|   阿富汗   |   AF   | 
|   奥兰群岛   |   AX   | 
|   阿尔巴尼亚   |   AL   | 
|   阿尔及利亚   |   DZ   | 
|   美属萨摩亚   |   AS   | 
|   安道尔   |   AD   | 
|   安哥拉   |   AO   | 
|   安圭拉岛   |   AI   | 
|   南极洲   |   AQ   | 
|   安提瓜和巴布达   |   AG   | 
|   阿根廷   |   AR   | 
|   亚美尼亚   |   AM   | 
|   阿鲁巴岛   |   AW   | 
|   澳大利亚   |   AU   | 
|   奥地利   |   AT   | 
|   阿塞拜疆   |   AZ   | 
|   巴哈马   |   BS   | 
|   巴林   |   BH   | 
|   孟加拉国   |   BD   | 
|   巴巴多斯   |   BB   | 
|   白俄罗斯   |   BY   | 
|   比利时   |   BE   | 
|   伯利兹   |   BZ   | 
|   贝宁   |   BJ   | 
|   百慕大   |   BM   | 
|   不丹   |   BT   | 
|   玻利维亚   |   BO   | 
|   波斯尼亚和黑塞哥维那   |   BA   | 
|   博茨瓦纳   |   BW   | 
|   布韦岛   |   BV   | 
|   巴西   |   BR   | 
|   英属印度洋领地   |   IO   | 
|   英属维尔京群岛   |   VG   | 
|   文莱达鲁萨兰国   |   BN   | 
|   保加利亚   |   BG   | 
|   布基纳法索   |   BF   | 
|   布隆迪   |   BI   | 
|   柬埔寨   |   KH   | 
|   喀麦隆   |   CM   | 
|   加拿大   |   CA   | 
|   佛得角   |   CV   | 
|   荷兰加勒比区   |   BQ   | 
|   开曼群岛   |   KY   | 
|   中非共和国   |   CF   | 
|   乍得   |   TD   | 
|   智利   |   CL   | 
|   中国   |   CN   | 
|   圣诞岛   |   CX   | 
|   科科斯（基林）群岛   |   CC   | 
|   哥伦比亚   |   CO   | 
|   科摩罗   |   KM   | 
|   库克群岛   |   CK   | 
|   哥斯达黎加   |   CR   | 
|   克罗地亚   |   HR   | 
|   古巴   |   CU   | 
|   库拉索   |   CW   | 
|   塞浦路斯   |   CY   | 
|   捷克   |   CZ   | 
|   刚果民主共和国   |   CD   | 
|   丹麦   |   DK   | 
|   吉布提   |   DJ   | 
|   多米尼加   |   DM   | 
|   多米尼加共和国   |   DO   | 
|   厄瓜多尔   |   EC   | 
|   埃及   |   EG   | 
|   萨尔瓦多   |   SV   | 
|   赤道几内亚   |   GQ   | 
|   厄立特里亚   |   ER   | 
|   爱沙尼亚   |   EE   | 
|   史瓦帝尼   |   SZ   | 
|   埃塞俄比亚   |   ET   | 
|   福克兰群岛   |   FK   | 
|   法罗群岛   |   FO   | 
|   斐济   |   FJ   | 
|   芬兰   |   FI   | 
|   法国   |   FR   | 
|   法属圭亚那   |   GF   | 
|   法属玻里尼西亚   |   PF   | 
|   法属南部领地   |   TF   | 
|   加蓬   |   GA   | 
|   冈比亚   |   GM   | 
|   格鲁吉亚   |   GE   | 
|   德国   |   DE   | 
|   加纳   |   GH   | 
|   直布罗陀   |   GI   | 
|   希腊   |   GR   | 
|   格陵兰   |   GL   | 
|   格林纳达   |   GD   | 
|   瓜德罗普   |   GP   | 
|   关岛   |   GU   | 
|   危地马拉   |   GT   | 
|   根西岛   |   GG   | 
|   几内亚   |   GN   | 
|   几内亚比绍   |   GW   | 
|   圭亚那   |   GY   | 
|   海地   |   HT   | 
|   赫德岛和 McDonald 岛屿   |   HM   | 
|   洪都拉斯   |   HN   | 
|   Hong Kong   |   HK   | 
|   匈牙利   |   HU   | 
|   Iceland   |   IS   | 
|   印度   |   IN   | 
|   印度尼西亚   |   ID   | 
|   伊朗   |   IR   | 
|   伊拉克   |   IQ   | 
|   爱尔兰   |   IE   | 
|   马恩岛   |   IM   | 
|   以色列   |   IL   | 
|   意大利   |   IT   | 
|   科特迪瓦   |   CI   | 
|   牙买加   |   JM   | 
|   日本   |   JP   | 
|   Jersey   |   JE   | 
|   约旦   |   JO   | 
|   哈萨克   |   KZ   | 
|   肯尼亚   |   KE   | 
|   基里巴斯   |   KI   | 
|   科索沃   |   XK   | 
|   科威特   |   KW   | 
|   吉尔吉斯斯坦   |   KG   | 
|   老挝   |   LA   | 
|   拉脱维亚   |   LV   | 
|   黎巴嫩   |   LB   | 
|   莱索托   |   LS   | 
|   利比里亚   |   LR   | 
|   利比亚   |   LY   | 
|   列支敦士登   |   LI   | 
|   立陶宛   |   LT   | 
|   卢森堡   |   LU   | 
|   澳门   |   MO   | 
|   马达加斯加   |   MG   | 
|   马拉维   |   MW   | 
|   马来西亚   |   MY   | 
|   马尔代夫   |   MV   | 
|   Mali   |   ML   | 
|   马耳他   |   MT   | 
|   马绍尔群岛   |   MH   | 
|   马提尼克   |   MQ   | 
|   毛里塔尼亚   |   MR   | 
|   毛里求斯   |   MU   | 
|   马约特岛   |   YT   | 
|   墨西哥   |   MX   | 
|   密克罗尼西亚   |   FM   | 
|   摩尔多瓦   |   MD   | 
|   摩纳哥   |   MC   | 
|   蒙古   |   MN   | 
|   黑山共和国   |   ME   | 
|   Montserrat   |   MS   | 
|   摩洛哥   |   MA   | 
|   莫桑比克   |   MZ   | 
|   缅甸   |   MM   | 
|   纳米比亚   |   NA   | 
|   瑙鲁   |   NR   | 
|   尼泊尔   |   NP   | 
|   荷兰   |   NL   | 
|   新喀里多尼亚   |   NC   | 
|   新西兰   |   NZ   | 
|   尼加拉瓜   |   NI   | 
|   尼日尔   |   NE   | 
|   尼日利亚   |   NG   | 
|   纽埃岛   |   NU   | 
|   诺福克岛   |   NF   | 
|   朝鲜   |   KP   | 
|   北马其顿   |   MK   | 
|   北马里亚纳群岛   |   MP   | 
|   挪威   |   NO   | 
|   阿曼   |   OM   | 
|   巴基斯坦   |   PK   | 
|   帕劳群岛   |   PW   | 
|   巴勒斯坦   |   PS   | 
|   巴拿马   |   PA   | 
|   巴布亚新几内亚   |   PG   | 
|   巴拉圭   |   PY   | 
|   秘鲁   |   PE   | 
|   菲律宾   |   PH   | 
|   皮特凯恩群岛   |   PN   | 
|   波兰   |   PL   | 
|   葡萄牙   |   PT   | 
|   波多黎各   |   PR   | 
|   卡塔尔   |   QA   | 
|   刚果共和国   |   CG   | 
|   留尼汪岛   |   RE   | 
|   罗马尼亚   |   RO   | 
|   俄罗斯联邦   |   RU   | 
|   卢旺达   |   RW   | 
|   圣巴泰勒米   |   BL   | 
|   “圣赫勒拿岛、阿森松岛和特里斯坦-达库尼亚岛”   |   SH   | 
|   圣基茨和尼维斯   |   KN   | 
|   圣卢西亚岛   |   LC   | 
|   圣马丁   |   MF   | 
|   圣皮埃尔和密克隆群岛   |   PM   | 
|   圣文森特和格林纳丁斯   |   VC   | 
|   萨摩亚群岛   |   WS   | 
|   圣马力诺   |   SM   | 
|   圣多美与普林希比共和国   |   ST   | 
|   沙特阿拉伯   |   SA   | 
|   塞内加尔   |   SN   | 
|   塞尔维亚   |   RS   | 
|   塞舌尔   |   SC   | 
|   塞拉利昂   |   SL   | 
|   新加坡   |   SG   | 
|   荷属圣马丁   |   SX   | 
|   斯洛伐克   |   SK   | 
|   斯洛文尼亚   |   SI   | 
|   所罗门群岛   |   SB   | 
|   索马里   |   SO   | 
|   南非   |   ZA   | 
|   南乔治亚岛和南桑威奇群岛   |   GS   | 
|   韩国   |   KR   | 
|   南苏丹   |   SS   | 
|   西班牙   |   ES   | 
|   斯里兰卡   |   LK   | 
|   苏丹   |   SD   | 
|   苏里南   |   SR   | 
|   斯瓦尔巴群岛和扬马延岛   |   SJ   | 
|   瑞典   |   SE   | 
|   瑞士   |   CH   | 
|   阿拉伯叙利亚共和国   |   SY   | 
|   中国台湾   |   TW   | 
|   塔吉克斯坦   |   TJ   | 
|   坦桑尼亚   |   TZ   | 
|   泰国   |   TH   | 
|   东帝汶   |   TL   | 
|   多哥   |   TG   | 
|   托克劳   |   TK   | 
|   汤加   |   TO   | 
|   特立尼达和多巴哥   |   TT   | 
|   突尼斯   |   TN   | 
|   土耳其   |   TR   | 
|   土库曼斯坦   |   TM   | 
|   特克斯和凯科斯群岛   |   TC   | 
|   图瓦卢   |   TV   | 
|   乌干达   |   UG   | 
|   乌克兰   |   UA   | 
|   阿拉伯联合酋长国   |   AE   | 
|   英国   |   UK   | 
|   联合国   |   UN   | 
|   美国   |   US   | 
|   美国本土外小岛屿   |   UM   | 
|   美属维尔京群岛   |   VI   | 
|   乌拉圭   |   UY   | 
|   乌兹别克斯坦   |   UZ   | 
|   瓦努阿图   |   VU   | 
|   梵蒂冈城   |   VA   | 
|   委内瑞拉   |   VE   | 
|   越南   |   VN   | 
|   瓦利斯和富图纳群岛   |   WF   | 
|   西撒哈拉   |   EH   | 
|   也门   |   YE   | 
|   赞比亚   |   ZM   | 
|   津巴布韦   |   ZW   | 

# 目标指标
<a name="timeseries-objective-metric"></a>

Autopilot 会生成准确性指标来评估候选模型，帮助您选择使用哪个模型来生成预测。您可以让 Autopilot 为您优化预测变量，也可以手动为预测变量选择算法。默认情况下，Autopilot 使用平均加权分位数损失。

以下列表包含当前可用于衡量时间序列预测模型性能的指标名称。

**`RMSE`**  
均方根误差 (RMSE) – 衡量预测值与实际值之间平方差的平方根并对所有值取平均值。这是一个重要的指标，用于指示是否存在较大的模型误差和异常值。值的范围从零 (0) 到无穷大，数字越小表示模型对数据的拟合效果越好。RMSE 依赖于规模，不应用于比较不同大小的数据集。

**`wQL`**  
加权分位数损失 (wQL) – 测量预测和实际 P10、P50 和 P90 分位数之间的加权绝对差，用来评测预测的准确性，较低的值表示性能更好。

**`Average wQL (default)`**  
平均加权分位数损失（平均 wQL）– 通过对 P10、P50 和 P90 分位数处的准确性取平均值评估预测。值越低表示模型越准确。

**`MASE`**  
平均绝对标度误差 (MASE) - 预测的平均绝对误差，通过简单基线预测方法进行标准化。值越低表示模型越准确，MASE < 1 时预计比基线好，而 MASE > 1 时预计比基线差。

**`MAPE`**  
平均绝对误差百分比 (MAPE) - 所有时间点的平均误差百分比（平均预测值与实际值之差的百分比）。值越低表示模型越准确，MAPE = 0 表示模型没有误差。

**`WAPE`**  
加权绝对百分比误差 (WAPE) – 绝对误差之和，按照绝对目标之和标准化，用于衡量预测值相比观测值的总体偏差。值越低表示模型越准确。

# 时间序列预测支持的算法
<a name="timeseries-forecasting-algorithms"></a>

Autopilot 根据您的目标时间序列训练以下六种内置算法。然后，它使用堆叠组合方法将这些候选模型结合起来，针对给定目标指标创建最佳的预测模型。
+ **卷积神经网络——分位数回归 (CNN-QR) — CNN-QR** 是一种专有的机器学习算法，用于使用因果卷积神经网络预测时间序列 ()。CNNsCNN-QR 最适合处理包含数百个时间序列的大型数据集。
+ **Deepar\$1** — Deepar\$1 是一种专有的机器学习算法，用于使用循环神经网络预测时间序列 ()。RNNsDeepAR\$1 最适合处理包含数百个时间特征的大型数据集。
+ **Prophet** – [Prophet](https://facebook.github.io/prophet/) 是一种流行的局部贝叶斯结构时间序列模型，基于加法模型，其中非线性趋势与每年、每周和每日的季节性相拟合。Autopilot Prophet 算法使用 Prophet 的 Python 实施的 [Prophet 类](https://facebook.github.io/prophet/docs/quick_start.html#python-ap)。它最适合具有强季节效应的时间序列和多个季节的历史数据。
+ **非参数时间序列 (NPTS)** – NPTS 专有算法是可扩展的概率基线预测器。它通过从过去的观察数据中采样来预测给定时间序列的未来值分布。NPTS 在处理稀疏或间歇性时间序列时尤为有用。
+ **自回归积分滑动平均值 (ARIMA)** – ARIMA 是一种面向时间序列预测的常用统计算法。该算法捕获输入数据集中的标准时间结构（模式化的时间组织）。它对小于 100 个时间序列的简单数据集特别有用。
+ **指数平滑法 (ETS)** – ETS 是一种用于时间序列预测的常用统计算法。该算法对小于 100 个时间序列的简单数据集以及具有季节性模式的数据集特别有用。ETS 计算时间序列数据集中所有观察数据的加权平均值作为其预测，权重随时间呈指数递减。

# 预测已部署的 Autopilot 模型
<a name="timeseries-forecasting-deploy-models"></a>

使用 AutoML API 训练模型后，您可以将其部署到实时或批量预测中。

AutoML API 可针对时间序列数据训练多个候选模型，并根据目标指标选择最佳预测模型。模型候选人经过训练后，可以在响应 [DescribeAutoMLJobV2中找到最佳候选对象，网址](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)为[BestCandidate](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-CandidateName)。

要使用此性能最佳的模型进行预测，可以设置一个端点来交互式地获取预测结果，或者使用批量预测来对一批观测数据进行预测。

**注意事项**
+ 在提供用于预测的输入数据时，数据的架构应与用于训练模型的架构相同，这包括列数、列标题和数据类型。您可以预测相同或不同时间戳范围 IDs 内的现有或新物料，以预测不同的时间段。
+ 预测模型针对训练时在输入请求中指定的未来预测范围点进行预测，该范围从*目标结束日期*开始，到*目标结束日期 \$1 预测范围*结束。要使用模型来预测特定日期，您应提供与原始输入数据格式相同的数据，并延伸到指定的*目标结束日期*。在这种情况下，模型将从新的目标结束日期开始预测。

  例如，如果您的数据集包含从 1 月到 6 月的每月数据，而预测范围为 2，则模型将预测未来 2 个月（即 7 月和 8 月）的目标值。如果在 8 月，您想预测未来 2 个月，那么此时您的输入数据应该是从 1 月到 8 月，模型将预测未来 2 个月（9 月、10 月）。
+ 在预测未来数据点时，并没有设定提供历史数据的最低量。在时间序列中包含足够的数据，以捕捉季节性和重复性规律。

**Topics**
+ [实时预测](timeseries-forecasting-realtime.md)
+ [批量预测](timeseries-forecasting-batch.md)

# 实时预测
<a name="timeseries-forecasting-realtime"></a>

当您需要生成预测时，实时预测非常有用 on-the-fly，例如对于需要即时响应的应用程序或对单个数据点进行预测时。

通过将 AutoML 模型作为实时端点部署，您可以按需生成预测，并最大限度地减少接收新数据与获得预测之间的延迟。这使得实时预测非常适合需要即时、个性化或事件驱动预测功能的应用。

对于实时预测，数据集应该是输入数据集的子集。实时端点的输入数据大小约为 6 MB，响应超时限制为 60 秒。我们建议一次引入一个或几个项目。

您可以使用 SageMaker APIs 检索 AutoML 作业的最佳候选任务，然后使用该候选任务创建 A SageMaker I 终端节点。

或者，当您创建 Autopilot 实验时，也可选择自动部署选项。有关设置模型自动部署的信息，请参阅[如何启用自动部署](autopilot-create-experiment-timeseries-forecasting.md#timeseries-forecasting-auto-model-deployment)。

**要使用您的最佳候选模型创建 A SageMaker I 端点，请执行以下操作：**

1. 

**读取 AutoML 作业的详细信息。**

   以下 AWS CLI 命令示例使用 [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) API 获取 AutoML 作业的详细信息，包括有关最佳候选模型的信息。

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name --region region
   ```

1. 

**从中提取容器定义[InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)以获得最佳候选模型。**

   容器定义是容器化环境，用于托管经过训练的 SageMaker AI 模型以进行预测。

   ```
   BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
     --auto-ml-job-name job-name 
     --region region \
     --query 'BestCandidate.InferenceContainers[0]' \
     --output json
   ```

   该命令提取最佳候选模型的容器定义，并将其存储在 `BEST_CANDIDATE` 变量中。

1. 

**使用最佳候选容器定义创建 SageMaker AI 模型。**

   使用前面步骤中的容器定义通过 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)AP SageMaker I 创建 AI 模型。

   ```
   aws sagemaker create-model \
               --model-name 'your-candidate-name>' \
               --primary-container "$BEST_CANDIDATE"
               --execution-role-arn 'execution-role-arn>' \
               --region 'region>
   ```

   该`--execution-role-arn`参数指定 A SageMaker I 在使用模型进行推理时扮演的 IAM 角色。有关此角色所需权限的详细信息，请参阅 [CreateModel API：执行角色权限](https://docs.aws.amazon.com/)。

1. 

**使用模型创建 A SageMaker I 端点配置。**

   以下 AWS CLI 命令使用 [CreateEndpointConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpointConfig.html)API 创建终端节点配置。

   ```
   aws sagemaker create-endpoint-config \
     --production-variants file://production-variants.json \
     --region 'region'
   ```

   其中 `production-variants.json` 文件包含模型配置，包括模型名称和实例类型。
**注意**  
我们建议使用 [m5.12xlarge](https://aws.amazon.com/ec2/instance-types/m5/) 实例进行实时预测。

   ```
   [
       {
         "VariantName": "variant-name",
         "ModelName": "model-name",
         "InitialInstanceCount": 1,
         "InstanceType": "m5.12xlarge"
       }
     ]
   }
   ```

1. 

**使用终端节点配置创建 SageMaker AI 终端节点。**

   以下 AWS CLI 示例使用 [CreateEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html)API 创建终端节点。

   ```
   aws sagemaker create-endpoint \
               --endpoint-name 'endpoint-name>' \
               --endpoint-config-name 'endpoint-config-name' \
               --region 'region'
   ```

   使用 [DescribeEndpoint](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeEndpoint.html)API 检查实时推理端点部署的进度。以以下 AWS CLI 命令为例。

   ```
   aws sagemaker describe-endpoint \
               --endpoint-name 'endpoint-name' \
               --region 'region'
   ```

   将 `EndpointStatus` 更改为 `InService` 后，端点即可用于实时推理。

1. 

**调用 A SageMaker I 端点进行预测。**

   ```
   aws sagemaker invoke-endpoint \
               --endpoint-name 'endpoint-name' \ 
               --region 'region' \
               --body file://input-data-in-bytes.json \
               --content-type 'application/json' outfile
   ```

   其中 `input-data-in-bytes.json` 文件包含预测的输入数据。

# 批量预测
<a name="timeseries-forecasting-batch"></a>

批量预测，也称为离线推理，可根据一批观察数据生成模型预测。对于大型数据集或者在您不需要立即响应模型预测请求时，批量推理是很好的选择。

与之对比的是，在线推理（实时推理）会实时生成预测。

您可以使用 SageMaker APIs 检索 AutoML 作业的最佳候选对象，然后使用该候选任务提交一批输入数据进行推理。

1. 

**读取 AutoML 作业的详细信息。**

   以下 AWS CLI 命令示例使用 [DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html) API 获取 AutoML 作业的详细信息，包括有关最佳候选模型的信息。

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name job-name --region region
   ```

1. 

**从中提取容器定义[InferenceContainers](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AutoMLCandidate.html#sagemaker-Type-AutoMLCandidate-InferenceContainers)以获得最佳候选模型。**

   容器定义是容器化环境，用于托管经过训练的 SageMaker AI 模型以进行预测。

   ```
   BEST_CANDIDATE=$(aws sagemaker describe-auto-ml-job-v2 \
         --auto-ml-job-name job-name 
         --region region \
         --query 'BestCandidate.InferenceContainers[0]' \
         --output json
   ```

   该命令提取最佳候选模型的容器定义，并将其存储在 `BEST_CANDIDATE` 变量中。

1. 

**使用最佳候选容器定义创建 SageMaker AI 模型。**

   使用前面步骤中的容器定义通过 [CreateModel](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModel.html)AP SageMaker I 创建 AI 模型。

   ```
   aws sagemaker create-model \
         --model-name 'model-name' \
         --primary-container "$BEST_CANDIDATE"
         --execution-role-arn 'execution-role-arn>' \
         --region 'region>
   ```

   该`--execution-role-arn`参数指定 A SageMaker I 在使用模型进行推理时扮演的 IAM 角色。有关此角色所需权限的详细信息，请参阅 [CreateModel API：执行角色权限](https://docs.aws.amazon.com/)。

1. 

**创建批量转换作业。**

   以下示例使用 [CreateTransformJob](https://docs.aws.amazon.com/cli/latest/reference/sagemaker/create-transform-job.html)API 创建转换作业。

   ```
   aws sagemaker create-transform-job \ 
          --transform-job-name 'transform-job-name' \
          --model-name 'model-name'\
          --transform-input file://transform-input.json \
          --transform-output file://transform-output.json \
          --transform-resources file://transform-resources.json \
          --region 'region'
   ```

   输入、输出和资源详情在不同的 JSON 文件中定义：
   + `transform-input.json`:

     ```
     {
       "DataSource": {
         "S3DataSource": {
           "S3DataType": "S3Prefix",
           "S3Uri": "s3://my-input-data-bucket/path/to/input/data"
         }
       },
       "ContentType": "text/csv",
       "SplitType": "None"
     }
     ```
   + `transform-output.json`:

     ```
     {
       "S3OutputPath": "s3://my-output-bucket/path/to/output",
       "AssembleWith": "Line"
     }
     ```
   + `transform-resources.json`:
**注意**  
我们建议将 [m5.12xlarge](https://aws.amazon.com/ec2/instance-types/m5/) 实例用于通用工作负载，将 `m5.24xlarge` 实例用于大数据预测任务。

     ```
     {
       "InstanceType": "instance-type",
       "InstanceCount": 1
     }
     ```

1. 

**使用 [DescribeTransformJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTransformJob.html)API 监控转换任务的进度。**

   以以下 AWS CLI 命令为例。

   ```
   aws sagemaker describe-transform-job \
         --transform-job-name 'transform-job-name' \
         --region region
   ```

1. 

**读取批量转换输出。**

   任务完成后，`S3OutputPath` 中会显示预测结果。

   输出文件名称格式如下：`input_data_file_name.out`。例如，如果您的输入文件是 `text_x.csv`，则输出文件名称是 `text_x.csv.out`。

   ```
   aws s3 ls s3://my-output-bucket/path/to/output/
   ```

以下代码示例说明了如何使用适用于 Python 的 AWS 软件开发工具包 (boto3) 和 AWS CLI 用于批量预测的开发工具包。

------
#### [ AWS SDK for Python (boto3) ]

 以下示例使用 **AWS SDK for Python (boto3)** 进行批量预测。

```
import sagemaker 
import boto3

session = sagemaker.session.Session()

sm_client = boto3.client('sagemaker', region_name='us-west-2')
role = 'arn:aws:iam::1234567890:role/sagemaker-execution-role'
output_path = 's3://test-auto-ml-job/output'
input_data = 's3://test-auto-ml-job/test_X.csv'

best_candidate = sm_client.describe_auto_ml_job_v2(AutoMLJobName=job_name)['BestCandidate']
best_candidate_containers = best_candidate['InferenceContainers']
best_candidate_name = best_candidate['CandidateName']

# create model
reponse = sm_client.create_model(
    ModelName = best_candidate_name,
    ExecutionRoleArn = role,
    Containers = best_candidate_containers 
)

# Lauch Transform Job
response = sm_client.create_transform_job(
    TransformJobName=f'{best_candidate_name}-transform-job',
    ModelName=model_name,
    TransformInput={
        'DataSource': {
            'S3DataSource': {
                'S3DataType': 'S3Prefix',
                'S3Uri': input_data
            }
        },
        'ContentType': "text/csv",
        'SplitType': 'None'
    },
    TransformOutput={
        'S3OutputPath': output_path,
        'AssembleWith': 'Line',
    },
    TransformResources={
        'InstanceType': 'ml.m5.2xlarge',
        'InstanceCount': 1,
    },
)
```

批量推理作业返回以下格式的响应。

```
{'TransformJobArn': 'arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-transform-job',
 'ResponseMetadata': {'RequestId': '659f97fc-28c4-440b-b957-a49733f7c2f2',
  'HTTPStatusCode': 200,
  'HTTPHeaders': {'x-amzn-requestid': '659f97fc-28c4-440b-b957-a49733f7c2f2',
   'content-type': 'application/x-amz-json-1.1',
   'content-length': '96',
   'date': 'Thu, 11 Aug 2022 22:23:49 GMT'},
  'RetryAttempts': 0}}
```

------
#### [ AWS Command Line Interface (AWS CLI) ]

1. **获得最佳候选容器定义**。

   ```
   aws sagemaker describe-auto-ml-job-v2 --auto-ml-job-name 'test-automl-job' --region us-west-2
   ```

1. **创建模型**。

   ```
   aws sagemaker create-model --model-name 'test-sagemaker-model'
   --containers '[{
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz",
       "Environment": {
           "AUTOML_SPARSE_ENCODE_RECORDIO_PROTOBUF": "1",
           "AUTOML_TRANSFORM_MODE": "feature-transform",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "application/x-recordio-protobuf",
           "SAGEMAKER_PROGRAM": "sagemaker_serve",
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code"
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-xgboost:1.3-1-cpu-py3",
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/tuning/flicdf10v2-dpp0-xgb/test-job1E9-244-7490a1c0/output/model.tar.gz",
       "Environment": {
           "MAX_CONTENT_LENGTH": "20971520",
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv",
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,probabilities" 
       }
   }, {
       "Image": "348316444620.dkr.ecr.us-west-2.amazonaws.com/sagemaker-sklearn-automl:2.5-1-cpu-py3", 
       "ModelDataUrl": "s3://amzn-s3-demo-bucket/out/test-job1/data-processor-models/test-job1-dpp0-1-e569ff7ad77f4e55a7e549a/output/model.tar.gz", 
       "Environment": { 
           "AUTOML_TRANSFORM_MODE": "inverse-label-transform", 
           "SAGEMAKER_DEFAULT_INVOCATIONS_ACCEPT": "text/csv", 
           "SAGEMAKER_INFERENCE_INPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_OUTPUT": "predicted_label", 
           "SAGEMAKER_INFERENCE_SUPPORTED": "predicted_label,probability,labels,probabilities", 
           "SAGEMAKER_PROGRAM": "sagemaker_serve", 
           "SAGEMAKER_SUBMIT_DIRECTORY": "/opt/ml/model/code" 
       } 
   }]' \
   --execution-role-arn 'arn:aws:iam::1234567890:role/sagemaker-execution-role' \
   --region 'us-west-2'
   ```

1. **创建转换作业**。

   ```
   aws sagemaker create-transform-job --transform-job-name 'test-tranform-job'\
    --model-name 'test-sagemaker-model'\
    --transform-input '{
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "SplitType": "None"
       }'\
   --transform-output '{
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line"
       }'\
   --transform-resources '{
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       }'\
   --region 'us-west-2'
   ```

1. **检查转换作业的进度**。

   ```
   aws sagemaker describe-transform-job --transform-job-name  'test-tranform-job' --region us-west-2
   ```

   以下是来自转换作业的响应。

   ```
   {
       "TransformJobName": "test-tranform-job",
       "TransformJobArn": "arn:aws:sagemaker:us-west-2:1234567890:transform-job/test-tranform-job",
       "TransformJobStatus": "InProgress",
       "ModelName": "test-model",
       "TransformInput": {
           "DataSource": {
               "S3DataSource": {
                   "S3DataType": "S3Prefix",
                   "S3Uri": "s3://amzn-s3-demo-bucket/data.csv"
               }
           },
           "ContentType": "text/csv",
           "CompressionType": "None",
           "SplitType": "None"
       },
       "TransformOutput": {
           "S3OutputPath": "s3://amzn-s3-demo-bucket/output/",
           "AssembleWith": "Line",
           "KmsKeyId": ""
       },
       "TransformResources": {
           "InstanceType": "ml.m5.2xlarge",
           "InstanceCount": 1
       },
       "CreationTime": 1662495635.679,
       "TransformStartTime": 1662495847.496,
       "DataProcessing": {
           "InputFilter": "$",
           "OutputFilter": "$",
           "JoinSource": "None"
       }
   }
   ```

   将 `TransformJobStatus` 更改为 `Completed` 后，您可以在中 `S3OutputPath` 查看推理结果。

------

# Amazon SageMaker Autopilot 数据探索笔记本
<a name="timeseries-forecasting-data-exploration-notebook"></a>

Amazon SageMaker Autopilot 会自动清理和预处理您的数据集。为了帮助用户了解他们的数据，发现时间序列的模式、关系和异常情况，A SageMaker mazon Autopilot 以笔记本的形式生成**了一份数据**探索静态报告，供用户参考。

每个 Autopilot 作业都会生成数据探索笔记本。报告存储在 Amazon S3 存储桶中，可以从输出路径访问。

您可以在对 `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` 响应的 `[AutoMLJobArtifacts.DataExplorationNotebookLocation](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html#sagemaker-DescribeAutoMLJobV2-response-AutoMLJobArtifacts)` 位置找到数据探索笔记本的 Amazon S3 前缀。

# 由 Amazon A SageMaker utopilot 生成的报告
<a name="timeseries-forecasting-reports"></a>

除了数据探索笔记本外，Autopilot 还会为每个实验的最佳候选模型生成各种报告。
+ 解释功能报告提供了有关模型如何进行预测的深入分析。
+ 性能报告提供了对模型预测能力的定量评测。
+ 在历史数据上测试模型的性能后，将生成回测结果报告。

## 解释功能报告
<a name="timeseries-forecasting-explainability-report"></a>

Autopilot 解释功能报告可帮助您更好地了解数据集中的属性，会如何对特定时间序列（项目和维度组合）和时间点的预测产生影响。Autopilot 使用名为*影响分数*的指标来量化每个属性的相对影响，并确定它们是增加还是减少预测值。

例如，假设一个预测场景，其中目标是 `sales`，并且有两个相关的属性：`price` 和 `color`。Autopilot 可能会发现商品的颜色对某些商品的销售影响很大，但对其他商品的影响可以忽略不计。它还可能发现，夏季促销活动对销售的影响很大，但是冬季促销活动效果不大。

只有在满足以下条件时才会生成解释功能报告：
+ 时间序列数据集包括其他特征列或与假日日历相关联。
+ 基本模型 CNN-QR 和 DeepAR\$1 包含在最终的组合中。

### 解释影响力分数
<a name="timeseries-forecasting-explainability-impact-scores"></a>

影响力分数衡量属性对预测值的相对影响。例如，如果 `price` 属性的影响力分数是 `store location` 属性的两倍，则可以得出结论，某件商品的价格对预测值的影响是商店位置的两倍。

影响力分数还提供有关属性会增加还是减少预测值的信息。

影响力分数的范围在 -1 到 1 之间，其中符号表示影响方向。分数为 0 表示没有影响，而接近 1 或 -1 的分数表示有显著的影响。

值得注意的是，影响力分数衡量的是属性的相对影响，而不是绝对影响。因此，不能使用影响力分数来确定特定属性是否提高了模型准确性。如果某个属性的影响力分数较低，这并不一定意味着它对预测值的影响较小；而是意味着它对预测值的影响要小于预测器使用的其他属性。

### 查找解释功能报告
<a name="timeseries-forecasting-explainability-report-location"></a>

在对 `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` 响应的 `[BestCandidate.CandidateProperties.CandidateArtifactLocations.Explainability](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateArtifactLocations.html#sagemaker-Type-CandidateArtifactLocations-Explainability)` 位置，您可以找到为最佳候选项生成的解释功能构件的 Amazon S3 前缀。

## 模型性能报告
<a name="timeseries-forecasting-model-performance-report"></a>

Autopilot 模型质量报告（也称为性能报告）针对 AutoML 作业生成的最佳候选模型（最佳预测器），提供深入分析和质量信息。这包括有关作业详细信息、目标函数和准确性指标（`wQL`、`MAPE`、`WAPE`、`RMSE`、`MASE`）的信息。

在对 `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` 响应的 `[BestCandidate.CandidateProperties.CandidateArtifactLocations.ModelInsights](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateArtifactLocations.html#sagemaker-Type-CandidateArtifactLocations-ModelInsights)` 位置，您可以找到为最佳候选项生成的模型质量报告构件的 Amazon S3 前缀。

## 回测结果报告
<a name="timeseries-forecasting-model-backtest-report"></a>

回测结果通过评估时间序列预测模型的预测准确性和可靠性，提供对模型性能的深入分析。它可以帮助分析师和数据科学家评测模型在历史数据上的性能，并帮助了解模型在未来的不可见数据中的潜在性能。

Autopilot 使用回测来调整参数并生成准确性指标。在回测期间，Autopilot 会自动将您的时间序列数据分成两组，即训练集和测试集。训练集用于训练模型，然后使用该模型，为测试集中的数据点生成预测。Autopilot 使用此测试数据集，通过将预测值与测试集中的观察数据进行比较来评估模型的准确性。

在对 `[DescribeAutoMLJobV2](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAutoMLJobV2.html)` 响应的 `[BestCandidate.CandidateProperties.CandidateArtifactLocations.BacktestResults](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CandidateArtifactLocations.html#sagemaker-Type-CandidateArtifactLocations-BacktestResults)` 位置，您可以找到为最佳候选项生成的模型质量报告构件的 Amazon S3 前缀。

# 时间序列预测 Autopilot 的资源限制
<a name="timeseries-forecasting-limits"></a>

下表列出了 Amazon A SageMaker utopilot 中时间序列预测任务的资源限制，以及您是否可以调整每个限制。


| **资源限制** | **默认限制** | **可调整** | 
| --- | --- | --- | 
|  输入数据集的大小  |  30 GB  |  是  | 
|  单个 Parquet 文件的大小  |  2 GB  |  否  | 
|  一个数据集中的最大行数  |  30 亿  |  是  | 
|  最大分组列数  |  5  |  否  | 
|  最大数值特征数  |  13  |  否  | 
|  最大类别特征数  |  10  |  否  | 
|  每个数据集的时间序列最大数量（项目列和分组列的唯一组合）  |  5,000,000  |  是  | 
|  最大预测范围  |  500  |  是  | 