

 신규 고객은 Amazon Forecast를 더 이상 사용할 수 없습니다. Amazon Forecast의 기존 고객은 평소와 같이 서비스를 계속 사용할 수 있습니다. [자세히 알아보기](https://aws.amazon.com/blogs/machine-learning/transition-your-amazon-forecast-usage-to-amazon-sagemaker-canvas/)

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

# 시작하기(AWS CLI)
<a name="gs-cli"></a>

이 연습에서는 AWS Command Line Interface (AWS CLI)를 사용하여 Amazon Forecast를 탐색합니다. Amazon Forecast 데이터 세트를 생성하고, 예측기를 훈련하고, 결과 예측기를 사용하여 예측을 생성합니다. 시작하기 전에 AWS 계정 이 있고 AWS CLI를 설정했는지 확인합니다. 자세한 내용은 [설정](setup.md) 단원을 참조하십시오.

**참고**  
이 연습의 AWS CLI 명령은 Linux에서 테스트되었습니다. Windows에서 AWS CLI 명령을 사용하는 방법에 대한 자세한 내용은 *AWS Command Line Interface 사용 설명서*의 [에 대한 파라미터 값 지정 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-using-param.html)을 참조하세요.

## 1단계: 교육 데이터 가져오기
<a name="gs-create-ds"></a>

먼저 데이터 세트를 생성하고 이 세트로 전기 사용량 데이터를 가져옵니다.

**Amazon Forecast 데이터 세트 생성 방법**

1. 도메인 및 데이터 세트 유형이 적절한지 판단합니다.

   데이터 세트로 가져올 교육 데이터는 데이터 세트 도메인 및 유형의 선택에 영향을 미칩니다. 이제 전기 사용량 데이터의 몇 가지 샘플 행을 검토하겠습니다.

   ```
   2014-01-01 01:00:00,   2.53807106598985, client_0
   2014-01-01 01:00:00, 23.648648648648624, client_1
   2014-01-01 02:00:00,  9.648648648612345, client_0
   ```

   데이터 형식은 CSV(쉼표로 분리된 값)이며 시간별로 수집됩니다(타임스탬프로 표시). 여기에는 다음 열이 포함됩니다.
   + 1열 - 전기 사용량이 기록된 때를 보여주는 타임스탬프.
   + 2열 - 시간당 전력 사용량 값(타임스탬프 값이 시간별로 증가하는 방법에 유의하세요).
   + 3열 - 전기를 사용하는 고객을 식별하는 클라이언트 ID 값.

   이 데이터의 경우 다음 미리 정의된 데이터 세트 도메인 및 데이터 세트 유형을 선택합니다.
   + 사용자 지정 도메인 - METRICS, RETAIL 또는 WEB\$1TRAFFIC과 같은 데이터 세트 도메인은 이 데이터에 적용되지 않으므로 사용자 지정 도메인을 선택합니다.
   + 대상 시계열 유형 - 이 데이터는 시간 경과에 따른 전기 사용량을 추적하기 때문에 시계열입니다. 또한 예상하고자 하는 *대상*(2열 전기 사용량)도 포함합니다. 따라서 대상 시계열 데이터 세트 유형을 선택합니다.

     이 유형을 선택한 이유를 이해하려면 [미리 정의된 데이터 세트 도메인 및 데이터 세트 유형](howitworks-domains-ds-types.md)을 참조하십시오.

1. 데이터 세트 스키마를 결정합니다.

   [CUSTOM 도메인](custom-domain.md)에 대한 대상 시계열 유형에는 `timestamp`, `target_value` 및 `item_id`의 필드가 필요합니다. `target_value` 필드가 대상입니다. Amazon Forecast는 이 필드를 위한 예측을 생성합니다.

   필수 필드를 데이터의 열에 매핑하려면 스키마를 생성합니다. 스키마의 각 *속성*은 데이터의 필드와 매핑됩니다.
**중요**  
스키마의 속성 순서는 교육 데이터의 필드 순서와 일치해야 합니다.

   ```
   {
     "Attributes":[
       {
          "AttributeName": "timestamp",
          "AttributeType": "timestamp"
       },
       {
          "AttributeName": "target_value",
          "AttributeType": "float"
       },
       {
          "AttributeName": "item_id",
          "AttributeType": "string"
       }
     ]
   }
   ```

   이제 데이터 세트를 생성하고 데이터를 여기에 가져오는 데 필요한 정보를 얻었습니다.

1. 데이터 세트를 생성합니다.

   ```
   aws forecast create-dataset \
   --dataset-name electricity_demand_ds \
   --domain CUSTOM \
   --dataset-type TARGET_TIME_SERIES \
   --data-frequency H \
   --schema '{
     "Attributes": [
       {
         "AttributeName": "timestamp",
         "AttributeType": "timestamp"
       },
       {
         "AttributeName": "target_value",
         "AttributeType": "float"
       },
       {
         "AttributeName": "item_id",
         "AttributeType": "string"
       }
     ]
   }'
   ```

   요청에서 `data-frequency` 값 `H`는 시간별 데이터 수집 빈도를 나타냅니다. 다음은 응답의 예입니다.

   ```
   {
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds"
   }
   ```

   이 작업에 대한 자세한 내용은 [CreateDataset](API_CreateDataset.md) 단원을 참조하십시오.

1. (선택 사항) 데이터 세트에 대한 설명을 가져옵니다.

   ```
   aws forecast describe-dataset \
   --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds
   ```

   다음은 응답의 예입니다.

   ```
   {
       "DatasetName": "electricity_demand_ds",
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds",
       "CreationTime": 1564533087.907,
       "LastModificationTime": 1564533087.907,
       "Domain": "CUSTOM",
       "DatasetType": "TARGET_TIME_SERIES",
       "DataFrequency": "H",
       "Schema": { ... },
       "EncryptionConfig": {},
       "Status": "ACTIVE"
   }
   ```
**참고**  
응답에서 키-값 페어 순서는 임의적입니다.

1. 데이터 세트 그룹을 생성하여 여기에 데이터 세트를 추가합니다. `domain` 파라미터의 값이 데이터 시트의 `domain`과 일치해야 합니다.

   ```
   aws forecast create-dataset-group \
   --dataset-group-name electricity_ds_group \
   --dataset-arns arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \
   --domain CUSTOM
   ```

   다음은 응답의 예입니다.

   ```
   {
       "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group"
   }
   ```

   이 작업에 대한 자세한 내용은 [CreateDatasetGroup](API_CreateDatasetGroup.md) 단원을 참조하십시오.

1. (선택 사항) 데이터 세트 그룹에 대한 설명을 가져옵니다.

   ```
   aws forecast describe-dataset-group \
   --dataset-group-arn arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group
   ```

   다음은 응답의 예입니다.

   ```
   {
       "DatasetGroupName": "electricity_ds_group",
       "DatasetGroupArn": "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group",
       "DatasetArns": [
           "arn:aws:forecast:us-west-2:acct-id:dataset-group/electricity_ds_group"
       ],
       "Domain": "CUSTOM",
       "CreationTime": 1564533719.852,
       "LastModificationTime": 1564533719.852,
       "Status": "ACTIVE"
   }
   ```

1. Amazon S3 버킷에서 데이터 세트로 전기 사용랑 훈련 데이터를 가져옵니다. 제공하는 IAM 역할은 S3 버킷에서 데이터를 읽을 권한이 있어야 합니다. IAM 역할 생성 방법에 대한 자세한 내용은 [Amazon Forecast를 위한 IAM 역할 생성(AWS CLI)](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-cli) 단원을 참조하세요.

   ```
   aws forecast create-dataset-import-job \
   --dataset-arn arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds \
   --dataset-import-job-name electricity_ds_import_job \
   --data-source '{
       "S3Config": {
         "Path": "s3://bucket/electricityusagedata.csv",
         "RoleArn": "arn:aws:iam::acct-id:role/Role"
       }
     }'
   ```

   다음은 `data-source` 파라미터의 간편 구문입니다.

   ```
   --data-source S3Config="{Path='s3://bucket/electricityusagedata.csv',RoleArn='arn:aws:iam::acct-id:role/Role'}"
   ```

   다음은 응답의 예입니다.

   ```
   {
       "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job"
   }
   ```

   이 작업에 대한 자세한 내용은 [CreateDatasetImportJob](API_CreateDatasetImportJob.md) 단원을 참조하십시오.

1. 가져오기 상태를 점검하십시오.

   ```
   aws forecast describe-dataset-import-job \
   --dataset-import-job-arn arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job
   ```

   다음은 응답의 예입니다.

   ```
   {
       "DatasetImportJobName": "electricity_ds_import_job",
       "DatasetImportJobArn": "arn:aws:forecast:us-west-2:acct-id:dataset-import-job/electricity_demand_ds/electricity_ds_import_job",
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds",
       "DataSource": {
           "S3Config": {
               "Path": "s3://bucket/electricityusagedata.csv",
               "RoleArn": "arn:aws:iam::acct-id:role/ForecastRole"
           }
       },
       "DataSize": 0.14639010466635227,
       "TimeStampFormat": "yyyy-MM-dd HH:mm:ss",
       "CreationTime":  1564537011.114,
       "LastModificationTime": 1564537028.223,
       "Status": "CREATE_IN_PROGRESS"
   }
   ```

   모든 데이터가 가져와지면 상태가 활성으로 변경되며, 다음 예제와 같이 응답에 데이터 통계가 포함됩니다.

   ```
   {
       "DatasetArn": "arn:aws:forecast:us-west-2:acct-id:dataset/electricity_demand_ds",
       "Status": "ACTIVE",
       "FieldStatistics": {
           "date": {
               "Min": "2014-01-01T01:00:00Z",
               "Max": "2015-01-01T00:00:00Z",
               "Count": 3241200,
               "CountDistinct": 8760,
               "CountNull": 0
           },
           "target": {
               "Min": "0.0",
               "Max": "168200.0",
               "Avg": 606.5167610461679,
               "Stddev": 3518.405223972031,
               "Count": 3241200,
               "CountDistinct": 1196961,
               "CountNull": 0,
               "CountNan": 0
           },
           "item": {
               "Count": 3241200,
               "CountDistinct": 370,
               "CountNull": 0
           }
       },
       ...
   }
   ```
**중요**  
데이터 세트 그룹을 사용하여 예측기를 생성하기 전에 상태가 활성으로 변할 때까지 기다려야 합니다.

   이 작업에 대한 자세한 내용은 [DescribeDatasetImportJob](API_DescribeDatasetImportJob.md) 단원을 참조하십시오.

## 2단계: 예측기 생성
<a name="gs-create-predictor"></a>

예측기를 생성하려면 [CreateAutoPredictor](API_CreateAutoPredictor.md) 작업을 사용하고 다음 정보를 제공합니다.
+ **예측기 이름** - 다른 예측기와 구별할 수 있도록 예측기에 이름을 지정합니다.
+ **데이터 세트 그룹** - 이전 단계에서 데이터 세트 그룹을 생성했습니다.
+ **예측 빈도** - 예측의 세분 수준(시간별, 일별, 주별 등)입니다.
+ **예측 기간** - 예측되는 시간 단계 수입니다.

예측기가 생성된 후 Amazon Forecast가 생성한 정확도 지표를 검토하세요. 이 지표는 해당 예측기를 사용하여 예상을 생성할지 여부를 결정하는 데 도움이 됩니다. 예측기에 대한 자세한 내용은 [예측기 훈련](howitworks-predictor.md)을 참조하십시오.

**예측기를 생성하고 정확성 지표를 검토하려면**

1. 예측기를 생성합니다.

   ```
   aws forecast create-predictor \
   --predictor-name electricitypredictor \
   --input-data-config DatasetGroupArn="arn:aws:forecast:us-west-2:acct-id:dsgroup/electricity_ds_group" \
   --forecast-horizon 36 \
   --forecast-frequency D
   ```

   다음은 응답의 예입니다.

   ```
   {
       "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor"
   }
   ```

1. 예측기의 상태를 가져옵니다.

   ```
   aws forecast describe-predictor \
   --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor
   ```

   다음은 응답의 예입니다.

   ```
   {
       "PredictorArn": "arn:aws:forecast:<region>:<acct-num>:predictor/electricitypredictor",
       "PredictorName": "electricitypredictor",
       "ForecastHorizon": 36,
       "ForecastTypes": [
           "0.1",
           "0.5",
           "0.9"
       ],
       "ForecastFrequency": "D",
       "DatasetImportJobArns": [
           "arn:aws:forecast:<region>:<acct-num>:dataset-import-job/getting_started_dataset/gs_import"
       ],
       "DataConfig": {
           "DatasetGroupArn": "arn:aws:forecast:<region>:<acct-num>:dataset-group/getting_started",
           "AttributeConfigs": [
               {
                   "AttributeName": "target_value",
                   "Transformations": {
                       "aggregation": "sum",
                       "backfill": "zero",
                       "frontfill": "none",
                       "middlefill": "zero"
                   }
               }
           ]
       },
       "EstimatedTimeRemainingInMinutes": 97,
       "Status": "CREATE_IN_PROGRESS",
       "CreationTime": "2022-02-23T09:26:24.643000-08:00",
       "LastModificationTime": "2022-02-23T09:49:26.899000-08:00",
       "ExplainabilityInfo": {
           "Status": "NOT_AVAILABLE"
       }
   }
   ```
**중요**  
모델 교육에는 시간이 필요합니다. 교육이 완료되고 예측기의 상태가 활성이 될 때까지 처리하지 마십시오.

1. 예측기에 대한 정확성 지표를 가져옵니다.

   ```
   aws forecast get-accuracy-metrics \
   --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor
   ```

   다음은 응답의 예입니다.

   ```
   {
       "PredictorEvaluationResults": [
           {
               "TestWindows": [
                   {
                       "EvaluationType": "SUMMARY",
                       "Metrics": {
                           "RMSE": 448.19602551622864,
                           "WeightedQuantileLosses": [
                               {
                                   "Quantile": 0.9,
                                   "LossValue": 0.11574311406253326
                               },
                               {
                                   "Quantile": 0.5,
                                   "LossValue": 0.1706269067283527
                               },
                               {
                                   "Quantile": 0.1,
                                   "LossValue": 0.11724164222477837
                               }
                           ]
                       }
                   },
                   {
                       "EvaluationType": "COMPUTED",
                       "Metrics": {
                           "RMSE": 448.19602551622864,
                           "WeightedQuantileLosses": [
                               {
                                   "Quantile": 0.9,
                                   "LossValue": 0.11574311406253326
                               },
                               {
                                   "Quantile": 0.5,
                                   "LossValue": 0.1706269067283527
                               },
                               {
                                   "Quantile": 0.1,
                                   "LossValue": 0.11724164222477837
                               }
                           ]
                       },
                       "TestWindowEnd":   1420070400.0,
                       "TestWindowStart": 1420002000.0
                   }
               ]
           }
       ]
   }
   ```

   이 지표는 각 분위에 대한 오류 손실을 표시합니다. 예를 들어 최초 분위에서 11.7% 오차가 있었습니다. 또한 이 지표는 평균 제곱근 오차(`RMSE`)를 표시합니다.

   요약 지표는 전체 테스트 기간에서 계산된 지표의 평균을 보여줍니다. 테스트 기간이 하나뿐이기 때문에 요약 및 계산된 지표가 동일합니다.

   이 작업에 대한 자세한 내용은 [GetAccuracyMetrics](API_GetAccuracyMetrics.md) 단원을 참조하십시오.

## 3단계: 예상 생성
<a name="gs-create-campaign"></a>

Amazon Forecast는 데이터 세트의 고유한 `item_id`마다 `target_value` 필드(데이터 세트 도메인 및 유형에 의해 결정됨)에 대한 예측을 생성합니다. 이 연습에서 `target_value` 필드는 전기 사용량을 제공하고 `item_id`는 클라이언트 ID를 제공합니다. 고객의 시간당 전기 사용량을 예상합니다.

예상이 생성된 다음, 단일 항목을 쿼리하거나 전체 예상을 내보낼 수 있습니다.

**예측을 생성, 검색 및 내보내려면**

1. 예측을 생성합니다.

   ```
   aws forecast create-forecast \
   --forecast-name electricityforecast \
   --predictor-arn arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor
   ```

   작업은 예측기를 사용하여 예상을 생성합니다. 응답에서 예상에 대한 Amazon 리소스 이름(ARN)을 가져옵니다. 이 ARN을 사용하여 예상을 내보냅니다. 다음은 응답의 예입니다.

   ```
   {
       "ForecastArn": "arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast"
   }
   ```

   이 작업에 대한 자세한 내용은 [CreateForecast](API_CreateForecast.md) 단원을 참조하십시오.

1. `client_1`에 대한 예상의 처음 2시간을 검색합니다.
**참고**  
서비스 이름 `forecastquery`는 다른 곳에서 사용되는 서비스 이름과 다릅니다.

   ```
   aws forecastquery query-forecast \
   --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \
   --start-date 2015-01-01T00:00:00 \
   --end-date   2015-01-01T02:00:00 \
   --filters '{"item_id":"client_1"}'
   ```

   이 작업에는 다음 파라미터가 포함되어 있습니다.
   + `start-date` 및 `end-date` - 예측을 검색할 선택적 날짜 범위를 지정합니다. 이러한 파라미터를 지정하지 않으면 이 작업은 `client_1`에 대한 전체 예상을 반환합니다.
   + `filters` - `item_id` 필터를 지정하여 `client_1`에 대한 전기 예측을 검색합니다.

     다음은 `filters` 파라미터의 간편 구문입니다.

     ```
     --filters item_id="client_1"
     ```

   다음은 응답의 예입니다.

   ```
   {
       "Forecast": {
           "Predictions": {
               "mean": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 20.952411651611328
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 19.11078453063965
                   }
               ],
               "p90": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 24.524038314819336
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 22.319091796875
                   }
               ],
               "p50": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 20.7841739654541
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 19.237524032592773
                   }
               ],
               "p10": [
                   {
                       "Timestamp": "2015-01-01T01:00:00",
                       "Value": 18.507278442382812
                   },
                   {
                       "Timestamp": "2015-01-01T02:00:00",
                       "Value": 16.15062141418457
                   }
               ]
           }
       }
   }
   ```

   이는 시간별 예상이기 때문에 응답에는 시간별 예상 값이 표시됩니다. 응답에서 다음에 유의하십시오.
   + `mean` - 특정 날짜와 시간에서 평균은 고객의 예상 평균 전기 사용량 값입니다.
   + `p90`, `p50`, `p10` - 지정된 날짜 및 시간에 실제 값이 나열된 값보다 낮을 것이라는 신뢰도 수준을 지정합니다. 예를 들어 2015-01-01T01:00:00에 Amazon Forecast는 전기 사용량이 24.5 미만이 될 것이라고 90% 확신합니다. Amazon Forecast는 사용량이 20.8 미만일 것이라고 50% 확신하고, 18.5 미만이 될 것이라고 10% 확신합니다.

   이 작업에 대한 자세한 내용은 [QueryForecast](API_forecastquery_QueryForecast.md) 단원을 참조하십시오.

1. 전체 예측을 Amazon S3 버킷으로 내보냅니다. 제공하는 IAM 역할은 S3 버킷에 데이터를 쓸 권한이 있어야 합니다. IAM 역할 생성 방법에 대한 자세한 내용은 [Amazon Forecast를 위한 IAM 역할 생성(AWS CLI)](aws-forecast-iam-roles.md#aws-forecast-create-iam-role-with-cli) 단원을 참조하세요.

   예상 내보내기 작업을 생성합니다.

   ```
   aws forecast create-forecast-export-job \
   --forecast-export-job-name electricityforecast_exportjob \
   --forecast-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast \
   --destination S3Config="{Path='s3://bucket',RoleArn='arn:aws:iam::acct-id:role/Role'}"
   ```

   다음은 응답의 예입니다.

   ```
   {
      "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087"
   }
   ```

   이 작업에 대한 자세한 내용은 [CreateForecastExportJob](API_CreateForecastExportJob.md) 단원을 참조하십시오.

1. 내보내기 작업 상태를 가져옵니다.

   ```
   aws forecast describe-forecast-export-job \
   --forecast-export-job-arn arn:aws:forecast:us-west-2:acct-id:forecast/electricityforecast
   ```

   다음은 응답의 예입니다.

   ```
   {
       "ForecastExportJobArn": "arn:aws:forecast::us-west-2:acct-id:forecast-export/64bbc087",
       "ForecastExportJobName": "electricityforecast_exportjob",
       "Status": "CREATE_IN_PROGRESS"
   }
   ```

   상태가 활성이면 지정된 S3 버킷에서 예상 파일을 찾을 수 있습니다.