Entorno de desarrollo Xfuzzy 3

Herramienta de predicción de series temporales - Xftsp

La herramienta xftsp genera sistemas de inferencia difusos que implementan modelos autoregresivos para la predicción a corto y largo plazo de series temporales. Para ello aplica una metodología basada en el uso de estimaciones no paramétricas del ruido o varianza residual (para seleccionar el número óptimo de variables de entrada) en combinación con las herramientas de identificación y aprendizaje supervisado de Xfuzzy (para determinar la estructura de los sistemas).

Esta metodología responde a una estrategia de predicción directa, lo que implica la construcción de un autorregresor por cada uno de los términos del horizonte de predicción deseado. En cada caso, el subconjunto óptimo de entradas es seleccionado a priori mediante una estimación de ruido no paramétrica (por ejemplo, el Delta Test). La especificación del sistema difuso correspondiente a cada horizonte de predicción se obtiene entonces mediante un proceso iterativo en el que se realizan sucesivas fases de identificación y ajuste, incrementando el número de etiquetas lingüísticas de las entradas, hasta que el error del sistema entra en el rango estimado previamente.

xftsp se puede ejecutar en modo gráfico, utilizando la opción "Time Series Prediction" del menú Tuning o el icono correspondiente en la ventana principal del entorno, o desde la línea de comandos empleando un archivo de configuración.

La interfaz gráfica de xftsp permite recopilar la información necesaria para ejecutar la herramienta. Dicha información incluye los siguientes items:

- Series name:

Nombre de la serie temporal

- Training file:

Fichero de patrones de entrenamiento

- Test file:

Fichero de patrones de test

- Save directory:

Directorio donde se almacenan los ficheros de salida

- Identification algorithm:

Algoritmo utilizado en la fase de identificación (xfdm)

- Optimization algorithm:

Algoritmo utilizado en la fase de optimización (xfsl)

- NRVE file:

Estimación no paramétrica de la varianza residual para cada horizonte temporal

- Selection file:

Fichero de selección de variables de entrada para cada horizonte temporal (*)

- Tolerance:

Permite definir la estimación empleada para determinar la complejidad del sistema difuso como un valor fijo o que se incrementa al aumentar el horizonte de predicción

- Max exploration:

Número máximo de funciones de pertenencia por entrada

- Generate optimization logs:

Conserva los ficheros de log generados por la ejecución de xfsl en la fase de optimización de todos los sistemas difusos

- Keep pattern files:

Conserva en los directorios 'xftsp-step-*' los ficheros de patrones de entrenamiento (y test) que se utilizan en las fases de identificación y optimización

    (*) En Xfuzzy, los errores suelen normalizarse frente al rango de la serie al cuadrado, por lo que las estimaciones deben normalizarse de acuerdo con esta circunstancia.

La zona central de la interfaz gráfica de xftsp contiene cuatro botones separados por una barra de progreso de ejecución. Los dos botones superiores permiten cargar (Load Configuration) o guardar (Save configuration) un fichero de configuración.

La sintaxis de las distintas directivas que pueden aparecer en el fichero de configuración se muestra a continuación:

 xftsp_series_name("name")
 xftsp_training_file("file_name")
 xftsp_test_file("file_name")
 xftsp_id_algorithm(algorithm_name, value,...)
 xftsp_opt_algorithm(algorithm_name, value,...)
 xftsp_nrve("file_name")
 xftsp_selection("file_name")
 xftsp_option(tolerance, increment)
 xftsp_option(max_exploration, max_num_MFs)    
 xftsp_option(generate_optimization_logs)
 xftsp_option(keep_pattern_files)  

El número de filas del fichero NRVE determina el horizonte temporal que se desea predecir y, por tanto, el número de sistemas difusos que serán creados. Por otra parte, el número de columnas del fichero de selección de entradas fija el tamaño máximo de los autoregresores, esto es, el máximo número de variables de entrada de los sistemas difusos.

Una vez completada la configuración, el botón Generate models permite lanzar el proceso de generación de los sistemas difusos que modelan la serie temporal. La mayoría de los mensajes generados durante la ejecución de la herramienta son mostrados por la salida estándar, es decir, la ventana de comandos desde la que se lanzó Xfuzzy o se ejecutó el comando xfstp. Estos mensajes son también escritos en un fichero de log, denominado 'xftsp-run-results.log', que acumula numerosos comentarios asociados a los distintos pasos de ejecución de la herramienta. Cuando se ejecuta xftsp desde la interfaz gráfica, los mensajes relacionados con la carga y almacenamiento de ficheros de configuración, así como el aviso de fin de ejecución se muestran en la zona inferior de dicha interfaz. Las primeras líneas del fichero de log resultante de una ejecución de xftsp presentan el siguiente aspecto:

    Date: Sat Mar 03 08:39:59 CET 2018
    Series name: estsp07
    Training series file: C:\workspace\Ejemplos\Tools\xftsp\estsp07-training.txt
    Test series file: C:\workspace\Ejemplos\Tools\xftsp\estsp07-training.txt
    NRVE file: C:\workspace\Ejemplos\Tools\xftsp\nrve_10 10
    Selection file: C:\workspace\Ejemplos\Tools\xftsp\selection_10 10 10
    -> Step/horizon 1
    Selected 3 variables: 1-3-8
    Training pattern file (after selection): C:\workspace\Ejemplos\Tools\xftsp\xftsp-step-1\estsp07-
    training.txt-3i1o-1step---1-3-8
    Test pattern file (after selection): C:\workspace\Ejemplos\Tools\xftsp\xftsp-step-1\estsp07-
    test.txt-3i1o-1step---1-3-8
    * Performing identification (with 3 inputs) using Wang & Mendel (Active rule extraction)
    Identification finished, identified 6 rules.
    * Performing optimization (with 3 inputs and 6 rules) using RProp
    Optimization finished
    Trn MSE: 1,4906565335E-03, Tst MSE: 1,6805603718E-03 | Threshold: 1,26220182E-03 (1.15 * 
    1,0975668E-03)
    * Performing identification (with 3 inputs) using Wang & Mendel (Active rule extraction)
    Identification finished, identified 15 rules.
    * Performing optimization (with 3 inputs and 15 rules) using RProp
    Optimization finished
    Trn MSE: 1,2759638533E-03, Tst MSE: 1,5397470334E-03 | Threshold: 1,26220182E-03 (1.15 * 
    1,0975668E-03)
    * Performing identification (with 3 inputs) using Wang & Mendel (Active rule extraction)
    Identification finished, identified 20 rules.
    * Performing optimization (with 3 inputs and 20 rules) using RProp
    Optimization finished
    Trn MSE: 1,2574012085E-03, Tst MSE: 1,5753594329E-03 | Threshold: 1,26220182E-03 (1.15 * 
    1,0975668E-03)
    
    * Results: 
    MF & rules &     Trn. MSE 	 &   Test MSE 	 &   Trn. MxAE 	 &    Test MxAE
    2  &   6	 & 1,4906565335E-03	 & 1,6805603718E-03 & 1,459269682E-01	 & 1,5739203918E-01
    3  &  15	 & 1,2759638533E-03 & 1,5397470334E-03 & 1,1709453877E-01	 & 1,3439983748E-01
    4  &  20	 & 1,2574012085E-03	 & 1,5753594329E-03 & 1,2528942456E-01	 & 1,4363158343E-01
    
    Prediction:  25.098186830201954
    ---------------------------------------------------------------------------------------
    
    -> Step/horizon 2
    

