시작하기(AWS CLI) - Amazon Forecast

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

시작하기(AWS CLI)

이 연습에서는 AWS Command Line Interface(AWS CLI)를 사용하여 Amazon Forecast를 살펴봅니다. Amazon Forecast 데이터 세트를 생성하고, 예측기를 훈련하고, 결과 예측기를 사용하여 예측을 생성합니다. 시작하기 전에 AWS 계정이 있고 AWS CLI를 설정했는지 확인합니다. 자세한 내용은 설정 섹션을 참조하세요.

참고

이 연습에 사용된 AWS CLI 명령은 Linux에서 테스트되었습니다. Windows에서의 AWS CLI 명령 사용에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서AWS Command Line Interface에 대한 파라미터 값 지정을 참조하세요.

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

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_TRAFFIC과 같은 데이터 세트 도메인은 이 데이터에 적용되지 않으므로 사용자 지정 도메인을 선택합니다.

    • 대상 시계열 유형 - 이 데이터는 시간 경과에 따른 전기 사용량을 추적하기 때문에 시계열입니다. 또한 예상하고자 하는 대상(2열 전기 사용량)도 포함합니다. 따라서 대상 시계열 데이터 세트 유형을 선택합니다.

      이 유형을 선택한 이유를 이해하려면 미리 정의된 데이터 세트 도메인 및 데이터 세트 유형을 참조하십시오.

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

    CUSTOM 도메인에 대한 대상 시계열 유형에는 timestamp, target_valueitem_id의 필드가 필요합니다. target_value 필드가 대상입니다. Amazon Forecast는 이 필드를 위한 예측을 생성합니다.

    필수 필드를 데이터의 열에 매핑하려면 스키마를 생성합니다. 스키마의 각 속성은 데이터의 필드와 매핑됩니다.

    중요

    스키마의 속성 순서는 교육 데이터의 필드 순서와 일치해야 합니다.

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

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

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

    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-frequencyH는 시간별 데이터 수집 빈도를 나타냅니다. 다음은 응답의 예입니다.

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

    이 작업에 대한 자세한 내용은 CreateDataset 단원을 참조하십시오.

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

    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" }
    참고

    응답에서 키-값 페어 순서는 임의적입니다.

  5. 데이터 세트 그룹을 생성하여 여기에 데이터 세트를 추가합니다. 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 단원을 참조하십시오.

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

    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" }
  7. Amazon S3 버킷에서 데이터 세트로 전기 사용랑 훈련 데이터를 가져옵니다. 제공하는 IAM 역할은 S3 버킷에서 데이터를 읽을 권한이 있어야 합니다. IAM 역할 생성 방법에 대한 자세한 내용은 Amazon Forecast를 위한 IAM 역할 생성(AWS 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 단원을 참조하십시오.

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

    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 단원을 참조하십시오.

예측기를 생성하려면 CreateAutoPredictor 작업을 사용하고 다음 정보를 제공합니다.

  • 예측기 이름 - 다른 예측기와 구별할 수 있도록 예측기에 이름을 지정합니다.

  • 데이터 세트 그룹 - 이전 단계에서 데이터 세트 그룹을 생성했습니다.

  • 예측 빈도 - 예측의 세분 수준(시간별, 일별, 주별 등)입니다.

  • 예측 기간 - 예측되는 시간 단계 수입니다.

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

예측기를 생성하고 정확성 지표를 검토하려면
  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" }
  2. 예측기의 상태를 가져옵니다.

    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" } }
    중요

    모델 교육에는 시간이 필요합니다. 교육이 완료되고 예측기의 상태가 활성이 될 때까지 처리하지 마십시오.

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

    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 단원을 참조하십시오.

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 단원을 참조하십시오.

  2. 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-dateend-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 단원을 참조하십시오.

  3. 전체 예측을 Amazon S3 버킷으로 내보냅니다. 제공하는 IAM 역할은 S3 버킷에 데이터를 쓸 권한이 있어야 합니다. IAM 역할 생성 방법에 대한 자세한 내용은 Amazon Forecast를 위한 IAM 역할 생성(AWS 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 단원을 참조하십시오.

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

    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 버킷에서 예상 파일을 찾을 수 있습니다.