Entrenar el modelo de previsión de series temporales (GeoAI)

Resumen

Entrena un modelo de predicción de serie temporal de aprendizaje profundo mediante el uso de datos de serie temporal de un cubo de espacio-tiempo. El modelo entrenado se puede utilizar para predecir los valores de cada ubicación de un cubo de espacio-tiempo con la herramienta Predicción con el modelo de serie temporal.

Los datos de serie temporal pueden seguir varias tendencias y tener múltiples niveles de estacionalidad. Los modelos tradicionales de predicción de serie temporal basados en métodos estadísticos funcionan de manera diferente dependiendo de la tendencia y los patrones de estacionalidad de los datos. Los modelos basados en el aprendizaje profundo tienen una gran capacidad de aprendizaje y pueden ofrecer resultados con tipos de series temporales diferentes siempre que haya suficientes datos de entrenamiento.

Esta herramienta entrena modelos de predicción de serie temporal mediante el uso de modelos basados en el aprendizaje profundo, como la red completamente conectada (FCN), la memoria a corto y largo plazo (LSTM), InceptionTime, ResNet y ResCNN. Estos modelos admiten series temporales multivariante, en las que el modelo aprende de más de una variable que depende del tiempo para predecir los valores futuros. El modelo entrenado se guarda como un archivo de aprendizaje profundo (.dlpk) y puede servir para predecir valores futuros mediante el uso de la herramienta Predicción con el modelo de serie temporal.

Más información sobre el funcionamiento de los modelos de predicción de serie temporal

Uso

  • Debe instalar el marco de aprendizaje profundo adecuado para Python en ArcGIS Pro.

    Más información sobre cómo instalar un marco de aprendizaje profundo para ArcGIS

  • Esta herramienta acepta datos netCDF creados con las herramientas Crear cubo de espacio-tiempo agregando puntos, Crear cubo de espacio-tiempo a partir de ubicaciones definidas, Crear cubo de espacio-tiempo a partir de capa ráster multidimensional y Subdividir cubo de espacio-tiempo.

  • En comparación con otras herramientas de predicción del conjunto de herramientas Predicción de serie temporal, esta herramienta utiliza modelos de predicción de serie temporal basados en el aprendizaje profundo. Los modelos de aprendizaje profundo tienen una gran capacidad de aprendizaje y resultan adecuados para series temporales que siguen tendencias complejas y cuyo modelo es difícil de crear con funciones matemáticas simples. Sin embargo, requieren un volumen mayor de datos de entrenamiento para aprender estas tendencias complejas y emplean más recursos informáticos durante el entrenamiento y la inferencia. Para utilizar esta herramienta se recomienda una GPU.

  • Para ejecutar esta herramienta con la GPU, configure el entorno Tipo de procesador en GPU. Si tiene más de una GPU, especifique el entorno de Id. de GPU en su lugar.

  • Esta herramienta se puede utilizar para crear modelos de series temporales multivariante y univariante. Si el cubo de espacio-tiempo tiene otras variables relacionadas con la variable de la predicción, pueden incluirse como variables explicativas para mejorar la predicción.

  • La previsión de series temporales univariadas se estima utilizando únicamente el método de un solo periodo, que también es el método predeterminado.

  • La previsión de series temporales multivariadas se puede utilizar usando dos enfoques diferentes: previsión de un solo periodo y previsión de varios periodos. El parámetro Varios periodos se activará cuando se seleccionen múltiples variables de entrenamiento explicativas.

  • Durante el método de un solo periodo, el modelo se puede actualizar con nuevos datos en cada periodo, lo que lo hace adecuado para aplicaciones en tiempo real. Sin embargo, dado que el modelo se actualiza en cada periodo de tiempo, los errores en las predicciones pueden acumularse con el tiempo, lo que lleva a previsiones a largo plazo menos precisas. Cuando se utiliza la previsión de varios periodos, el modelo predice múltiples puntos de datos futuros más allá del periodo de tiempo actual. Por ejemplo, si el objetivo es predecir los próximos 20 periodos de tiempo, el modelo generará 20 predicciones consecutivas a la vez. La previsión de varios periodos permite que el modelo considere una visión más amplia de la serie temporal, capturando tendencias y patrones a largo plazo de manera más efectiva. Dado que el modelo predice múltiples periodos de tiempo hacia adelante, se reduce el potencial de acumulación de errores, lo que lleva a predicciones a largo plazo más precisas. Sin embargo, como el modelo predice varios periodos a la vez, puede que no sea tan ágil para adaptarse a los cambios en los datos en tiempo real. La elección entre estos dos enfoques depende de los requisitos y características específicos de la tarea de predicción de series temporales.

  • El parámetro Longitud de secuencia afecta al resultado de un modelo de predicción de series temporales y se puede definir como el número de periodos de tiempo pasados que se usarán como entrada para predecir el siguiente periodo de tiempo. Si la longitud de la secuencia es n, el modelo tomará los últimos n periodos de tiempo como entrada para predecir el siguiente periodo de tiempo. Este valor del parámetro no puede ser mayor que el número total de periodos de tiempo de entrada restantes después de excluir los periodos de tiempo de validación.

  • En lugar de crear un modelo de predicción independiente en cada ubicación del cubo de espacio-tiempo, esta herramienta entrena un único modelo de predicción global que utiliza datos de entrenamiento de cada ubicación. Este modelo global se utilizará para predecir valores futuros en cada ubicación con la herramienta Predicción con el modelo de serie temporal.

  • El valor del parámetro Entidades de salida se agregará al panel Contenido con una representación en pantalla basada en el periodo de tiempo previsto final.

  • Los casos de uso de ejemplo de esta herramienta incluyen el entrenamiento de un modelo para predecir la demanda de productos al por menor en función de los datos históricos de venta, el contagio de enfermedades o el entrenamiento de modelos para predecir la generación de energía eólica a partir de datos históricos de producción y meteorológicos.

  • La decisión sobre cuántos periodos de tiempo deben excluirse para la validación es importante. Cuantos más periodos de tiempo se excluyen, menos periodos de tiempo quedan para estimar el RMSE de validación. Si se excluyen muy pocos periodos de tiempo, el RMSE de validación se estimará usando una pequeña cantidad de datos y puede llevar a engaño. Excluya los máximos periodos de tiempo posibles mientras mantiene suficientes periodos de tiempo para estimar el RMSE de validación. Mantenga al menos tanto periodos de tiempo para validación como número de periodos de tiempo pretenda pronosticar si el cubo de espacio-tiempo tiene suficientes periodos de tiempo para permitirlo.

  • Para obtener información sobre los requisitos para ejecutar esta herramienta y los problemas que pueden presentarse, consulte Preguntas frecuentes sobre el aprendizaje profundo.

