

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 시계열 데이터


시계열 데이터란 3차원의 데이터 프레임에 로드할 수 있는 데이터를 말합니다. 프레임에서 타임스탬프마다 각 행은 대상 레코드를 나타내며, 각 대상 레코드에는 하나 이상의 관련 열이 포함되어 있습니다. 데이터 프레임 셀 각각의 값은 숫자, 범주 또는 텍스트 데이터 유형일 수 있습니다.

## 시계열 데이터세트 사전 조건


분석 전에 데이터 정리 또는 특성 엔지니어링과 같이 데이터를 준비하는 데 필요한 사전 처리 단계를 완료합니다. 데이터세트는 하나 또는 여러 개 제공할 수 있습니다. 여러 데이터세트를 제공하는 경우, 다음 방법 중 하나를 사용하여 SageMaker Clarify 처리 작업에 데이터세트를 제공하세요.
+ `dataset`로 이름이 지정된 [ProcessingInput](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProcessingInput.html) 또는 분석 구성 `dataset_uri`를 사용하여 기본 데이터세트를 지정합니다. `dataset_uri`에 대한 자세한 내용은 [분석 구성 파일](clarify-processing-job-configure-analysis.md)의 파라미터 목록을 참조하세요.
+ 분석 구성 파일에서 제공된 `baseline`매개변수를 사용합니다. `static_covariates`가 있는 경우 기준 데이터세트가 필요합니다. 예시가 포함된 분석 구성 파일에 대한 자세한 내용은 [분석 구성 파일](clarify-processing-job-configure-analysis.md) 섹션을 참조하세요.

다음 표에는 지원되는 데이터 형식, 해당 파일 확장명 및 MIME 유형이 나열되어 있습니다.


| 데이터 형식 | 파일 확장명 | MIME 유형 | 
| --- | --- | --- | 
|  `item_records`  |  json  |  `application/json`  | 
|  `timestamp_records`  |  json  |  `application/json`  | 
|  `columns`  |  json  |  `application/json`  | 

JSON은 정형 데이터에서 모든 수준의 복잡성을 표현할 수 있는 유연한 형식입니다. 표에 표시된 대로 SageMaker Clarify는 `item_records`, `timestamp_records`, `columns` 형식을 지원합니다.

## 시계열 데이터세트 구성 예시


이 섹션에서는 JSON 형식의 시계열 데이터에 `time_series_data_config`를 사용하여 분석 구성을 설정하는 방법을 보여줍니다. 다음과 같이 각각 타임스탬프(t), 대상 시계열(x), 관련 시계열(r) 2개, 정적 공변량(u) 2개가 각각 포함된 항목 2개로 구성된 데이터세트가 있다고 가정해 보겠습니다.

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

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

r1 = [0,1,0], r 21 = [1,1]

r 12 = [0,0,0], r 22 = [1,0]

u 11 = -1, u 21 = 0

