Conceitos básicos (AWS CLI) - Amazon Forecast

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Conceitos básicos (AWS CLI)

Neste exercício, você usará a AWS Command Line Interface (AWS CLI) para explorar o Amazon Forecast. Você cria um conjunto de dados do Amazon Forecast, treina um preditor e usa o preditor resultante para gerar uma previsão. Antes de começar, certifique-se de ter uma Conta da AWS e de ter configurado a AWS CLI. Para obter mais informações, consulte Configuração.

nota

Os comandos da AWS CLI neste exercício foram testados no Linux. Para obter informações sobre como usar os comandos da AWS CLI no Windows, consulte Como especificar valores de parâmetros para a AWS Command Line Interface no Guia do usuário da AWS Command Line Interface.

Comece criando um conjunto de dados e importando os dados de uso de eletricidade nele.

Para criar um conjunto de dados do Amazon Forecast
  1. Decida qual domínio e tipo de conjunto de dados são apropriados.

    Os dados de treinamento que você importará no conjunto de dados influencia sua opção de domínio e tipo de conjunto de dados. Portanto, vamos analisar algumas linhas de exemplo dos dados de uso de eletricidade:

    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

    O formato dos dados é CSV (valores separados por vírgulas) e é coletado por hora (conforme mostrado pelos timestamps). Inclui as seguintes colunas:

    • Coluna 1: carimbos de data/hora que mostram quando o uso de eletricidade foi registrado.

    • Coluna 2: valores de uso de eletricidade por hora (observe como os valores de carimbo de data/hora aumentam por hora).

    • Coluna 3: valores de ID de cliente que identificam os clientes que usam eletricidade.

    Para esses dados, escolha os seguintes domínio e tipo de conjunto de dados predefinidos:

    • Domínio personalizado: nenhum dos domínios de conjunto de dados, como METRICS, RETAIL ou WEB_TRAFFIC, se aplica a esses dados; portanto, escolha o domínio personalizado.

    • Tipo de séries temporais de destino: os dados são uma série temporal porque rastreiam o uso de eletricidade ao longo do tempo. Ele também inclui o destino que queremos prever (Coluna 2, uso de eletricidade). Portanto, escolha o tipo de conjunto de dados séries temporais de destino.

      Para entender por que você escolhe esse tipo, consulte Domínios e tipos de conjunto de dados predefinidos.

  2. Escolha um esquema de conjunto de dados.

    O tipo de séries temporais de destino para o Domínio CUSTOM requer os campos timestamp, target_value e item_id. O campo target_value é o destino. O Amazon Forecast gera a previsão desse campo.

    Para mapear os campos obrigatórios para colunas em seus dados, crie um esquema. Cada atributo no esquema é mapeado para um campo nos dados.

    Importante

    A ordem dos atributos no esquema deve corresponder à ordem dos campos nos dados de treinamento.

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

    Agora você tem as informações necessárias para criar um conjunto de dados e importar dados nele.

  3. Crie o conjunto de dados.

    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" } ] }'

    Na solicitação, o valor H de data-frequency representa uma frequência de coleta de dados por hora. Esta é uma resposta de exemplo.

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

    Para obter mais informações sobre essa operação, consulte CreateDataset.

  4. (Opcional) Obtenha a descrição do conjunto de dados:

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

    Esta é uma resposta de exemplo.

    { "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" }
    nota

    A ordem dos pares de chave-valor na resposta é arbitrária.

  5. Crie um grupo de conjuntos de dados e adicione o conjunto de dados a ele: O valor do parâmetro domain deve corresponder ao domain do conjunto de dados.

    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

    Esta é uma resposta de exemplo.

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

    Para obter mais informações sobre essa operação, consulte CreateDatasetGroup.

  6. (Opcional) Obtenha a descrição do grupo de conjuntos de dados.

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

    Esta é uma resposta de exemplo.

    { "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. Importe os dados de treinamento de uso de eletricidade do bucket do Amazon S3 para o conjunto de dados. O perfil do IAM fornecido por você deve ter permissão para ler dados do bucket do S3. Para obter informações sobre como criar um perfil do IAM, consulte Criar um perfil do IAM para o Amazon Forecast (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" } }'

    Veja a seguir a sintaxe abreviada do parâmetro data-source.

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

    Esta é uma resposta de exemplo.

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

    Para obter mais informações sobre essa operação, consulte CreateDatasetImportJob.

  8. Verifique o status da importação.

    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

    Esta é uma resposta de exemplo.

    { "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" }

    Quando todos os dados tiverem sido importados, o status mudará para ACTIVE e a resposta incluirá estatísticas para os dados, conforme mostrado no exemplo a seguir.

    { "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 } }, ... }
    Importante

    Você deve aguardar até que o status esteja ACTIVE antes de criar um previsor com o grupo de conjuntos de dados.

    Para obter mais informações sobre essa operação, consulte DescribeDatasetImportJob.

Para criar um previsor, você usa a operação CreateAutoPredictor e fornece as seguintes informações:

  • Nome do preditor: atribua um nome ao preditor para que você possa distingui-lo de seus outros preditores

  • Grupo de conjuntos de dados: você criou o grupo de conjuntos de dados na etapa anterior.

  • Frequência de previsão: a granularidade de suas previsões (por hora, diariamente, semanalmente etc.).

  • Horizonte de previsão: o número de etapas de tempo que estão sendo previstas.

Depois que o previsor for criado, analise as métricas de precisão geradas pelo Amazon Forecast. As métricas ajudam você a decidir se deseja usar o previsor para gerar uma previsão. Para obter mais informações sobre previsores, consulte Treinar preditores.

Para criar um previsor e analisar as métricas de precisão
  1. Crie o previsor.

    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

    Esta é uma resposta de exemplo.

    { "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
  2. Obtenha o status do previsor.

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

    Esta é uma resposta de exemplo.

    { "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" } }
    Importante

    O treinamento do modelo é demorado. Não prossiga até que o treinamento seja concluído e o status do previsor seja ACTIVE.

  3. Obtenha a precisão de métricas para o previsor.

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

    Esta é uma resposta de exemplo.

    { "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 } ] } ] }

    As métricas mostram a perda de erro para cada quantil. Por exemplo, ocorreu um erro de 11,7% para o primeiro quantil. As métricas também mostram o erro da raiz média quadrática (RMSE).

    As métricas de resumo mostram a média das métricas calculadas em todas as janelas de teste. Como havia apenas uma janela de teste, o resumo e as métricas calculadas são iguais.

    Para obter mais informações sobre essa operação, consulte GetAccuracyMetrics.

O Amazon Forecast gera uma previsão para o campo target_value (conforme determinado pelo domínio e tipo de conjunto de dados) em cada item_id exclusivo no conjunto de dados. Neste exemplo, o campo target_value fornece o uso de eletricidade e o item_id os IDs de clientes. Você obtém uma previsão para o uso de eletricidade por hora pelo cliente.

Após a criação da previsão, é possível consultar um único item ou exportar a previsão completa.

Para criar, recuperar e exportar uma previsão
  1. Crie a previsão.

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

    A operação usa o previsor para criar uma previsão. Na resposta, você obtém o nome de recurso da Amazon (ARN) da previsão. Esse ARN é usado para recuperar e exportar a previsão. Esta é uma resposta de exemplo.

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

    Para obter mais informações sobre essa operação, consulte CreateForecast.

  2. Recupere as duas primeiras horas da previsão para o client_1.

    nota

    O nome do serviço, forecastquery, é diferente do nome do serviço usado em outro lugar.

    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"}'

    A operação inclui os parâmetros a seguir.

    • start-date e end-date: especifica um intervalo de datas opcional no qual a previsão será recuperada. Se você não especificar esses parâmetros, a operação retornará a previsão inteira para client_1.

    • filters: especifica o filtro item_id para recuperar a previsão de eletricidade para client_1.

      Veja a seguir a sintaxe abreviada do parâmetro filters.

      --filters item_id="client_1"

    Esta é uma resposta de exemplo.

    { "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 } ] } } }

    Como essa é uma previsão por hora, a resposta mostra valores de previsão por hora. Na resposta, observe o seguinte:

    • mean: na data e hora especificadas, a média é o valor médio de uso de eletricidade previsto para o cliente.

    • p90, p50 e p10: especifica o nível de confiança de que o valor real estará abaixo do valor listado na data e hora especificadas. Por exemplo, em 2015-01-01T01:00:00, o Amazon Forecast está 90% confiante de que o uso de eletricidade estará abaixo de 24,5. O Amazon Forecast tem 50% de confiança de que o uso estará abaixo de 20,8 e 10% de confiança de que o uso estará abaixo de 18,5.

    Para obter mais informações sobre essa operação, consulte QueryForecast.

  3. Exporte a previsão completa para o bucket do Amazon S3. O perfil do IAM fornecido deve ter permissão para gravar dados no bucket do S3. Para obter informações sobre como criar um perfil do IAM, consulte Criar um perfil do IAM para o Amazon Forecast (AWS CLI).

    Crie um trabalho de exportação de previsão.

    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'}"

    Esta é uma resposta de exemplo.

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

    Para obter mais informações sobre essa operação, consulte CreateForecastExportJob.

  4. Obtenha o status do trabalho de exportação.

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

    Esta é uma resposta de exemplo.

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

    Quando o status for ACTIVE, os arquivos de previsão podem ser encontrados no bucket do S3 especificado.