Creación de un trabajo de AutoML para la previsión de serie temporal con la API - Amazon SageMaker AI

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.

Creación de un trabajo de AutoML para la previsión de serie temporal con la API

En machine learning, la previsión se refiere al proceso de predecir los resultados o tendencias futuros en función de patrones y datos históricos. Al analizar datos de series temporales pasadas e identificar los patrones subyacentes, los algoritmos de machine learning pueden hacer predicciones y proporcionar información valiosa sobre el comportamiento futuro. Al pronosticar, el objetivo es desarrollar modelos que puedan capturar con precisión la relación entre las variables de entrada y la variable objetivo a lo largo del tiempo. Esto implica examinar varios factores, como las tendencias, la estacionalidad y otros patrones relevantes de los datos. La información recopilada se utiliza luego para entrenar un modelo de machine learning. El modelo entrenado es capaz de generar predicciones tomando nuevos datos de entrada y aplicando las relaciones y los patrones aprendidos. Puede proporcionar pronósticos para una amplia gama de casos de uso, como proyecciones de ventas, tendencias del mercado de valores, pronósticos meteorológicos, pronósticos de demanda y muchos más.

Las siguientes instrucciones muestran cómo crear un trabajo de Amazon SageMaker Autopilot como experimento piloto para tipos de problemas de previsión de series temporales mediante SageMaker AI API Reference.

nota

Las tareas como la clasificación de textos e imágenes, la previsión de series temporales y el afinamiento de modelos de lenguaje grandes están disponibles exclusivamente en la versión 2 de la API de REST de AutoML. Si su idioma preferido es Python, puede consultar directamente el MLV2 objeto Auto del SDK de Amazon SageMaker Python. AWS SDK for Python (Boto3)

Los usuarios que prefieran la comodidad de una interfaz de usuario pueden usar Amazon SageMaker Canvas para acceder a modelos previamente entrenados y modelos básicos de IA generativa, o crear modelos personalizados adaptados a textos específicos, clasificación de imágenes, necesidades de previsión o IA generativa.

Puede crear un experimento de previsión de series temporales con piloto automático mediante programación llamando a la CreateAutoMLJobV2API en cualquier idioma compatible con Amazon Autopilot o el. SageMaker AWS CLI

Para obtener información sobre cómo se traduce esta acción de API en una función en el lenguaje que usted prefiera, consulte la sección Véase también de CreateAutoMLJobV2 y seleccione un SDK. Como ejemplo, para los usuarios de Python, consulte la sintaxis de solicitud completa de create_auto_ml_job_v2 en AWS SDK for Python (Boto3).

Piloto automático entrena a varios modelos candidatos con su serie temporal objetivo y, a continuación, selecciona un modelo de pronóstico óptimo para una métrica objetivo determinada. Cuando los candidatos a modelo hayan recibido entrenamiento, podrá encontrar las mejores métricas candidatas en la respuesta a DescribeAutoMLJobV2 en BestCandidate.

En las siguientes secciones se definen los parámetros de solicitud de entrada obligatorios y opcionales para la API CreateAutoMLJobV2 utilizada en la previsión de series temporales.

nota

Consulte el cuaderno Previsión de series temporales con Amazon SageMaker Autopilot para ver un ejemplo práctico y práctico de previsión de series temporales. En este cuaderno, utiliza Amazon SageMaker Autopilot para entrenar un modelo de series temporales y producir predicciones utilizando el modelo entrenado. El cuaderno proporciona instrucciones para recuperar un conjunto de datos históricos tabulares listo para usar en Amazon S3.

Requisitos previos