u 12 = 1, u 22 = 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
}
```

항목 ID는 `ids` 필드에서 반복됩니다. `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"
}
```

# 시계열 데이터에 대한 엔드포인트 요청


SageMaker Clarify 처리 작업은 데이터를 임의의 JSON 구조(MIME 유형: `application/json` 사용)로 직렬화합니다. 이렇게 하려면 분석 구성 `content_template`매개변수에 템플릿 문자열을 제공해야 합니다. 이는 SageMaker Clarify 처리 작업에서 모델에 제공된 JSON 쿼리를 구성하는 데 사용됩니다. `content_template`에는 데이터세트의 레코드 하나 또는 여러 개가 포함되어 있습니다. 또한 각 레코드의 JSON 구조를 구성하는 데 사용되는 `record_template`에 대한 템플릿 문자열도 제공해야 합니다. 그런 다음 이러한 레코드가 `content_template`에 삽입됩니다. `content_type` 또는 `dataset_type`에 대한 자세한 내용은 [분석 구성 파일](clarify-processing-job-configure-analysis.md) 섹션을 참조하세요.

**참고**  
`content_template` 및 `record_template`은 문자열 파라미터이므로, JSON 직렬화 구조의 일부인 모든 큰 따옴표 문자(")는 해당 구성 파일에서 이스케이프 처리된 문자로 표시되어야 합니다. 예를 들어, Python에서 큰 따옴표를 이스케이프 처리하려면 `content_template`에 대해 다음 값을 입력하면 됩니다.  

```
'$record'
```

다음 표에는 직렬화된 JSON 요청 페이로드의 예시와 이를 구성하는 데 필요한 해당 `content_template` 및 `record_template` 파라미터가 나와 있습니다.


| 사용 사례: | 엔드포인트 요청 페이로드(문자열 표현식) | content\$1template | record\$1template | 
| --- | --- | --- | --- | 
|  한 번에 하나의 레코드  |  `{"target": [1, 2, 3],"start": "2024-01-01 01:00:00"}`  |  `'$record'`  |  `'{"start": $start_time, "target": $target_time_series}'`  | 
|  `$related_time_series` 및 `$static_covariates`가 포함된 단일 레코드  |  `{"target": [1, 2, 3],"start": "2024-01-01 01:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}`  |  `'$record'`  |  `'{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'`  | 
|  다중 레코드  |  `{"instances": [{"target": [1, 2, 3],"start": "2024-01-01 01:00:00"}, {"target": [1, 2, 3],"start": "2024-01-01 02:00:00"}]}`  |  `'{"instances": $records}'`  |  `'{"start": $start_time, "target": $target_time_series}'`  | 
|  `$related_time_series` 및 `$static_covariates`가 포함된 다중 레코드  |  `{"instances": [{"target": [1, 2, 3],"start": "2024-01-01 01:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}, {"target": [1, 2, 3],"start": "2024-01-01 02:00:00","dynamic_feat": [[1.0, 2.0, 3.0],[1.0, 2.0, 3.0],"cat": [0,1]}]}`  |  `'{"instances": $records}'`  |  `''{"start": $start_time, "target": $target_time_series, "dynamic_feat": $related_time_series, "cat": $static_covariates}'`  | 

# 시계열 데이터에 대한 엔드포인트 응답


SageMaker Clarify 처리 작업은 전체 페이로드를 JSON으로 역직렬화합니다. 그런 다음에는 분석 구성에서 제공된 JMESPath 표현식을 사용하여 역직렬화된 해당 데이터로부터 예측을 추출합니다. 응답 페이로드에 포함된 레코드는 요청 페이로드 상의 레코드와 일치해야 합니다.

다음 표는 평균 예측 값만을 출력하는 엔드포인트에서 받은 응답의 예시입니다. [분석 구성](https://docs.aws.amazon.com/sagemaker/latest/dg/clarify-processing-job-configure-analysis.html#clarify-processing-job-configure-analysis-parameters)의 `predictor` 필드에 사용된 `forecast`의 값은 처리 작업에 대한 예측 결과를 찾기 위해 JMESPath 표현식으로 제공되어야 합니다.


| 엔드포인트 요청 페이로드 | 엔드포인트 응답 페이로드(문자열 표현식) | 분석 구성에서 예측을 위한 JMESPath 표현식 | 
| --- | --- | --- | 
|  단일 레코드 예시입니다. 예측을 제대로 추출하려면 구성이 `TimeSeriesModelConfig(forecast="prediction.mean")`여야 합니다.  |  `'{"prediction": {"mean": [1, 2, 3, 4, 5]}'`  |  `'prediction.mean'`  | 
|  다중 레코드입니다. An AWS deepAR 엔드포인트 응답.  |  `'{"predictions": [{"mean": [1, 2, 3, 4, 5]}, {"mean": [1, 2, 3, 4, 5]}]}'`  |  `'predictions[*].mean'`  | 

# 시계열 데이터에 대한 엔드포인트 요청 및 응답의 사전 확인


SageMaker AI 실시간 추론 엔드포인트에 모델을 배포한 다음 해당 엔드포인트에 요청을 보내는 것을 권장합니다. 요청과 응답을 수동으로 검사하여 둘 다 [시계열 데이터에 대한 엔드포인트 요청](clarify-processing-job-data-format-time-series-request-jsonlines.md) 섹션과 [시계열 데이터에 대한 엔드포인트 응답](clarify-processing-job-data-format-time-series-response-json.md) 섹션에 있는 요구 사항을 준수하고 있는지 확인하세요. 모델 컨테이너가 배치 요청을 지원하는 경우, 먼저 단일 레코드 요청으로 시작했다가 이후 2개 이상의 레코드로 시도해볼 수 있습니다.

다음 명령은 AWS CLI를 사용하여 응답을 요청하는 방법을 보여줍니다. AWS CLI 는 Studio 및 SageMaker 노트북 인스턴스에 사전 설치되어 있습니다. 를 설치하려면 [설치 안내서](https://aws.amazon.com//cli/)를 AWS CLI따릅니다.

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name $ENDPOINT_NAME \
  --content-type $CONTENT_TYPE \
  --accept $ACCEPT_TYPE \
  --body $REQUEST_DATA \
  $CLI_BINARY_FORMAT \
  /dev/stderr 1>/dev/null
```

파라미터는 다음과 같이 정의됩니다.
+ \$1ENDPOINT NAME - 엔드포인트의 이름입니다.
+ \$1CONTENT\$1TYPE - 요청의 MIME 유형(모델 컨테이너 입력)입니다.
+ \$1ACCEPT\$1TYPE - 응답의 MIME 유형(모델 컨테이너 출력)입니다.
+ \$1REQUEST\$1DATA - 요청된 페이로드 문자열입니다.
+ \$1CLI\$1BINARY\$1FORMAT – 명령줄 인터페이스(CLI) 파라미터의 형식입니다. AWS CLI v1의 경우이 파라미터는 비워 두어야 합니다. v2의 경우 이 파라미터를 `--cli-binary-format raw-in-base64-out`으로 설정해야 합니다.

**참고**  
AWS CLI v2는 기본적으로 이진 파라미터를 base64로 인코딩된 문자열로 전달합니다. 엔드포인트에 대한 다음 요청 및 응답 예제는 AWS CLI v1을 사용합니다.

------
#### [ Example 1 ]

다음 코드 예시에서 요청은 단일 레코드로 구성됩니다.

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-json \
  --content-type application/json \
  --accept application/json \
  --body '{"target": [1, 2, 3, 4, 5],
    "start": "2024-01-01 01:00:00"}' \
/dev/stderr 1>/dev/null
```

다음 코드 조각은 해당 응답 출력을 보여줍니다.

```
{'predictions': {'mean': [1, 2, 3, 4, 5]}
```

------
#### [ Example 2 ]

다음 코드 예시에서 요청은 두 개의 레코드를 포함합니다.

```
aws sagemaker-runtime invoke-endpoint \
  --endpoint-name test-endpoint-json-2 \
  --content-type application/json \
  --accept application/json \
  --body $'{"instances": [{"target":[1, 2, 3],
    "start":"2024-01-01 01:00:00",
    "dynamic_feat":[[1, 2, 3, 4, 5],
        [1, 2, 3, 4, 5]]}], {"target":[1, 2, 3],
    "start":"2024-01-02 01:00:00",
    "dynamic_feat":[[1, 2, 3, 4, 5],
        [1, 2, 3, 4, 5]]}]}' \
dev/stderr 1>/dev/null
```

응답 출력은 다음과 같습니다.

```
{'predictions': [{'mean': [1, 2, 3, 4, 5]}, {'mean': [1, 2, 3, 4, 5]}]}
```

------