Nozioni di base (AWS CLI) - Amazon Forecast

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nozioni di base (AWS CLI)

In questo esercizio, utilizziAWS Command Line Interface (AWS CLI) per esplorare Amazon Forecast. Crei un set di dati Amazon Forecast, addestra un predittore e usi il predittore risultante per generare una previsione. Prima di iniziare, assicurati di disporre di un Account AWS e di avere configurato AWS CLI. Per ulteriori informazioni, consulta Configurazione.

Nota

IAWS CLI comandi di questo esercizio sono stati testati su Linux. Per informazioni sull'utilizzo deiAWS CLI comandi in Windows, vedere Specificazione dei valori dei parametri per ilAWS Command Line Interface nella Guida per l'AWS Command Line Interfaceutente.

Inizia creando un set di dati e importando al suo interno i dati del consumo di elettricità.

Per creare un set di dati di Amazon Forecast
  1. Decidere quale dominio e tipo di set di dati sono appropriati.

    I dati di training che verranno importati nel set di dati influenzano la scelta del dominio e del tipo di set di dati. Pertanto, è opportuno rivedere alcune righe di esempio dei dati di consumo di elettricità.

    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

    Il formato dei dati è CSV (valori separati da virgola) e sono raccolti su base oraria (come mostrato dal timestamp). Sono incluse le colonne seguenti:

    • Colonna 1 — Timestamp che mostrano quando è stato registrato il consumo di elettricità.

    • Colonna 2 — Valori di consumo orario di elettricità (nota come i valori del timestamp aumentano di ora in ora).

    • Colonna 3 — Valori dell'ID cliente che identificano i clienti che utilizzano l'elettricità.

    Per questi dati, scegliere il dominio di set di dati e il tipo di set di dati predefiniti seguenti:

    • Dominio personalizzato: nessuno dei domini del set di dati, come METRICS, RETAIL o WEB_TRAFFIC, si applica a questi dati, quindi scegli il dominio personalizzato.

    • Tipo di serie temporale di destinazione: i dati sono una serie temporale perché tengono traccia del consumo di elettricità nel tempo. Includono anche il target per il quale generare la previsione (Colonna 2, consumo di elettricità). Pertanto, scegliere il tipo di set di dati di serie temporali target.

      Per comprendere perché si sceglie questo tipo, consulta Domini di set di dati e tipi di set di dati predefiniti.

  2. Scegliere uno schema di set di dati.

    Il tipo di serie temporali target per Dominio CUSTOM richiede questi campi: timestamp, target_value e item_id. Iltarget_value campo è l'obiettivo. Amazon Forecast genera la previsione per questo campo.

    Per mappare i campi obbligatori alle colonne nei dati, è necessario creare uno schema. Ogni attributo nello schema è mappato a un campo nei dati.

    Importante

    L'ordine degli attributi nello schema deve corrispondere all'ordine dei campi nei dati di training.

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

    Sono ora disponibili le informazioni necessarie per creare un set di dati e importare al suo interno i dati.

  3. Creare il set di dati.

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

    Nella richiesta, il valore data-frequency H rappresenta una frequenza di raccolta dei dati su base oraria. Di seguito è riportata una risposta di esempio.

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

    Per ulteriori informazioni su questa operazione, consulta CreateDataset.

  4. (Facoltativo) Ottenere la descrizione del set di dati.

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

    Di seguito è riportata una risposta di esempio.

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

    L'ordine delle coppie chiave-valore nella risposta è arbitrario.

  5. Creare un gruppo di set di dati e aggiungere a esso il set di dati. Il valore del parametro domain deve corrispondere a domain del set di dati.

    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

    Di seguito è riportata una risposta di esempio.

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

    Per ulteriori informazioni su questa operazione, consulta CreateDatasetGroup.

  6. (Facoltativo) Ottenere la descrizione del gruppo di set di dati.

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

    Di seguito è riportata una risposta di esempio.

    { "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. Importa i dati dell'addestramento sull'utilizzo dell'elettricità dal bucket Amazon S3 nel set. Il ruolo IAM che viene fornito deve disporre dell'autorizzazione per leggere i dati dal bucket S3. Per informazioni su come creare un ruolo IAM, consultaCrea un ruolo IAM per 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" } }'

    Di seguito è riportata la sintassi abbreviata per il parametro data-source.

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

    Di seguito è riportata una risposta di esempio.

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

    Per ulteriori informazioni su questa operazione, consulta CreateDatasetImportJob.

  8. Controllare lo stato di importazione.

    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

    Di seguito è riportata una risposta di esempio.

    { "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 tutti i dati sono stati importati, lo stato diventa ACTIVE (ATTIVO) e la risposta include le statistiche per i dati, come mostrato nell'esempio seguente.

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

    Devi attendere che lo stato sia ACTIVE (ATTIVO) prima di creare un predittore con il gruppo di set di dati.

    Per ulteriori informazioni su questa operazione, consulta DescribeDatasetImportJob.

Per creare un predittore, utilizza l'operazione CreateAutoPredictor e fornisci le informazioni seguenti.

  • Nome predittore: assegna un nome al predittore in modo da poterlo distinguere dagli altri predittori

  • Gruppo di set di dati: hai creato il gruppo di set di dati nel passaggio precedente.

  • Frequenza delle Forecast: la granularità delle previsioni (orarie, giornaliere, settimanali, ecc.).

  • Orizzonte di Forecast: il numero di fasi temporali previste.

Dopo aver creato il predittore, esamini le metriche di precisione generate da Amazon Forecast. I parametri consentono di decidere se utilizzare il predittore per generare una previsione. Per ulteriori informazioni sui predittori, consulta Predittori di allenamento.

Per creare un predittore e rivedere i parametri di accuratezza
  1. Creare il predittore.

    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

    Di seguito è riportata una risposta di esempio.

    { "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
  2. Ottenere lo stato del predittore.

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

    Di seguito è riportata una risposta di esempio.

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

    Il training del modello richiede tempo. Non continuare finché non è stato completato il training e lo stato del predittore è ACTIVE.

  3. Ottenere i parametri di precisione per il predittore.

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

    Di seguito è riportata una risposta di esempio.

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

    I parametri mostrano la perdita di errore per ogni quantile. Ad esempio, si è verificato un errore dell'11,7% per il primo quantile. Le metriche mostrano anche l' root-mean-square errore (RMSE).

    I parametri di riepilogo mostrano la media dei parametri calcolati in tutte le finestre di test. Poiché c'era una sola finestra di test, i parametri di riepilogo e calcolati sono uguali.

    Per ulteriori informazioni su questa operazione, consulta GetAccuracyMetrics.

Amazon Forecast crea una previsione per iltarget_value campo (in base al dominio e al tipo del set di dati) per ogni singoloitem_id set di dati. In questo esempio, il campo target_value fornisce il consumo di elettricità e item_id fornisce gli ID client. Puoi ottenere una previsione del consumo orario di elettricità per cliente.

Dopo aver creato la previsione, puoi eseguire una query per un singolo elemento o esportare la previsione completa.

Per creare, recuperare ed esportare una previsione
  1. Creare la previsione.

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

    L'operazione utilizza il predittore per creare una previsione. Nella risposta, viene restituito l'Amazon Resource Name (ARN) della previsione. Puoi utilizzare questo ARN per recuperare ed esportare la previsione. Di seguito è riportata una risposta di esempio.

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

    Per ulteriori informazioni su questa operazione, consulta CreateForecast.

  2. Recuperare le prime due ore della previsione per client_1.

    Nota

    Il nome del servizio, forecastquery, è diverso dal nome del servizio utilizzato altrove.

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

    L'operazione include i parametri seguenti.

    • start-dateeend-date — Specifica un intervallo di date opzionale per il quale recuperare la previsione. Se non si specificano questi parametri, l'operazione restituisce l'intera previsione per client_1.

    • filters— Specifica ilitem_id filtro per cui recuperare le previsioni di elettricitàclient_1.

      Di seguito è riportata la sintassi abbreviata per il parametro filters.

      --filters item_id="client_1"

    Di seguito è riportata una risposta di esempio.

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

    Poiché questa è una previsione oraria, la risposta mostra i valori di previsione oraria. Nella risposta, tenere presente quanto segue:

    • mean— Per la data e l'ora specifiche, la media è il valore di consumo medio di elettricità previsto per il cliente.

    • p90p50, ep10 — Specifica il livello di confidenza secondo cui il valore effettivo sarà inferiore al valore elencato alla data e all'ora specificate. Ad esempio, alle 01:00:00 del 01/01/2015, Amazon Forecast è sicura al 90% che il consumo di elettricità sarà inferiore a 24,5. Amazon Forecast è sicuro al 50% che l'utilizzo sarà inferiore a 20,8 e il 10% sicuro che l'utilizzo sarà inferiore a 18,5.

    Per ulteriori informazioni su questa operazione, consulta QueryForecast.

  3. Esporta la previsione completa nel bucket Amazon S3. Il ruolo IAM che viene fornito deve disporre dell'autorizzazione per scrivere i dati nel bucket S3. Per informazioni su come creare un ruolo IAM, consultaCrea un ruolo IAM per Amazon Forecast (AWS CLI).

    Creare un processo di esportazione della previsione.

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

    Di seguito è riportata una risposta di esempio.

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

    Per ulteriori informazioni su questa operazione, consulta CreateForecastExportJob.

  4. Ottenere lo stato del processo di esportazione.

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

    Di seguito è riportata una risposta di esempio.

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

    Quando lo stato è ACTIVE (ATTIVO), è possibile individuare i file di previsione nel bucket S3 specificato.