Antes de usar el piloto automático para crear un experimento de previsión de series temporales en SageMaker IA, asegúrese de:

  • Prepare su conjunto de datos de series temporales. La preparación del conjunto de datos implica recopilar datos relevantes de diversas fuentes, limpiarlos y filtrarlos para eliminar el ruido y las incoherencias y organizarlos en un formato estructurado. Consulte Formato de conjuntos de datos de series temporales y métodos de relleno de valores faltantes para obtener más información sobre los requisitos de formato de series temporales en Piloto automático. Si lo desea, puede complementar su conjunto de datos con el calendario de días festivos del país que elija para capturar los patrones asociados. Para obtener más información sobre los calendarios de días festivos, consulte Calendarios de días festivos nacionales.

    nota

    Recomendamos proporcionar al menos de 3 a 5 puntos de datos históricos por cada punto de datos futuro que desee predecir. Por ejemplo, para prever con 7 días de antelación (horizonte de 1 semana) en función de los datos diarios, entrene el modelo con un mínimo de 21 a 35 días de datos históricos. Asegúrese de proporcionar datos suficientes para captar los patrones estacionales y recurrentes.

  • Coloque el conjunto de datos de serie temporal en un bucket de Amazon S3.

  • Conceda acceso completo al depósito de Amazon S3 que contiene los datos de entrada para la función de ejecución de SageMaker IA utilizada para ejecutar el experimento. Una vez hecho esto, puede usar el ARN de este rol de ejecución en las solicitudes de la API de Piloto automático.

    • Para obtener información sobre cómo recuperar su función de ejecución de SageMaker IA, consulteObtención del rol de ejecución.

    • Para obtener información sobre cómo conceder permisos a su función de ejecución de SageMaker IA para acceder a uno o más buckets específicos en Amazon S3, consulte Añadir permisos adicionales de Amazon S3 a una función de ejecución de SageMaker IA enCreación de un rol de ejecución.

Parámetros necesarios

Al llamar a CreateAutoMLJobV2 para crear un experimento de Piloto automático a fin de realizar una previsión de series temporales, debe proporcionar los siguientes valores:

  • Un AutoMLJobName para especificar el nombre del trabajo. El nombre debe ser del tipo string y tener una longitud de caracteres de entre 1 y 32.

  • Al menos un AutoMLJobChannel en AutoMLJobInputDataConfig, en el que usted especifique el nombre del bucket de Amazon S3 que contiene sus datos. Si lo desea, puede especificar el contenido (archivos CSV o Parquet) y los tipos de compresión (GZip).

  • Un AutoMLProblemTypeConfig del tipo TimeSeriesForecastingJobConfig para configurar los ajustes de su trabajo de previsión de series temporales. Es especialmente importante que especifique lo siguiente:

    • La frecuencia de las predicciones; es decir, la granularidad deseada (por hora, día, mes, etc.) de su previsión.

      Los intervalos válidos son un número entero seguido de Y (año), M (mes), W (semana), D (día), H (hora) y min (minuto). Por ejemplo, 1D indica todos los días y 15min indica cada 15 minutos. El valor de una frecuencia no debe superponerse con la siguiente frecuencia mayor. Por ejemplo, debe utilizar una frecuencia de 1H en lugar de 60min.

      Los valores válidos de cada frecuencia son los siguientes:

      • Minuto: de 1 a 59

      • Hora: de 1 a 23

      • Día: de 1 a 6

      • Semana: de 1 a 4

      • Mes: de 1 a 11

      • Año: 1

    • El horizonte de predicciones de su pronóstico; es decir, el número de intervalos de tiempo que predice el modelo. El horizonte de previsión también se denomina longitud de predicción. El horizonte máximo de previsión es 500 intervalos temporales o 1/4 de los intervalos temporales del conjunto de datos (el valor más pequeño).

    • A, TimeSeriesConfigen la que se define el esquema del conjunto de datos para asignar los encabezados de las columnas a la previsión especificando:

      • Un TargetAttributeName: la columna que contiene los datos históricos del campo objetivo que se va a pronosticar.

      • Un TimestampAttributeName: la columna que contiene un punto en el tiempo en el que se registra el valor objetivo de un elemento determinado.

      • Un ItemIdentifierAttributeName: la columna que contiene los identificadores de los elementos para los que desea predecir el valor objetivo.

    Lo que sigue es un ejemplo de estos parámetros de solicitud. En este ejemplo, está configurando una previsión diaria para la cantidad o el nivel de demanda esperados de artículos específicos durante un periodo de 20 días.

    "AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },
  • Una OutputDataConfig para especificar la ruta de salida de Amazon S3 a fin de almacenar los artefactos de su trabajo de AutoML.

  • Un RoleArn para especificar el ARN del rol utilizado para acceder a sus datos. Puede utilizar el ARN de la función de ejecución a la que ha concedido acceso a sus datos.

