Ajustar datos de series de tiempo con la app Neural Net Time Series
En este ejemplo se muestra cómo entrenar una red neuronal superficial para que ajuste datos de series de tiempo con la app Neural Net Time Series.
Abra la app Neural Net Time Series con ntstool.
ntstool
Seleccionar la red
Puede utilizar la app Neural Net Time Series para resolver tres tipos diferentes de problemas de series de tiempo.
En el primer tipo de problema de series de tiempo, se desea predecir los valores futuros de una serie de tiempo a partir de los valores anteriores de esa serie de tiempo y de los valores anteriores de una segunda serie de tiempo . Esta forma de predicción se denomina red autorregresiva no lineal con entradas exógenas (externas) o NARX.
En el segundo tipo de problema de series de tiempo solo interviene una serie. Los valores futuros de una serie de tiempo se predicen solo a partir de valores anteriores de esa serie. Esta forma de predicción se denomina red autorregresiva no lineal o NAR.
El tercer problema de series de tiempo es similar al primero, en cuanto a que intervienen dos series; una de entrada (predictores) y otra de salida (respuestas) . En este caso, se desea predecir valores de partir de valores anteriores de , sin conocer los valores anteriores de .
Para este ejemplo, use una red NARX. Haga clic en Select Network > NARX Network.

Seleccionar los datos
La app Neural Net Time Series cuenta con datos de ejemplo para ayudarle a empezar a entrenar una red neuronal.
Para importar datos del proceso de neutralización del pH de ejemplo, seleccione Import > More Example Data Sets > Import pH Neutralization Data Set. Puede usar este conjunto de datos para entrenar una red neuronal para que prediga el pH de una solución utilizando el flujo de soluciones ácidas y alcalinas. Si importa sus propios datos desde un archivo o desde el área de trabajo, debe especificar los predictores y las respuestas.
En el resumen del modelo encontrará información sobre los datos importados. Este conjunto de datos contiene 2001 unidades de tiempo. Los predictores tienen dos características (flujo de solución ácida y alcalina) y las respuestas tienen una única característica (pH de la solución).

Divida los datos en conjuntos de entrenamiento, validación y prueba. Conserve la configuración predeterminada. Los datos se dividen en:
70% para entrenamiento.
15% para validar que la red está generalizando y para detener el entrenamiento antes de que se dé un sobreajuste.
15% para probar de forma independiente la generalización de la red.
Para obtener más información sobre la división de los datos, consulte Dividir datos para realizar un entrenamiento de red neuronal óptimo.
Crear una red
La red es una red NARX estándar prealimentada de dos capas con una función de transferencia sigmoide en la capa oculta y una función de transferencia lineal en la capa de salida. Esta red también utiliza líneas de retardo en pulsación para almacenar los valores anteriores de las secuencias y . Observe que la salida de la red NARX, , se retroalimenta a la entrada de la red (por medio de retardos), dado que es una función de . Sin embargo, para garantizar la eficacia del entrenamiento, este lazo de retroalimentación puede abrirse.
Puesto que la salida verdadera está disponible durante el entrenamiento de la red, puede utilizar la arquitectura de lazo abierto que se muestra a continuación, en la que se utiliza la salida verdadera en lugar de realimentar la salida estimada. Esto presenta dos ventajas. La primera es que la entrada a la red prealimentada es más precisa. La segunda es que la red resultante tiene una arquitectura puramente prealimentada y, por tanto, se puede utilizar un algoritmo más eficiente para el entrenamiento. Esta red se analiza con más detalle en Diseñar redes neuronales de retroalimentación NARX para series de tiempo.
El valor del tamaño de la capa define el número de neuronas ocultas. Conserve el tamaño de capa predeterminado, 10. Cambie el valor de retardo de tiempo a 4. Es conveniente ajustar estas cifras si el rendimiento de entrenamiento de la red es deficiente.
Puede ver la arquitectura de la red en el panel Network.

Entrenar la red
Para entrenar la red, seleccione Train > Train with Levenberg-Marquardt. Este es el algoritmo de entrenamiento predeterminado, y es el mismo que si se hace clic en Train.