Parámetros

EtiquetaExplicaciónTipo de datos
Datos de serie temporal de entrada

Cubo netCDF que contiene la variable que se utilizará para predecir periodos de tiempo futuros. Este archivo debe tener una extensión .nc y se debe haber creado utilizando las herramientas Crear cubo de espacio-tiempo agregando puntos, Crear cubo de espacio-tiempo a partir de ubicaciones definidas o Crear cubo de espacio-tiempo a partir de capa ráster multidimensional.

File
Modelo de salida

Ubicación de la carpeta de salida en la que se almacenará el modelo entrenado. El modelo entrenado se guardará como un archivo de paquete de aprendizaje profundo (.dlpk).

Folder
Variable de análisis

Variable numérica del dataset que se pronosticará en periodos de tiempo futuros.

String
Longitud de secuencia

El número de periodos de tiempo anteriores que se usarán al entrenar el modelo. Si los datos contienen estacionalidad (ciclos que se repiten), proporcione la longitud correspondiente a una estación.

  • Si el parámetro Varios periodos no está activo, el valor de este parámetro debe ser menor o igual al número total de periodos de tiempo de entrada restantes después de excluir el valor del parámetro Número de periodos de tiempo a excluir para la validación.
  • Si el parámetro Varios periodos no está activo, 1,5 veces el valor de Longitud de secuencia debe ser menor o igual al número total de periodos de tiempo después de excluir el valor del parámetro Número de periodos de tiempo a excluir para la validación.

Long
Variables de entrenamiento explicativas
(Opcional)

Variables independientes de los datos que se utilizarán para entrenar el modelo. Active la casilla de verificación De categorías en el caso de las variables que representen clases o categorías.

Value Table
Máximo de épocas
(Opcional)

Número máximo de épocas para las que se entrenará el modelo. El valor predeterminado es 20.

Long
Número de periodos de tiempo a excluir para validación
(Opcional)

Número de periodos de tiempo que se excluirán para validación. Por ejemplo, cuando se especifica el valor 14, las 14 últimas filas de la trama de datos se usan como datos de validación. El valor predeterminado es el 10% del total de los periodos de tiempo. Idealmente, no debería ser inferior al 5% de los periodos de tiempo totales en el cubo de tiempo de entrada.

  • Si el parámetro Varios periodos no está activo, el valor de este parámetro debe ser inferior al 25% del número total de registros en el cubo de espacio-tiempo de entrada.
  • Si el parámetro Varios periodos no está activo, el valor de este parámetro debe ser menor o igual a la mitad del valor del parámetro Longitud de secuencia.

Long
Tipo de modelo
(Opcional)

