使用 API 创建用于时间序列预测的 AutoML 作业 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 API 创建用于时间序列预测的 AutoML 作业

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

以下说明说明如何使用 SageMaker API 参考创建 Amazon A SageMaker utopilot 作业作为时间序列预测问题类型的试点实验。

注意

诸如文本和图像分类、时间序列预测以及大型语言模型的微调等任务仅通过 AutoML REST API 版本 2 提供。如果你选择的语言是 Python,你可以直接参考Amazon SDK for Python (Boto3)或 Amazon Pyth SageMaker on 软件开发工具包的 A utoLv2 对象

喜欢用户界面便利性的用户可以使用 Amazon SageMaker Canv as 访问预训练模型和生成式 AI 基础模型,或者创建针对特定文本、图像分类、预测需求或生成式 AI 量身定制的自定义模型。

您可以使用 Amazon Autopilot 支持的任何语言调用 CreateAutoMLJobV2API 或者,以编程方式创建 SageMaker 自动驾驶时间序列预测实验。 Amazon CLI

有关此 API 操作如何转换为所选语言中函数的信息,请参阅 CreateAutoMLJobV2 中的另请参阅部分并选择 SDK。例如,对于 Python 用户,请参阅 Amazon SDK for Python (Boto3)中 create_auto_ml_job_v2 的完整请求语法。

Autopilot 使用您的目标时间序列数据训练多个候选模型,然后为给定的目标指标选择最佳预测模型。当您的候选模型接受过训练后,您可以在对 DescribeAutoMLJobV2 的回复中的 BestCandidate 位置找到最佳候选指标。

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

注意

有关实用的时间序列预测示例,请参阅笔记本使用 Amazon A SageMaker utopilot 进行时间序列预测。在本笔记本中,您可以使用 Amazon A SageMaker utopilot 来训练时间序列模型,并使用经过训练的模型进行预测。笔记本提供了在 Amazon S3 上检索现成的表格历史数据集的说明。

先决条件

在使用 Autopilot 在中创建时间序列预测实验之前 SageMaker,请确保:

  • 准备您的时间序列数据集。数据集的准备涉及到从各种来源收集相关数据,清理和筛选数据以消除噪音和不一致的内容,然后将其整理为结构化的格式。要详细了解 Autopilot 中的时间序列格式要求,请参阅时间序列数据集格式和缺失值填充方法。或者,您可以使用所选国家/地区的公共假日日历来补充数据集,以便捕获相关的模式。有关假日日历的更多信息,请参阅国家法定假日日历

    注意

    我们建议您为每个要预测的 1 个 future 数据点提供至少 3-5 个历史数据点。例如,要根据每日数据预测提前 7 天(展望 1 周),请使用至少 21-35 天的历史数据训练模型。确保提供足够的数据来捕捉季节性和反复出现的模式。

  • 将您的时间序列数据放入 Amazon S3 存储桶中。

  • 授予对包含您用于运行实验的 SageMaker 执行角色的输入数据的 Amazon S3 存储桶的完全访问权限。完成此操作后,您可以在 Autopilot API 请求中使用此执行角色的 ARN。

    • 有关检索 SageMaker 执行角色的信息,请参阅获取执行角色

    • 有关向您的 SageMaker 执行角色授予访问 Amazon S3 中一个或多个特定存储桶的权限的信息,请参阅中的向 SageMaker 执行角色添加其他 Amazon S3 权限创建执行角色

必需参数

在调用 CreateAutoMLJobV2 以创建 Autopilot 实验进行时间序列预测时,您必须提供以下值:

  • AutoMLJobName,用于指定您作业的名称。名称应为 string 类型,最小长度为 1 个字符,最大长度为 32 个字符。

  • AutoMLJobInputDataConfig 中的至少一个 AutoMLJobChannel,在其中指定包含数据的 Amazon S3 存储桶的名称。或者,您可以指定内容(CSV 或 Parquet 文件)和压缩 (GZip) 类型。

  • 类型为 TimeSeriesForecastingJobConfigAutoMLProblemTypeConfig,用于配置时间序列预测作业的设置。具体而言,您必须指定:

    • 预测的频率,这是指预测的所需粒度(每小时、每天、每月等)。

      有效间隔是一个整数,后跟 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,您可以通过指定以下内容来定义数据集的架构,以将列标题映射到您的预测:

      • TargetAttributeName:该列包含要预测目标字段的历史数据。

      • TimestampAttributeName:该列包含记录给定项目的目标值的时间点。

      • ItemIdentifierAttributeName:该列包含要预测目标值的项目标识符。

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

    "AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },
  • OutputDataConfig,指定用于存储 AutoML 作业构件的 Amazon S3 输出路径。

  • RoleArn,指定用于访问您的数据的角色的 ARN。您可以使用已授予对数据访问权限的执行角色的 ARN。

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

可选参数

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

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

在以下示例中,您设置的是在 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" },

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

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

在聚合期间,默认的转换方法是对数据求和。您可以在的Transformations属性中创建 AutoML 作业时配置聚合。TimeSeriesForecastingJobConfig支持的聚合方法包括 sum(默认)、avgfirstminmax。只有目标列支持聚合。

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

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

Autopilot 提供了多种填充方法,用于处理时间序列数据集的目标列和其他数字列中的缺失值。有关支持的填充方法列表及其可用填充逻辑的信息,请参阅处理缺失值

创建 AutoML 作业TimeSeriesForecastingJobConfig时,可以在的Transformations属性中配置填充策略。

要设置填充方法,您需要提供一个键/值对:

  • 键是要为其指定填充方法的列的名称。

  • 与键关联的值是一个对象,它定义该列的填充策略。

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

要为填充方法设置特定值,您应将填充参数设置为所需的填充方法值(例如 "backfill" : "value"),并在带有“_value”后缀的其他参数中定义实际填充值。例如,要将 backfill 设置为值 2,您必须包括两个参数:"backfill": "value""backfill_value":"2"

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

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

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

默认情况下,Autopilot 使用平均加权分位数损失。但是,当你在 autoML 的MetricName属性中创建 AutoML 作业时,你可以配置目标指标。JobObjective

有关可用算法的列表,请参阅时间序列预测支持的算法

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

在创建 AutoML 作业时,您可以通过将HolidayConfigAttributes对象传递给的属性来启用假日功能。HolidayConfig TimeSeriesForecastingJobConfigHolidayConfigAttributes 对象包含两个字母的 CountryCode 属性,确定扩充时间序列数据集时,使用哪个国家/地区的国家法定公共假日日历。

有关支持的日历及其相应的国家/地区代码的列表,请参阅国家/地区代码

使用 Autopilot,您可以将预测模型自动部署到端点。要为 AutoML 作业的最佳候选模型启用自动部署,请在 AutoML 任务请求中包括 ModelDeployConfig。这允许将最佳模型部署到 SageMaker 端点。以下是可供自定义的配置。