时间序列数据
时间序列数据是指可载入三维数据框架的数据。在框架中,每个时间戳的每一行都代表一条目标记录,而每条目标记录都有一个或多个相关列。每个数据框单元格内的值可以是数字、分类或文本数据类型。
时间序列数据集的先决条件
在分析之前,完成必要的预处理步骤来准备数据,如数据清理或特征工程。您可以提供一个或多个数据集。如果您提供多个数据集,请使用以下方法之一将它们提供给 SageMaker Clarify 处理任务:
-
使用名为
dataset
的 ProcessingInput 或分析配置dataset_uri
来指定主数据集。有关dataset_uri
的更多信息,请参阅 分析配置文件 中的参数列表。 -
使用分析配置文件中提供的
baseline
参数。如果存在,static_covariates
需要基线数据集。有关分析配置文件的更多信息(包括示例),请参阅 分析配置文件。
下表列出了支持的数据格式、其文件扩展名和 MIME 类型。
Data format(数据格式) | 文件扩展名 | MIME 类型 |
---|---|---|
|
json |
|
|
json |
|
|
json |
|
JSON 是一种灵活的格式,可以表示结构化数据的任何复杂程度。如表所示,SageMaker Clarify 支持格式 item_records
、timestamp_records
和 columns
。
时间序列数据集配置示例
本节将向您展示如何使用 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_format
为 columns
时的时间序列数据配置
下面的示例使用了 dataset_format
的 columns
值。下面的 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_format
为 item_records
时的时间序列数据配置
下面的示例使用了 dataset_format
的 item_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_format
为 timestamp_record
时的时间序列数据配置
下面的示例使用了 dataset_format
的 timestamp_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" }