Entrenar modelo de predicción de serie temporal (GeoAI)

Resumen

Entrena un modelo de predicción de serie temporal basado en aprendizaje profundo con datos de serie temporal de un cubo espacio-tiempo. El modelo entrenado puede utilizarse para predecir los valores de cada ubicación de un cubo espacio-tiempo mediante la herramienta Predecir con modelo de serie temporal.

Los datos de la serie temporal pueden seguir varias tendencias y tener varios niveles de estacionalidad. Los modelos de predicción de serie temporal tradicionales basados en métodos estadísticos se comportan de forma diferente en función de la tendencia y patrones de estacionalidad en los datos. Los modelos basados en aprendizaje profundo tienen una gran capacidad de aprendizaje y pueden proporcionar resultados a través de diferentes tipos de series temporales, siempre que haya suficientes datos de entrenamiento.

Esta herramienta entrena modelos de predicción de serie temporal usando varios modelos basados en aprendizaje profundo, como por ejemplo Red conectada por completo (FCN), Memoria a corto plazo de larga duración (LSTM), InceptionTime, ResNet, y ResCNN. Estos modelos admiten series temporales multivariantes, en las que el modelo aprende de más de una variable dependiente del tiempo para predecir futuros valores. El modelo entrenado se guarda como un archivo de paquete de aprendizaje profundo (.dlpk) y puede utilizarse para predecir futuros valores usando la herramienta Predecir con modelo de serie temporal.

Obtener más información sobre cómo funcionan los Modelos de predicción de serie temporal

Uso

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

    Vea cómo instalar marcos de aprendizaje profundo para ArcGIS

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

  • Comparadas con las herramientas de predicción en el Conjunto de herramientas de predicción de serie temporal, esta herramienta utiliza modelos de predicción de serie temporal basados en aprendizaje profundo. Los modelos de aprendizaje profundo tienen una gran capacidad de aprendizaje y son apropiados para series temporales que siguen tendencias complejas y son difíciles de modelar con funciones matemáticas sencillas. No obstante, requieren un volumen mayor de datos de entrenamiento para aprender dichas tendencias complejas y utilizan más recursos de cálculo para entrenamiento e inferencia. Se recomienda una GPU para utilizar esta herramienta.

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

  • Esta herramienta puede utilizarse para modelar series temporales univariantes o multivariantes. Si el cubo espacio-tiempo tiene otras variables que están relacionadas con la variante que se está prediciendo, pueden incluirse como variables explicativas para mejorar la predicción.

  • Se estima que la predicción de serie temporal univariante solo utiliza el método de un solo periodo, que es también el método predeterminado.

  • La predicción de serie temporal multivariante puede utilizarse con dos métodos diferentes: predicción de un solo periodo y predicción de varios periodos. El parámetro Varios periodos pasará a estar activo cuando se seleccionan varias variables de entrenamiento explicativas.

  • Durante el método de un solo periodo, el modelo puede actualizarse con nuevos datos en cada periodo de tiempo, lo que hace que sea adecuado para aplicaciones en tiempo real. No obstante, ya que el modelo se actualiza en cada periodo de tiempo, los errores en las predicciones pueden acumularse con el tiempo, lo que conduce a predicciones a largo plazo menos precisas. Al utilizar predicción de varios periodos, el modelo predice varios puntos de datos futuros más allá del periodo de tiempo actual. Por ejemplo, si el objetivo es predecir los 20 siguientes periodos de tiempo, el modelo generará 20 predicciones consecutivas a la vez. La predicción de varios periodos permite al modelo considerar una vista más amplia de la serie temporal, capturando tendencias a largo plazo y patrones con más eficacia. Ya que el modelo predice varios periodos de tiempo con antelación, el potencial de acumulación de errores se reduce, lo que conduce a previsiones a largo plazo más precisas. No obstante, ya que el modelo predice varios periodos a la vez, puede que no sea tan ágil para adaptarse a cambios en tiempo real en los datos. La elección entre estos dos métodos depende de los requisitos y características específicos de la tarea de predicción de serie temporal.

  • El parámetro Longitud de secuencia impacta en el resultado de un modelo de predicción de serie temporal y puede definirse como el número de periodos de tiempo transcurridos que se utilizará como entrada para predecir el siguiente periodo de tiempo. Si la longitud de secuencia es n, el modelo tomará los últimos n periodos de tiempo como entrada para predecir el nuevo periodo de tiempo. El 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 construir un modelo de predicción independiente en cada ubicación del cubo 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 mediante la herramienta Predecir con modelo de serie temporal.

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

  • Casos de uso de ejemplo para esta herramienta incluyen entrenamiento de un modelo para predecir la demanda de productos de venta al por menor basado en datos de ventas históricas, entrenamiento de un modelo para predecir la propagación de enfermedades o entrenamiento de un modelo para predecir la generación de energía eólica basado en producción histórica y datos climáticos.

  • La decisión sobre cuántos periodos de tiempo deben excluirse para la validación es importante. Cuantos más periodos de tiempo se excluyan, menos periodos de tiempo habrá 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 el mayor número de periodos de tiempo que sea posible mientras se mantienen suficientes periodos de tiempo para estimar el RMSE de validación. Retenga al menos el mismo número de periodos de tiempo para validación que el número de periodos de tiempo de los que pretende realizar la predicción, si el cubo espacio-tiempo tiene suficientes periodos de tiempo para permitir esto.

  • 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

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

