Introducción (AWS CLI) - Amazon Forecast

Amazon Forecast ya no está disponible para nuevos clientes. Los clientes actuales de Amazon Forecast pueden seguir utilizando el servicio con normalidad. Más información

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Introducción (AWS CLI)

En este ejercicio, utilizará la AWS Command Line Interface (AWS CLI) para explorar Amazon Forecast. Puede crear un conjunto de datos de Amazon Forecast, entrenar un predictor y utilizar el predictor resultante para generar una previsión. Antes de empezar, asegúrese de tiene una cuenta de Cuenta de AWS y ha configurado la AWS CLI. Para obtener más información, consulte Configuración.

nota

La comandos de la AWS CLI de este ejercicio se han probado en Linux. Para obtener información sobre el uso de comandos de la AWS CLI en Windows, consulte Especificación de valores de parámetros para la AWS Command Line Interface en la Guía del usuario de AWS Command Line Interface.

Para empezar, cree un conjunto de datos e importe en él los datos de uso de electricidad.

Para crear un conjunto de datos de Amazon Forecast
  1. Decida qué dominio y tipo de conjunto de datos es adecuado.

    Los datos de entrenamiento que va a importar en el conjunto de datos influye en la elección del dominio y el tipo del conjunto de datos. Por tanto, analicemos algunos de los ejemplos as filas de los datos de uso de electricidad.

    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

    El formato de datos es CSV (valores separados por comas) y se recopilan cada hora (tal y como se muestra con las marcas temporales). Incluye estas columnas:

    • Columna 1: Marcas temporales que muestran cuándo se registró el consumo de electricidad.

    • Columna 2: Valores de consumo de electricidad por hora (observe cómo los valores de la marca temporal aumentan cada hora).

    • Columna 3: valores de ID de cliente que identifican a los clientes que consumen electricidad.

    Para estos datos, elija el siguiente dominio de conjunto de datos y tipo de conjunto de datos predefinidos:

    • Dominio personalizado: ninguno de los dominios del conjunto de datos, como METRICS, RETAIL o WEB_TRAFFIC, se aplica a estos datos, así que elija el dominio personalizado.

    • Tipo de serie temporal de destino: los datos son una serie temporal porque hacen un seguimiento del consumo de electricidad a lo largo del tiempo. También incluye el objetivo para el que queremos realizar la previsión (Columna 2, uso de electricidad). Por tanto, seleccione el tipo de conjunto de datos de serie temporal de destino.

      Para entender por qué elegir este tipo, consulte Tipos de conjunto de datos y dominios de conjunto de datos predefinidos.

  2. Decida esquema de conjunto de datos.

    El tipo de serie temporal de destino para CUSTOMDominio requiere estos campos: timestamp, target_value e item_id. El campo target_value es el de destino. Amazon Forecast genera la previsión para este campo.

    Cree un esquema para asignar los campos obligatorios a las columnas de datos. Cada atributo del esquema se asigna a un campo en los datos.

    importante

    El orden de los atributos en el esquema debe coincidir con el orden de los campos en los datos de entrenamiento.

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

    Ahora tiene la información necesaria para crear un conjunto de datos e importar datos en él.

  3. Cree un conjunto de datos.

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

    En la solicitud, el valor data-frequency H representa una frecuencia de recopilación de datos por hora. A continuación, se muestra un ejemplo de respuesta.

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

    Para obtener más información acerca de esta operación, consulte CreateDataset.

  4. (Opcional) Obtener la descripción del conjunto de datos.

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

    A continuación, se muestra un ejemplo de respuesta.

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

    El orden de los pares de clave/valor en la respuesta es arbitrario.

  5. Cree un grupo de conjunto de datos y añádale el conjunto de datos. El valor del parámetro domain debe coincidir con el domain del conjunto de datos.

    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

    A continuación, se muestra un ejemplo de respuesta.

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

    Para obtener más información acerca de esta operación, consulte CreateDatasetGroup.

  6. (Opcional) Obtener la descripción del grupo del conjunto de datos.

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

    A continuación, se muestra un ejemplo de respuesta.

    { "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 los datos de entrenamiento de consumo de electricidad desde su bucket de Amazon S3 al conjunto de datos. El rol de IAM que proporcione debe tener permiso para leer datos de su bucket de S3. Para obtener información sobre cómo crear un rol de IAM, consulte Crear un rol de IAM para 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" } }'

    A continuación se muestra la sintaxis abreviada del parámetro data-source.

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

    A continuación, se muestra un ejemplo de respuesta.

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

    Para obtener más información acerca de esta operación, consulte CreateDatasetImportJob.

  8. Compruebe el estado de importación.

    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

    A continuación, se muestra un ejemplo de respuesta.

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

    Una vez importados todos los datos, el estado cambia a ACTIVE (ACTIVO) y la respuesta incluye estadísticas para los datos, tal y como se muestra en el siguiente ejemplo.

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

    Debe esperar hasta que el estado sea ACTIVE (ACTIVO) antes de crear un predictor con el grupo de conjuntos de datos.

    Para obtener más información acerca de esta operación, consulte DescribeDatasetImportJob.