Especifica el modelo de arquitectura que se utilizará para entrenar el modelo.

  • InceptionTimeLa arquitectura InceptionTime que se utilizará para entrenar el modelo. Esta es la opción predeterminada.
  • ResNetLa arquitectura ResNet que se utilizará para entrenar el modelo.
  • ResCNNLa arquitectura ResCNN que se utilizará para entrenar el modelo.
  • FCNLa arquitectura FCN que se utilizará para entrenar el modelo.
  • LSTMLa arquitectura LSTM que se utilizará para entrenar el modelo.
  • TimeSeriesTransformerLa arquitectura TimeSeriesTransformer que se utilizará para entrenar el modelo.
String
Tamaño de lote
(Opcional)

Número de muestras que se procesarán a la vez. El valor predeterminado es 64.

Dependiendo de la GPU del ordenador, este número puede ser 8, 16, 32, 64 y así sucesivamente.

Long
Argumentos de modelo
(Opcional)

Argumentos de modelo adicionales que se utilizarán de forma expresa con cada modelo. Estos argumentos pueden utilizarse para ajustar el tamaño y la complejidad del modelo. Consulte Cómo funcionan los modelos de predicción de serie temporal para conocer la arquitectura del modelo, los argumentos de modelo admitidos y sus valores predeterminados.

Value Table
Detener entrenamiento cuando el modelo ya no mejore
(Opcional)

Especifica si el entrenamiento del modelo se detendrá cuando la pérdida de validación no registre ninguna mejora tras cinco épocas consecutivas.

  • Activado: el entrenamiento del modelo se detendrá cuando la pérdida de validación no registre ninguna mejora tras cinco épocas consecutivas. Esta es la opción predeterminada.
  • Desactivado: el entrenamiento del modelo continuará hasta alcanzar el número máximo de épocas.

Boolean
Clase de entidad de salida
(Opcional)

Clase de entidad de salida de todas las ubicaciones en el cubo de espacio-tiempo con valores previstos almacenados como campos. La clase de entidad se creará utilizando la predicción del modelo entrenado con el dataset de validación. La salida muestra la predicción correspondiente al periodo de tiempo final y contiene gráficos emergentes en los que se muestran la predicción de serie temporal del conjunto de validación.

Feature Class
Cubo de salida
(Opcional)

Un cubo de espacio-tiempo de salida (archivo .nc) que contiene los valores del cubo de espacio-tiempo de entrada con los valores previstos para los periodos de tiempo de validación correspondientes reemplazados.

File
Varios periodos
(Opcional)

Especifica si se utilizará un enfoque de un solo periodo o de varios periodos para entrenar el modelo de predicción de series temporales multivariadas.

  • Activado: el entrenamiento del modelo utilizará un enfoque de varios periodos.
  • Desactivado: el entrenamiento del modelo utilizará el enfoque tradicional de un solo periodo. Esta es la opción predeterminada.

Boolean

arcpy.geoai.TrainTimeSeriesForecastingModel(in_cube, out_model, analysis_variable, sequence_length, {explanatory_variables}, {max_epochs}, {validation_timesteps}, {model_type}, {batch_size}, {arguments}, {early_stopping}, {out_features}, {out_cube}, {multistep})
NombreExplicaciónTipo de datos
in_cube

Cubo netCDF que contiene la variable que se utilizará para predecir periodos de tiempo futuros. Este archivo debe tener una extensión .nc y se debe haber creado utilizando las herramientas Crear cubo de espacio-tiempo agregando puntos, Crear cubo de espacio-tiempo a partir de ubicaciones definidas o Crear cubo de espacio-tiempo a partir de capa ráster multidimensional.

File
out_model

Ubicación de la carpeta de salida en la que se almacenará el modelo entrenado. El modelo entrenado se guardará como un archivo de paquete de aprendizaje profundo (.dlpk).

Folder
analysis_variable

Variable numérica del dataset que se pronosticará en periodos de tiempo futuros.

String
sequence_length

El número de periodos de tiempo anteriores que se usarán al entrenar el modelo. Si los datos contienen estacionalidad (ciclos que se repiten), proporcione la longitud correspondiente a una estación.

  • Si el valor del parámetro multistep es False, el valor de este parámetro debe ser menor o igual al número total de periodos de tiempo de entrada restantes después de excluir el valor del parámetro validation_timesteps.
  • Si el valor del parámetro multistep es True, 1,5 veces el valor de sequence_length debe ser menor o igual al número total de periodos de tiempo después de excluir el valor del parámetro validation_timesteps.

Long
explanatory_variables
[explanatory_variables,...]
(Opcional)

Variables independientes de los datos que se utilizarán para entrenar el modelo. Utilice un valor True después de las variables que representen clases o categorías.

Value Table
max_epochs
(Opcional)