File
Modelo de salida

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

Folder
Variable de análisis

La variable numérica en el dataset que se tendrá previsto para futuros periodos de tiempo.

String
Longitud de secuencia

El número de periodos de tiempo previos que se utilizarán al entrenar el modelo. Si los datos contienen estacionalidad (ciclos de repetición), proporcione la longitud correspondiente a una temporada.

  • Si se desactiva el parámetro Varios periodos, el valor de este parámetro debe ser menor o igual que el 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 de validación.
  • Si el parámetro Varios periodos se desactiva, 1,5 veces el valor Longitud de secuencia debe ser menor o igual que el número total de periodos de tiempo después de excluir el valor del parámetro Número de periodos de tiempo a excluir de validación.

Long
Variables de entrenamiento explicativas
(Opcional)

Variables independientes desde los datos que se utilizarán para entrenar el modelo. Active la casilla de selección Categórico para cualquier variable que represente clases o categorías

Value Table
Máximo de épocas
(Opcional)

El 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 de validación
(Opcional)

El número de periodos de tiempo que se excluirán de la validación. Por ejemplo, si se especifica un valor de 14, las últimas 14 filas en el marco de datos se utilizarán como datos de validación. El valor predeterminado es el 10 por ciento de los periodos de tiempo totales. Idealmente, no debe ser menor del 5 por ciento de los periodos de tiempo totales en el cubo de tiempo de entrada.

  • Si el parámetro Varios periodos se deja sin activar, este valor del parámetro debe ser menor que el 25 por ciento del número total de registros en el cubo espacio-tiempo de entrada.
  • Si se activa el parámetro Varios periodos, este valor del parámetro debe ser menor o igual que la mitad del valor del parámetro Longitud de secuencia.

Long
Tipo de modelo
(Opcional)

Especifica la arquitectura del modelo que se utilizará para entrenar el modelo.

  • InceptionTimeLa arquitectura InceptionTime que se utilizará para entrenar el modelo. Esta es la opción predeterminada.
  • ResNetEspecifica la arquitectura ResNet que se utilizará para entrenar el modelo.
  • ResCNNLa arquitectura ResCNN que se utilizará para entrenar el modelo.
  • FCNEspecifica la 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 el ordenador, este número puede cambiar a 8, 16, 32, 64 y así sucesivamente.

Long
Argumentos de modelo
(Opcional)

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

Value Table
Detener el 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 mejoras después de cinco épocas consecutivas.

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

Boolean
Clase de entidad de salida
(Opcional)

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

Feature Class
Cubo de salida
(Opcional)

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

File
Varios periodos
(Opcional)

Especifica si se va a utilizar el método de un solo periodo o de varios periodos para entrenar el modelo de predicción de serie temporal multivariante.

  • Activado: el entrenamiento del modelo utilizará el método de varios periodos.
  • Desactivado: el entrenamiento del modelo utilizará el método 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

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

File
out_model

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

Folder
analysis_variable

La variable numérica en el dataset que se tendrá previsto para futuros periodos de tiempo.

String
sequence_length

El número de periodos de tiempo previos que se utilizarán al entrenar el modelo. Si los datos contienen estacionalidad (ciclos de repetición), proporcione la longitud correspondiente a una temporada.

  • Si el valor del parámetro multistep es False, el valor de este parámetro debe ser menor o igual que el 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 que el 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 desde los datos que se utilizarán para entrenar el modelo. Utilice un valor True después de cualquier variable que represente clases o categorías.

Value Table
max_epochs
(Opcional)

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

Long
validation_timesteps
(Opcional)

El número de periodos de tiempo que se excluirán de la validación. Por ejemplo, si se especifica un valor de 14, las últimas 14 filas en el marco de datos se utilizarán como datos de validación. El valor predeterminado es el 10 por ciento de los periodos de tiempo totales. Idealmente, no debe ser menor del 5 por ciento de los periodos de tiempo totales en el cubo de tiempo de entrada.

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

Long
model_type
(Opcional)

Especifica la arquitectura del modelo que se utilizará para entrenar el modelo.

  • InceptionTimeLa arquitectura InceptionTime que se utilizará para entrenar el modelo. Esta es la opción predeterminada.
  • ResNetEspecifica la arquitectura ResNet que se utilizará para entrenar el modelo.
  • ResCNNLa arquitectura ResCNN que se utilizará para entrenar el modelo.
  • FCNEspecifica la 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 el ordenador, este número puede cambiar a 8, 16, 32, 64 y así sucesivamente.

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

Argumentos adicionales del modelo que se utilizarán de forma específica para cada modelo. Estos argumentos pueden utilizarse para ajustar la complejidad y tamaño del modelo. Consulte Cómo funcionan los modelos de predicción de serie temporal para comprender la arquitectura del modelo, los argumentos admitidos del modelo 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 mejoras después de cinco épocas consecutivas.

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

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

Feature Class
out_cube
(Opcional)

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

File
multistep
(Opcional)

Especifica si se va a utilizar el método de un solo periodo o de varios periodos para entrenar el modelo de predicción de serie temporal multivariante.

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

Muestra de código

Ejemplo de TrainTimeSeriesForecastingModel (secuencia de comandos independiente)

Este ejemplo 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
    )