导入数据集 - Amazon Forecast

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

导入数据集

数据集 包含用于训练预测器的数据。您可以创建一个或多个 Amazon Forecast 数据集并将训练数据导入其中。一个数据集组是一个互补数据集的集合,详细说明了一系列时间内不断变化的参数。创建数据集组后,可以使用它训练预测器。

每个数据集组可以包含最多三个数据集,每个数据集为以下类型之一:目标时间序列、相关时间序列和项目元数据。

要创建和管理 Forecast 数据集和数据集组,您可以使用 Forecast 控制台AWS Command Line Interface(AWS CLI)或 AWS 开发工具包。

例如,Forecast 数据集,请参阅Amazon Forec GitHub知识库.

数据集

要创建和管理预测数据集,您可以使用Forecast API,包括CreateDatasetDescribeDataset操作。有关Forecast API 的完整列表,请参阅API 引用.

在创建数据集时,请提供类似于下面的信息:

  • 您记录数据的频率/间隔。例如,您可以每周汇总和记录一次零售商品销售额。在 入门 练习中,您使用每小时平均用电量。

  • 预测格式()和数据集类型(域内)。数据集域指定您要执行的Forecast 类型,而数据集类型可帮助您将训练数据组织到适合预测的类别中。

  • 数据集架构。架构映射数据集的列标题。例如,在监视需求时,您可能已经收集了多家商店中某商品的每小时销售数据。在这种情况下,您的架构将定义时间戳、位置和每小时销售额在训练数据文件中的顺序(从左到右)。此外,架构还定义每列的数据类型,例如 stringinteger

  • 地理位置和时区信息。地理位置属性是在架构中定义的,其属性类型为geolocation. 将时区信息定义为 CreateDatasetImportJob操作。必须同时包含地理位置和时区数据才能启用天气指数。

您的预测数据集中的每一列代表一个Forecast维度要么功能. 预测维度描述数据中不会随着时间而变化的要素,例如 storelocation。预测特性包括数据中随着时间而变化的任何参数,例如 pricepromotion。在目标时间序列和相关时间序列数据集中,某些维度(例如 timestampitemId)是必需的。

数据集域和数据集类型

创建Forecast 数据集时,需要选择域和数据集类型。Forecast 为许多用例提供了域名,例如预测零售需求或网络流量。您也可以创建自定义域。有关Forecast 域的完整列表,请参阅预定义数据集域和数据集类型.

在每个域中,Forecast 用户可以指定以下类型的数据集:

  • 目标时间序列数据集(必填项)— 当训练数据为时间序列时,使用此数据集类型它包括您要为其生成预测的字段。该字段称为目标字段

  • 相关时间序列数据集(可选)— 当您的训练数据是时间序列时,请选择此数据集类型,但是没有包括目标字段。例如,如果您要预测项目需求,则相关时间序列数据集可能包含 price 字段,但没有 demand

  • 项目元数据集(可选)-在训练数据时选择此数据集类型不是时间序列数据,但包括有关目标时间序列或相关时间序列数据集中项目的元数据信息。例如,如果您预测商品需求,则商品元数据集可能会color要么brand作为维度。当您使用 Forecast 时,Forecast 仅考虑项目元数据集类型提供的数据CNN-QR要么Deepar+算法。

根据训练数据中的信息以及要预测的内容,您可能需要创建多个数据集。