Número máximo de épocas para las que se entrenará el modelo. El valor predeterminado es 20.

Long
validation_timesteps
(Opcional)

Número de periodos de tiempo que se excluirán para validación. Por ejemplo, cuando se especifica el valor 14, las 14 últimas filas de la trama de datos se usan como datos de validación. El valor predeterminado es el 10% del total de los periodos de tiempo. Idealmente, no debería ser inferior al 5% de los periodos de tiempo totales en el cubo de tiempo de entrada.

  • Si el parámetro multistep es False, el valor de este parámetro debe ser inferior al 25% del número total de registros en el cubo de espacio-tiempo de entrada.
  • Si el valor del parámetro multistep es True, el valor de este parámetro debe ser menor o igual a la mitad del valor del parámetro sequence_length.

Long
model_type
(Opcional)

Especifica el modelo de arquitectura que se utilizará para entrenar el modelo.

  • InceptionTimeLa arquitectura InceptionTime que se utilizará para entrenar el modelo. Esta es la opción predeterminada.
  • ResNetLa arquitectura ResNet que se utilizará para entrenar el modelo.
  • ResCNNLa arquitectura ResCNN que se utilizará para entrenar el modelo.
  • FCNLa arquitectura FCN que se utilizará para entrenar el modelo.
  • LSTMLa arquitectura LSTM que se utilizará para entrenar el modelo.
  • TimeSeriesTransformerLa arquitectura TimeSeriesTransformer que se utilizará para entrenar el modelo.
String
batch_size
(Opcional)

Número de muestras que se procesarán a la vez. El valor predeterminado es 64.

Dependiendo de la GPU del ordenador, este número puede ser 8, 16, 32, 64 y así sucesivamente.

Long
arguments
[arguments,...]
(Opcional)

Argumentos de modelo adicionales que se utilizarán de forma expresa con cada modelo. Estos argumentos pueden utilizarse para ajustar el tamaño y la complejidad del modelo. Consulte Cómo funcionan los modelos de predicción de serie temporal para conocer la arquitectura del modelo, los argumentos de modelo admitidos y sus valores predeterminados.

Value Table
early_stopping
(Opcional)

Especifica si el entrenamiento del modelo se detendrá cuando la pérdida de validación no registre ninguna mejora tras cinco épocas consecutivas.

  • TRUEEl entrenamiento del modelo se detendrá cuando la pérdida de validación no registre ninguna mejora tras cinco épocas consecutivas. Esta es la opción predeterminada.
  • FALSEEl entrenamiento del modelo continuará hasta alcanzar el número máximo de épocas.
Boolean
out_features
(Opcional)

Clase de entidad de salida de todas las ubicaciones en el cubo de espacio-tiempo con valores previstos almacenados como campos. La clase de entidad se creará utilizando la predicción del modelo entrenado con el dataset de validación. La salida muestra la predicción correspondiente al periodo de tiempo final y contiene gráficos emergentes en los que se muestran la predicción de serie temporal del conjunto de validación.

Feature Class
out_cube
(Opcional)

Un cubo de espacio-tiempo de salida (archivo .nc) que contiene los valores del cubo de espacio-tiempo de entrada con los valores previstos para los periodos de tiempo de validación correspondientes reemplazados.

File
multistep
(Opcional)

Especifica si se utilizará un enfoque de un solo periodo o de varios periodos para entrenar el modelo de predicción de series temporales multivariadas.

  • TRUEEl entrenamiento del modelo utilizará un enfoque de varios periodos.
  • FALSEEl entrenamiento del modelo utilizará el enfoque tradicional de un solo periodo. Esta es la opción predeterminada.
Boolean

Muestra de código

Ejemplo de TrainTimeSeriesForecastingModel (script independiente)

El siguiente script muestra cómo utilizar la función TrainTimeSeriesForecastingModel.

# Name: TrainTimeSeriesForecastingModel.py
# Description: Train a time series model on space-time cube data with
# different AI models.
  
# Import system modules                                                                                                                                                                                                                                                                                                                    
import arcpy
import os

# Set local variables
datapath  = "path_to_data_for_forecasting" 
out_path = "path_to_gdb_for_forecasting"

model_path = os.path.join(out_path, "model")
in_cube = os.path.join(datapath, "test_data")
out_features = os.path.join(out_path, "forecasted_feature.gdb", "forecasted")

# Run TrainTimeSeriesForecastingModel
arcpy.geoai.TrainTimeSeriesForecastingModel(
        in_cube,
        model_path,
        "CONSUMPTION",
        12,
        None,
        20,
        2,
        "InceptionTime",
        64,
        None,
        True,
        out_features
    )

Información de licenciamiento

  • Basic: No
  • Standard: No
  • Advanced: Sí

Temas relacionados