Todos los demás parámetros son opcionales. Por ejemplo, puede establecer cuantiles de previsión específicos, elegir un método de relleno para los valores que faltan en el conjunto de datos o definir cómo agregar los datos que no se ajustan a la frecuencia de la previsión. Para saber cómo configurar esos parámetros adicionales, consulte Parámetros opcionales.

Parámetros opcionales

En las siguientes secciones, se proporcionan detalles de algunos parámetros opcionales que puede pasar a la predicción de series temporales de AutoML.

De forma predeterminada, el trabajo de Piloto automático entrena una lista predefinida de algoritmos en su conjunto de datos. No obstante, puede proporcionar un subconjunto de la selección de algoritmos predeterminada.

Para la previsión de series temporales, debe elegir TimeSeriesForecastingJobConfig como tipo de AutoMLProblemTypeConfig.

A continuación, puede especificar una matriz de los seleccionados AutoMLAlgorithms en el AlgorithmsConfig atributo de CandidateGenerationConfig.

A continuación se muestra un ejemplo de un atributo AlgorithmsConfig que enumera exactamente tres algoritmos ("cnn-qr", "prophet", "arima") en su campo AutoMLAlgorithms.

{ "AutoMLProblemTypeConfig": { "TimeSeriesForecastingJobConfig": { "CandidateGenerationConfig": { "AlgorithmsConfig":[ {"AutoMLAlgorithms":["cnn-qr", "prophet", "arima"]} ] }, }, }, }

Para ver la lista de algoritmos disponibles para la previsión de serie temporal, consulte AutoMLAlgorithms. Para obtener información sobre cada algoritmo, consulte Compatibilidad de algoritmos para la previsión de series temporales.

Piloto automático entrena a seis modelos candidatos con su serie temporal objetivo; luego, combina estos modelos con un método de conjunto de apilamiento a fin de crear un modelo de previsión óptimo para una métrica objetivo determinada. Cada modelo de pronóstico de Piloto automático genera un pronóstico probabilístico con pronósticos en cuantiles de entre P1 y P99. Estos cuantiles se utilizan para contabilizar la incertidumbre de las previsiones. De forma predeterminada, se generarán pronósticos para los valores 0,1 (p10), 0,5 (p50) y 0,9 (p90). Puede especificar sus propios cuantiles.

En el piloto automático, puede especificar hasta cinco cuantiles de previsión, de 0,01 (p1) a 0,99 (p99), mediante incrementos de 0,01 o más en el atributo de. ForecastQuantiles TimeSeriesForecastingJobConfig

En este ejemplo, se configura una previsión diaria de los percentiles 10, 25, 50, 75 y 90 para la cantidad o el nivel de demanda esperados de artículos específicos durante un periodo de 20 días.

