Cree un trabajo de AutoML para la previsión de series temporales mediante el API - Amazon SageMaker

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.

Cree un trabajo de AutoML para la previsión de series temporales mediante el 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 Reference. SageMaker API

nota

Tareas como la clasificación de textos e imágenes, la previsión de series temporales y el ajuste de modelos lingüísticos de gran tamaño están disponibles exclusivamente a través de la versión 2 del AutoML. REST API Si su idioma preferido es Python, puede hacer AWS SDK for Python (Boto3)referencia SDK directamente al MLV2objeto Auto de Amazon SageMaker Python.

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 al CreateAutoMLJobV2APIen cualquier idioma compatible con Amazon Autopilot o al. SageMaker AWS CLI

Para obtener información sobre cómo esta API acción se traduce en una función en el idioma que prefiera, consulte la sección Vea también de y seleccione una. CreateAutoMLJobV2 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 que CreateAutoMLJobV2 API se utilizan 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 utilizar el piloto automático para crear un experimento de previsión de series temporales, asegúrese de SageMaker:

  • 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 pronosticar con 7 días de antelación (horizonte de 1 semana) en función de los datos diarios, entrene su modelo con un mínimo de 21 a 35 días de datos históricos. Asegúrese de proporcionar datos suficientes para capturar los patrones estacionales y recurrentes.

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

  • Conceda acceso completo al bucket de Amazon S3 que contiene los datos de entrada para la función de SageMaker ejecución utilizada para ejecutar el experimento. Una vez hecho esto, puede utilizar esta función ARN de ejecución en las API solicitudes de piloto automático.

    • Para obtener información sobre cómo recuperar su función de SageMaker ejecución, consulte. Consiga su función de ejecución

    • Para obtener información sobre cómo conceder permisos a su función de SageMaker ejecución 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 SageMaker ejecución 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 (CSVo los archivos 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.

  • A RoleArn para especificar el ARN rol utilizado para acceder a los datos. Puede utilizar la función ARN 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, tu trabajo de piloto automático utiliza una lista predefinida de algoritmos en tu conjunto de datos. Sin embargo, puedes proporcionar un subconjunto de la selección predeterminada de algoritmos.

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

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

El siguiente es un ejemplo de un AlgorithmsConfig atributo 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 series temporales, 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.

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 A utoMLJob 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. 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 Serverless cuando se necesiten recursos informáticos adicionales para procesar conjuntos de datos de gran tamaño. Al realizar una transición sin problemas a EMR Serverless 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. EMRServerless 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 su trabajo de AutoML V2 pase automáticamente a EMR Serverless para un conjunto de datos grande, debe proporcionar un EmrServerlessComputeConfig objeto, que incluya un ExecutionRoleARN campo, a AutoMLComputeConfig la solicitud de entrada de AutoML job V2.

ExecutionRoleARNEs ARN la IAM función que otorga a AutoML job V2 los permisos necesarios para ejecutar trabajos sin EMR 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 concede los permisos a:

  • Cree, enumere y actualice aplicaciones EMR sin servidor.

  • Inicie, enumere, obtenga o cancele las ejecuciones de tareas en una aplicación EMR sin servidor.

  • Etiquete los EMR recursos sin servidor.

  • Transfiera una IAM función al servicio EMR Serverless para su ejecución.

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

    Consulte Funciones de tiempo de ejecución de tareas para Amazon EMR Serverless para obtener más información sobre los permisos de esta función.

La IAM política definida en el JSON documento proporcionado otorga 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}" } } } ] }