Para la mayoría de los problemas, recomendamos Train with Levenberg-Marquardt (trainlm). Para problemas pequeños o con ruido, la regularización bayesiana (trainbr) puede ofrecer una solución mejor, pero tardará más tiempo. Para problemas grandes, se recomienda el gradiente conjugado escalado (trainscg), ya que utiliza cálculos de gradientes que son más eficientes que los cálculos jacobianos que utilizan los otros dos algoritmos.
En el panel Training puede ver el progreso del entrenamiento. El entrenamiento continúa hasta que se cumple uno de los criterios. En este ejemplo, el entrenamiento continúa hasta que el error de validación es mayor o igual que el error de validación previamente más pequeño durante seis iteraciones de validación consecutivas ("Met validation criterion").

Analizar los resultados
En el resumen del modelo se incluye información sobre el algoritmo de entrenamiento y los resultados de entrenamiento de cada conjunto de datos.

Puede continuar analizando los resultados generando gráficas. Para representar la autocorrelación de errores, en la sección Plots, haga clic en Error Autocorrelation. La gráfica de autocorrelación describe cómo se relacionan en el tiempo los errores de predicción. Para que un modelo de predicción sea perfecto, solo debe haber un valor distinto de cero de la función de autocorrelación, y debe producirse cuando el retado es cero (el error cuadrático medio). Esto significaría que los errores de predicción no están correlacionados entre sí (ruido blanco). En caso de que hubiera una correlación significativa entre los errores de predicción, se debería poder mejorar la predicción; por ejemplo, aumentando el número de retardos en las líneas de retardo en pulsación. En este caso, las correlaciones, salvo cuando el retado es cero, se encuentran aproximadamente dentro de los límites de confianza del 95% en torno a cero, por lo que el modelo parece adecuado. Si necesita resultados aún más precisos, puede volver a entrenar la red. Esto modificará los pesos y sesgos iniciales de la red y puede producir una red mejorada después del nuevo entrenamiento.

Consulte la gráfica de correlación cruzada de errores de entrada para obtener una verificación adicional del rendimiento de la red. En la sección Plots, haga clic en Input-Error Correlation. La gráfica de correlación cruzada de errores de entrada muestra cómo se correlacionan los errores con la secuencia de entrada . Para crear un modelo de predicción perfecto, todas las correlaciones deberían ser cero. Si la entrada está correlacionada con el error, se debería poder mejorar la predicción; por ejemplo, aumentando el número de retardos en las líneas de retardo en pulsación. En este caso, la mayoría de las correlaciones se encuentran dentro de los límites de confianza en torno a cero.

En la sección Plots, haga clic en Response. Esta opción muestra las salidas, las respuestas (objetivos) y los errores en función del tiempo. También indica qué puntos de tiempo se seleccionaron para el entrenamiento, la prueba y la validación.

Si no le satisface el rendimiento de la red, puede llevar a cabo una de las operaciones siguientes:
Entrenar la red de nuevo.
Aumentar el número de neuronas ocultas.
Usar un conjunto de datos de entrenamiento más extenso.
Si el rendimiento en el conjunto de entrenamiento es bueno, pero el rendimiento en el conjunto de pruebas es deficiente, esto puede indicar que el modelo está sobreajustando. Reducir el tamaño de la capa y, por tanto, el número de neuronas, puede reducir el sobreajuste.
También puede evaluar el rendimiento de la red en un conjunto de pruebas adicional. Para cargar datos de pruebas adicionales con los que evaluar la red, en la sección Test, haga clic en Test. En Model Summary se muestran los resultados de los datos de prueba adicionales. También se pueden generar gráficas para analizar los resultados de los datos de las pruebas adicionales.
Generar código
Seleccione Generate Code > Generate Simple Training Script para crear código de MATLAB con el fin de reproducir los pasos anteriores de la línea de comandos. Generar código de MATLAB puede ser útil si desea aprender a utilizar la funcionalidad de la línea de comandos de la toolbox para personalizar el proceso de entrenamiento. En Fit Time Series Data Using Command-Line Functions puede investigar los scripts generados con más detalle.

Exportar la red
Puede exportar la red entrenada al área de trabajo o a Simulink®. También puede desplegar la red con las herramientas de MATLAB Compiler™ y otras herramientas de generación de código de MATLAB. Para exportar la red entrenada y los resultados, seleccione Export Model > Export to Workspace.

Consulte también
Neural Net Fitting | Neural Net Time Series | Neural Net Pattern Recognition | Neural Net Clustering | train | preparets | narxnet | closeloop | perform | removedelay