Para crear un predictor, use la operación CreateAutoPredictor y proporcione lo siguiente información:

  • Nombre del predictor: asigne un nombre al predictor para que pueda distinguirlo del resto de los predictores

  • Grupo de conjuntos de datos: creó el grupo de conjuntos de datos en el paso anterior.

  • Frecuencia de previsión: la granularidad de sus previsiones (por hora, por día, por semana, etc.).

  • Horizonte de previsión: el número de pasos de tiempo que se están previendo.

Una vez creado el predictor, revise las métricas de precisión generadas por Amazon Forecast. Las métricas le ayudan a decidir si desea utilizar el predictor para generar una previsión. Para obtener más información sobre los predictores, consulte Predictores de reentrenamiento.

Para crear un predictor y revisar las métricas de precisión
  1. Cree el predictor.

    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

    A continuación, se muestra un ejemplo de respuesta.

    { "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
  2. Obtenga el estado del predictor.

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

    A continuación, se muestra un ejemplo de respuesta.

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

    El entrenamiento de modelos lleva tiempo. No continúe hasta que se haya completado el entrenamiento y el estado del predictor sea ACTIVE.

  3. Obtenga las métricas de precisión para el predictor.

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

    A continuación, se muestra un ejemplo de respuesta.

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

    Las métricas muestran la pérdida de errores para cada cuantil. Por ejemplo, se produjo un error del 11,7 % para el primer cuantil. Las métricas también muestran la desviación cuadrática media (RMSE).

    Las métricas de resumen muestran la media de las métricas calculadas en todas las ventanas de prueba. Dado que solo había una ventana de prueba, el resumen y las métricas calculadas son iguales.

    Para obtener más información acerca de esta operación, consulte GetAccuracyMetrics.

Amazon Forecast crea una previsión para el campo target_value (según determine el dominio del conjunto de datos y el tipo) para cada item_id único en el conjunto de datos. En este ejercicio, el campo target_value proporciona uso de electricidad e item_id proporciona los ID de cliente. Puede obtener una previsión para uso de electricidad por hora por parte del cliente.

Una vez creada la previsión, puede consultar un único artículo o exportar la previsión completa.

Para crear, recuperar y exportar una previsión
  1. Cree la previsión.

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

    La operación utiliza el predictor para crear una previsión. En la respuesta, se obtiene el nombre de recurso de Amazon (ARN) de la previsión. Puede utilizar este ARN para recuperar y exportar la previsión. A continuación, se muestra un ejemplo de respuesta.

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

    Para obtener más información acerca de esta operación, consulte CreateForecast.

  2. Recupere las primeras dos horas de la previsión para client_1.

    nota

    El nombre del servicio, forecastquery, es diferente del nombre del servicio utilizado en otro 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"}'

    La operación incluye los siguientes parámetros.

    • start-date y end-date: especifica un intervalo de fechas opcional del que recuperar la previsión. Si no especifica estos parámetros, la operación devuelve toda la previsión de client_1.

    • filters: especifica el filtro item_id para recuperar la previsión de electricidad de client_1.

      A continuación se muestra la sintaxis abreviada del parámetro filters.

      --filters item_id="client_1"

    A continuación, se muestra un ejemplo de respuesta.

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

    Dado que se trata de una previsión por hora, la respuesta muestra los valores previstos por hora. En la respuesta, tenga en cuenta lo siguiente:

    • mean: para la fecha y hora específicas, la media es el valor promedio de consumo de electricidad previsto para el cliente.

    • p90, p50, y p10: especifique el nivel de confianza de que el valor real estará por debajo del valor indicado en la fecha y hora especificadas. Por ejemplo, el 2015-01-01T01:00:00, Amazon Forecast confía un 90% en que el consumo de electricidad será inferior al 24,5. Amazon Forecast confía un 50% en que el uso será inferior a 20,8 y un 10% en que será inferior a 18,5.

    Para obtener más información acerca de esta operación, consulte QueryForecast.

  3. Exporte la previsión completa a su bucket de Amazon S3. El rol de IAM que proporcione debe tener permiso para escribir datos en su bucket de S3. Para obtener información sobre cómo crear un rol de IAM, consulte Crear un rol de IAM para Amazon Forecast (AWS CLI).

    Crear un trabajo de exportación de previsión.

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

    A continuación, se muestra un ejemplo de respuesta.

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

    Para obtener más información acerca de esta operación, consulte CreateForecastExportJob.

  4. Obtenga el estado del trabajo de exportación.

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

    A continuación, se muestra un ejemplo de respuesta.

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

    Cuando el estado sea ACTIVE, podrá encontrar los archivos de previsión en el bucket de S3 especificado.