"AutoMLProblemTypeConfig": { "ForecastFrequency": "D", "ForecastHorizon": 20, "ForecastQuantiles": ["p10", "p25", "p50", "p75", "p90"], "TimeSeriesConfig": { "TargetAttributeName": "demand", "TimestampAttributeName": "timestamp", "ItemIdentifierAttributeName": "item_id" },

Para crear un modelo de previsión (también denominado el mejor modelo candidato del experimento), debe especificar una frecuencia de previsión. La frecuencia de previsión determina la frecuencia de las predicciones en sus previsiones. Por ejemplo, las previsiones de ventas mensuales. El mejor modelo de Piloto automático puede generar pronósticos para frecuencias de datos superiores a la frecuencia con la que se registran los datos.

Durante el entrenamiento, Piloto automático agrega cualquier dato que no se ajuste a la frecuencia de previsión que especifique. Por ejemplo, puede que tenga algunos datos diarios, pero que especifique una frecuencia de previsión semanal. Piloto automático ajusta los datos diarios en función de la semana a la que pertenecen. Luego, Piloto automático los combina en un solo registro para cada semana.

Durante la agregación, el método de transformación predeterminado consiste en sumar los datos. Puede configurar la agregación al crear su trabajo de AutoML en el Transformations atributo de. TimeSeriesForecastingJobConfig Los métodos de agregación compatibles son sum (predeterminado), avg, first, min y max. La agregación solo se admite en la columna de destino.

En el siguiente ejemplo, configura la agregación para calcular la media de las previsiones promocionales individuales y proporcionar los valores finales de las previsiones agregadas.

"Transformations": { "Aggregation": { "promo": "avg" } }

Piloto automático proporciona varios métodos de relleno para gestionar los valores que faltan en las columnas objetivo y otras columnas numéricas de sus conjuntos de datos de series temporales. Para obtener información sobre la lista de métodos de relleno compatibles y su lógica de relleno disponible, consulte Gestión de valores que faltan.

Usted configura su estrategia de llenado en el Transformations atributo de TimeSeriesForecastingJobConfigal crear su trabajo de AutoML.

Para configurar un método de relleno, debe proporcionar un par clave-valor:

  • La clave es el nombre de la columna cuyo método de relleno quiera especificar.

  • El valor asociado a la clave es un objeto que define la estrategia de relleno de esa columna.

Puede especificar varios métodos de relleno para una sola columna.

Para establecer un valor específico para el método de relleno, debe establecer el parámetro de relleno según el valor del método de relleno deseado (por ejemplo, "backfill" : "value") y definir el valor de relleno real en un parámetro adicional con el sufijo “_value”. Por ejemplo, para establecer backfill a un valor de 2, debe incluir dos parámetros: "backfill": "value" y "backfill_value":"2".

En el siguiente ejemplo, se especifica la estrategia de relleno para la columna de datos incompleta (“precio”) de la siguiente manera: todos los valores faltantes entre el primer punto de datos de un artículo y el último se establecen en 0; después, todos los valores faltantes se rellenan con el valor 2 hasta la fecha de finalización del conjunto de datos.

"Transformations": { "Filling": { "price": { "middlefill" : "zero", "backfill" : "value", "backfill_value": "2" } } }

Piloto automático produce métricas de precisión para evaluar los modelos candidatos y ayudarlo a elegir cuál usar para generar pronósticos. Cuando ejecuta un experimento de previsión de series temporales, puede elegir AutoML para que Piloto automático optimice el predictor de forma automática, o puede elegir manualmente un algoritmo para su predictor.

De forma predeterminada, Piloto automático utiliza la pérdida de cuantil ponderada media. Sin embargo, puede configurar la métrica del objetivo al crear su trabajo de AutoML en el MetricName atributo de Auto MLJob Objective.

Para ver la lista de algoritmos disponibles, consulte Compatibilidad de algoritmos para la previsión de series temporales.

En Piloto automático, puede incorporar a su serie temporal un conjunto de datos, con ingeniería de características, con información sobre los días festivos nacionales. Piloto automático proporciona soporte nativo para los calendarios de días festivos de más de 250 países. Después de elegir un país, Piloto automático aplica el calendario de días festivos de ese país a todos los elementos de su conjunto de datos durante el entrenamiento. Esto permite que el modelo identifique los patrones asociados a días festivos específicos.

Puede habilitar la función navideña al crear su trabajo de AutoML pasando un HolidayConfigAttributesobjeto al atributo de. HolidayConfig TimeSeriesForecastingJobConfig El objeto HolidayConfigAttributes contiene el atributo CountryCode de dos letras que determina el país del calendario festivo nacional público que se utiliza para aumentar el conjunto de datos de series temporales.

Consulte Códigos de país para obtener una lista de calendarios compatibles y su código de país correspondiente.

Piloto automático le permite implementar automáticamente su modelo de pronóstico en un punto de conexión. Para permitir la implementación automática del mejor candidato modelo para un trabajo de AutoML, incluya un ModelDeployConfig en la solicitud de trabajo de AutoML. Esto permite implementar el mejor modelo en un SageMaker punto final de IA. A continuación, se muestran las configuraciones disponibles para la personalización.

Puede configurar su trabajo de AutoML V2 para iniciar automáticamente un trabajo remoto en Amazon EMR sin servidor cuando se necesiten recursos de computación adicionales para procesar conjuntos de datos de gran tamaño. Al realizar una transición sin problemas a EMR sin servidor cuando es necesario, el trabajo de AutoML puede gestionar conjuntos de datos que, de otro modo, superarían los recursos aprovisionados inicialmente, sin ninguna intervención manual por su parte. EMR sin servidor está disponible para los tipos de problemas tabulares y de series temporales. Recomendamos configurar esta opción para conjuntos de datos de series temporales de más de 30 GB.

Para permitir que el trabajo de AutoML V2 pase automáticamente a EMR sin servidor para conjuntos de datos grandes, debe proporcionar un objeto EmrServerlessComputeConfig, que incluya un campo ExecutionRoleARN, para el AutoMLComputeConfig de la solicitud de entrada del trabajo AutoML V2.

ExecutionRoleARN es el ARN del rol de IAM que otorga al trabajo de AutoML V2 los permisos necesarios para ejecutar los trabajos de EMR sin servidor.

Este rol debe tener la siguiente relación de confianza:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Y conceder los permisos para:

  • Crear, enumerar y actualizar aplicaciones de EMR sin servidor.

  • Iniciar, enumere, obtener o cancelar las ejecuciones de trabajos en una aplicación EMR sin servidor.

  • Etiquetar los recursos EMR sin servidor.

  • Pasar un rol de IAM al servicio de EMR sin servidor para su ejecución.

    Al conceder el permiso iam:PassRole, el trabajo de AutoML V2 puede asumir temporalmente el rol EMRServerlessRuntimeRole-* y pasarlo al servicio de EMR sin servidor. Estas son las funciones de IAM que utilizan los entornos de ejecución de trabajos sin servidor de EMR para acceder a AWS otros servicios y recursos necesarios durante el tiempo de ejecución, como Amazon S3 para el acceso a los datos, el registro CloudWatch , AWS Glue el acceso al catálogo de datos u otros servicios en función de sus requisitos de carga de trabajo.

    Consulte Roles en tiempo de ejecución de trabajo para Amazon EMR sin servidor para obtener más información sobre los permisos de este rol.

La política de IAM definida en el documento JSON proporcionado concede esos permisos:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "EMRServerlessCreateApplicationOperation", "Effect": "Allow", "Action": "emr-serverless:CreateApplication", "Resource": "arn:aws:emr-serverless:*:*:/*", "Condition": { "StringEquals": { "aws:RequestTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessListApplicationOperation", "Effect": "Allow", "Action": "emr-serverless:ListApplications", "Resource": "arn:aws:emr-serverless:*:*:/*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessApplicationOperations", "Effect": "Allow", "Action": [ "emr-serverless:UpdateApplication", "emr-serverless:GetApplication" ], "Resource": "arn:aws:emr-serverless:*:*:/applications/*", "Condition": { "StringEquals": { "aws:ResourceTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessStartJobRunOperation", "Effect": "Allow", "Action": "emr-serverless:StartJobRun", "Resource": "arn:aws:emr-serverless:*:*:/applications/*", "Condition": { "StringEquals": { "aws:RequestTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessListJobRunOperation", "Effect": "Allow", "Action": "emr-serverless:ListJobRuns", "Resource": "arn:aws:emr-serverless:*:*:/applications/*", "Condition": { "StringEquals": { "aws:ResourceTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessJobRunOperations", "Effect": "Allow", "Action": [ "emr-serverless:GetJobRun", "emr-serverless:CancelJobRun" ], "Resource": "arn:aws:emr-serverless:*:*:/applications/*/jobruns/*", "Condition": { "StringEquals": { "aws:ResourceTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "EMRServerlessTagResourceOperation", "Effect": "Allow", "Action": "emr-serverless:TagResource", "Resource": "arn:aws:emr-serverless:*:*:/*", "Condition": { "StringEquals": { "aws:RequestTag/sagemaker:is-canvas-resource": "True", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "IAMPassOperationForEMRServerless", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/EMRServerlessRuntimeRole-*", "Condition": { "StringEquals": { "iam:PassedToService": "emr-serverless.amazonaws.com", "aws:ResourceAccount": "${aws:PrincipalAccount}" } } } ] }