例如,假设您要为零售商品(如鞋和袜)的需求生成预测。您可在 RETAIL 域中创建以下数据集:

  • 目标时间序列数据集-包括零售商品的历史时间序列需求数据(item_id,timestamp,以及目标字段demand)。由于指定了要预测的目标字段,因此数据集组中必须至少有一个目标时间序列数据集。

    您还可以向目标时间序列数据集添加其他维度(最多十个)。如果在数据集组中仅包括目标时间序列数据集,则只能在项目级别或预测维度粒度级别创建预测。有关更多信息,请参阅 CreatePredictor

  • 相关时间序列数据集-包括目标字段以外的历史时间序列数据,例如price要么revenue. 由于相关时间序列数据必须可映射到目标时间序列数据,因此每个相关时间序列数据集必须包含相同的标识字段。在 RETAIL 域中,它们将是 item_idtimestamp

    相关时间序列数据集可能包含对从目标时间序列数据集执行的预测进行优化的数据。例如,您可以在相关时间序列数据集中包含为要生成预测的将来日期的 price 数据。这样,Forecast 就可以在额外的背景维度下进行预测。有关更多信息,请参阅 使用相关时间序列数据集

  • 商品元数据集-包括零售商品的元数据。元数据的示例包括 brandcategorycolorgenre

具有预测维度的数据集示例

继续前面的示例,假设您要根据商店以往的销售额预测鞋袜的需求。在以下目标时间序列数据集中,store 是时间序列预测维度,而 demand 是目标字段。袜子在两个商店位置(NYC 和 SFO)销售,而鞋子仅在 ORD 销售。

该表的前三行包含 NYC、SFO 和 ORD 商店的第一组可用的销售数据。最后三行包含每个商店的最后记录的销售数据。... 行表示在第一组条目和最后一组条目之间记录的所有商品销售数据。

timestamp item_id store demand
2019-01-01 socks NYC 25
2019-01-05 socks SFO 45
2019-02-01 shoes ORD 10
...
2019-06-01 socks NYC 100
2019-06-05 socks SFO 5
2019-07-01 shoes ORD 50

数据集架构

每个数据集都需要一个架构,即用户提供的对训练数据中字段的 JSON 映射。您可以在架构中列出要包含在数据集中的必需维度、可选维度、必需特性和可选特性。

如果您的数据集包含地理位置属性,请使用该属性类型在架构中定义该属性geolocation. 有关更多信息,请参阅 。添加地理位置信息. 为了应用天气指数,则必须在目标时间序列和任何相关的时间序列数据集中包含地理位置属性。

某些域具有我们建议包括的可选维度。本指南后面每个域的说明中列出了可选维度。有关示例,请参阅 RETAIL 域。所有可选维度都接受数据类型 string

每个数据集都需要一个架构。下面是上述目标时间序列数据集示例的附带方案。

{ "attributes": [ { "AttributeName": "timestamp", "AttributeType": "timestamp" }, { "AttributeName": "item_id", "AttributeType": "string" }, { "AttributeName": "store", "AttributeType": "string" }, { "AttributeName": "demand", "AttributeType": "float" } ] }

当您将训练数据上传到使用此架构的数据集时,Forecast 假定timestamp字段是第 1 列,item_id字段是第 2 列,store字段是第 3 列,而demand字段中返回的子位置类型目标字段,是第 4 列。

对于相关时间序列数据集类型,所有相关特征都必须具有浮点数或整数属性类型。对于项目元数据数据集类型,所有特征都必须具有字符串属性类型。有关更多信息,请参阅 SchemaAttribute

注意

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的attributeNameattributeType数据集中的每列都需要配对。Forecast 保留了许多不能用作架构属性的名称的名称。有关预留名称的列表,请参阅 预留字段名称

数据集组

数据集组 是一到三个互补数据集的集合,其中每个数据集各有一个数据集类型。您将数据集导入数据集组,然后使用数据集组训练预测器。

Forecast 包括以下用于创建数据集组并向其添加数据集的操作:

解决数据收集频率中的冲突

Forecast 可以使用与您在预测中指定的数据频率不一致的数据来训练预测变量CreateDataset操作。例如,您可以按小时间隔导入记录的数据,即使有些数据没有在小时顶部加盖时间戳(02:20,02:45)。Forecast 使用您指定的数据频率来了解您的数据。然后 Forecast 会在预测变量训练期间汇总数据。有关更多信息,请参阅不同预测频率的数据聚合.