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
-
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.
-
-
Decida esquema de conjunto de datos.
El tipo de serie temporal de destino para CUSTOMDominio requiere estos campos:
timestamp
,target_value
eitem_id
. El campotarget_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.
-
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.
-
(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_dsA 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.
-
Cree un grupo de conjunto de datos y añádale el conjunto de datos. El valor del parámetro
domain
debe coincidir con eldomain
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 CUSTOMA 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.
-
(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_groupA 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" }
-
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.
-
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_jobA 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
-
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 DA continuación, se muestra un ejemplo de respuesta.
{ "PredictorArn": "arn:aws:forecast:us-west-2:acct-id:predictor/electricitypredictor" }
-
Obtenga el estado del predictor.
aws forecast describe-predictor \ --predictor-arn arn:aws:forecast:us-west-2:
acct-id
:predictor/electricitypredictorA 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.
-
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/electricitypredictorA 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
-
Cree la previsión.
aws forecast create-forecast \ --forecast-name electricityforecast \ --predictor-arn arn:aws:forecast:us-west-2:
acct-id
:predictor/electricitypredictorLa 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.
-
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
yend-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 declient_1
. -
filters
: especifica el filtroitem_id
para recuperar la previsión de electricidad declient_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
, yp10
: 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.
-
-
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.
-
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.