时间序列数据 - Amazon SageMaker

时间序列数据

时间序列数据是指可载入三维数据框架的数据。在框架中,每个时间戳的每一行都代表一条目标记录,而每条目标记录都有一个或多个相关列。每个数据框单元格内的值可以是数字、分类或文本数据类型。

时间序列数据集的先决条件

在分析之前,完成必要的预处理步骤来准备数据,如数据清理或特征工程。您可以提供一个或多个数据集。如果您提供多个数据集,请使用以下方法之一将它们提供给 SageMaker Clarify 处理任务:

  • 使用名为 datasetProcessingInput 或分析配置 dataset_uri 来指定主数据集。有关 dataset_uri 的更多信息,请参阅 分析配置文件 中的参数列表。

  • 使用分析配置文件中提供的 baseline 参数。如果存在,static_covariates 需要基线数据集。有关分析配置文件的更多信息(包括示例),请参阅 分析配置文件

下表列出了支持的数据格式、其文件扩展名和 MIME 类型。

Data format(数据格式) 文件扩展名 MIME 类型

item_records

json

application/json

timestamp_records

json

application/json

columns

json

application/json

JSON 是一种灵活的格式,可以表示结构化数据的任何复杂程度。如表所示,SageMaker Clarify 支持格式 item_recordstimestamp_recordscolumns

时间序列数据集配置示例

本节将向您展示如何使用 time_series_data_config 为 JSON 格式的时间序列数据设置分析配置。假设有一个数据集,其中包含两个项目,每个项目都有一个时间戳 (t)、目标时间序列 (x)、两个相关时间序列 (r) 和两个静态协变量 (u),具体如下:

t1 = [0,1,2], t2 = [2,3]

x1 = [5,6,4], x2 = [0,4]

r1 = [0,1,0], r21 = [1,1]

r12 = [0,0,0], r22 = [1,0]

u11 = -1, u21 = 0

u12 = 1, u22 = 2

根据 dataset_format 的不同,您可以用三种不同的方式使用 time_series_data_config 对数据集进行编码。下文将介绍每种方法。

dataset_formatcolumns 时的时间序列数据配置

下面的示例使用了 dataset_formatcolumns 值。下面的 JSON 文件代表了前面的数据集。

{ "ids": [1, 1, 1, 2, 2], "timestamps": [0, 1, 2, 2, 3], # t "target_ts": [5, 6, 4, 0, 4], # x "rts1": [0, 1, 0, 1, 1], # r1 "rts2": [0, 0, 0, 1, 0], # r2 "scv1": [-1, -1, -1, 0, 0], # u1 "scv2": [1, 1, 1, 2, 2], # u2 }

请注意,ids 字段中的项目 ID 是重复的。time_series_data_config 的正确实现如下所示:

"time_series_data_config": { "item_id": "ids", "timestamp": "timestamps", "target_time_series": "target_ts", "related_time_series": ["rts1", "rts2"], "static_covariates": ["scv1", "scv2"], "dataset_format": "columns" }

dataset_formatitem_records 时的时间序列数据配置

下面的示例使用了 dataset_formatitem_records 值。下面的 JSON 文件代表了数据集。

[ { "id": 1, "scv1": -1, "scv2": 1, "timeseries": [ {"timestamp": 0, "target_ts": 5, "rts1": 0, "rts2": 0}, {"timestamp": 1, "target_ts": 6, "rts1": 1, "rts2": 0}, {"timestamp": 2, "target_ts": 4, "rts1": 0, "rts2": 0} ] }, { "id": 2, "scv1": 0, "scv2": 2, "timeseries": [ {"timestamp": 2, "target_ts": 0, "rts1": 1, "rts2": 1}, {"timestamp": 3, "target_ts": 4, "rts1": 1, "rts2": 0} ] } ]

每个项目在 JSON 中都表示为一个单独的条目。下面的代码段显示了相应的 time_series_data_config(使用 JMESPath)。

"time_series_data_config": { "item_id": "[*].id", "timestamp": "[*].timeseries[].timestamp", "target_time_series": "[*].timeseries[].target_ts", "related_time_series": ["[*].timeseries[].rts1", "[*].timeseries[].rts2"], "static_covariates": ["[*].scv1", "[*].scv2"], "dataset_format": "item_records" }

dataset_formattimestamp_record 时的时间序列数据配置

下面的示例使用了 dataset_formattimestamp_record 值。下面的 JSON 文件代表了前面的数据集。

[ {"id": 1, "timestamp": 0, "target_ts": 5, "rts1": 0, "rts2": 0, "svc1": -1, "svc2": 1}, {"id": 1, "timestamp": 1, "target_ts": 6, "rts1": 1, "rts2": 0, "svc1": -1, "svc2": 1}, {"id": 1, "timestamp": 2, "target_ts": 4, "rts1": 0, "rts2": 0, "svc1": -1, "svc2": 1}, {"id": 2, "timestamp": 2, "target_ts": 0, "rts1": 1, "rts2": 1, "svc1": 0, "svc2": 2}, {"id": 2, "timestamp": 3, "target_ts": 4, "rts1": 1, "rts2": 0, "svc1": 0, "svc2": 2}, ]

JSON 的每个条目代表一个时间戳,并对应一个项目。实施 time_series_data_config 如下所示:

{ "item_id": "[*].id", "timestamp": "[*].timestamp", "target_time_series": "[*].target_ts", "related_time_series": ["[*].rts1"], "static_covariates": ["[*].scv1"], "dataset_format": "timestamp_records" }