La ejecución de xftsp genera asimismo una serie de directorios denominados 'xftsp-step-*' que contienen los modelos (y ficheros auxiliares) correspondientes a cada horizonte de predicción. También se generan en estos directorios, así como en el directorio principal, otros ficheros con información sobre los sistemas generados.

Algoritmos de identificación

En general, los algoritmos de identificación soportados por la herramienta xfdm pueden ser utilizados por xftsp. Algunos ejemplos son:

 xftsp_id_algorithm(WangMendel)
 xftsp_id_algorithm(ICFA, 0, 20, 2.0, 0.01, 1) 
 xftsp_id_algorithm(CMeans, 0, 10, 2.0, 0.01, 0 ) 
 xftsp_id_algorithm(HardCMeans, 0, 10, 2.0, 0.01, 0 ) 
 xftsp_id_algorithm(GustafsonKessel, 0, 10, 2.0, 0.01, 0 ) 
 xftsp_id_algorithm(GathGeva, 0, 10, 2.0, 0.01, 0 ) 
 xftsp_id_algorithm(IncClustering, 2, 0.1) 

Opciones de optimización

Conseguir una configuración adecuada de un algoritmo de optimización puede ser una tarea lenta y tediosa. A continuación se muestran algunas configuraciones que suelen funcionar bien:

 xftsp_opt_algorithm(Scaled_conjugate_gradient)
 xftsp_opt_algorithm(Rprop, 0.1, 1.5, 0.5)
 xftsp_opt_algorithm(Marquardt, 0.1, 10.0, 0.2)
 xftsp_opt_algorithm(Quickprop, 0.25, 1.25)
 xftsp_opt_algorithm(Backprop_with_momentum, 1.2, 0.2)
 xftsp_opt_algorithm(Simulated_Annealing, 500, 0.5, 100)
 xftsp_opt_algorithm(Blind_search, 5.0)
 xftsp_opt_algorithm(Powell, 0.5, 100)
 xftsp_opt_algorithm(Simplex, 0.1, 1.5, 0.5)

Ejemplo

En el directorio de ejemplos de la distribución de Xfuzzy se puede encontrar el fichero de configuración y los ficheros de datos necesarios para analizar una serie temporal que contiene 875 muestras semanales de temperaturas correspondientes al fenómeno “El Niño”, un patrón climático que consiste en la oscilación de los parámetros meteorológicos del Pacífico ecuatorial cada cierto número de años. Los datos se han dividido en dos subconjuntos: uno de 475 muestras, utilizado como fichero de entrenamiento, y otro con las 400 muestras restantes, empleado como fichero de test. Se ha considerado un tamaño máximo de regresor de 10 y un horizonte de predicción de 50, es decir, los 10 últimos valores conocidos serán utilizados para predecir los 50 valores siguientes.

 xftsp_series_name(estsp07)
 xftsp_training_file("estsp07-training.txt")
 xftsp_test_file("estsp07-test.txt")
 xftsp_opt_algorithm(Rprop, 0.1, 1.5, 0.5)
 xftsp_selection("selection_7")
 xftsp_nrve("nrve_7")
 xftsp_option(tolerance,0)
 xftsp_option(max_exploration,15)
 xftsp_option(generate_optimization_logs)
 xftsp_option(keep_pattern_files)

Para realizar el estudio, lanzar la herramienta desde Xfuzzy cargando el fichero de configuración suministrado o ejecutar el comando:

    $ xftsp estsp07_xftsp.cfg


------------------------------------------------------------------------
F. Montesino, A. Lendasse, A. Barriga
Autoregressive time series prediction by means of fuzzy inference systems 
using nonparametric residual variance estimation
Fuzzy Sets and Systems 2010
DOI: 10.1016/j.fss.2009.10.018

Para comentarios, sugerencias, notificación de bugs, etc. contacte con nosotros en:   xfuzzy-team@imse-cnm.csic.es

©IMSE-CNM 2018