Entorno de desarrollo Xfuzzy 3

Herramienta de adquisición de conocimiento - Xfdm

La herramienta xfdm facilita la identificación de sistemas difusos a partir de datos numéricos empleando distintos algoritmos basados en técnicas de particionamiento matricial (Grid Partitioning) o de agrupamiento de datos (Cluster Partitioning). xfdm puede ejecutarse desde la línea de comandos, o a través de su interfaz gráfica utilizando la opción "Data Mining" del menú Tuning o el icono correspondiente en la ventana principal del entorno.

La ventana principal de xfdm está dividida en dos partes. La parte superior se utiliza para configurar el proceso de identificación: selección del algoritmo empleado, fichero de datos de entrada/salida, número de entradas y salidas, estilo de las entradas y estilo del sistema difuso.

xfdm

Los botones situados en la parte inferior de la ventana permiten, respectivamente, cargar o salvar una configuración determinada, crear el sistema difuso y cerrar la interfaz gráfica de la herramienta.

Algoritmos

xfdm incorpora distintos algoritmos de identificación agrupados en dos categorías:

a) Algoritmos basados en estructura (Structure-oriented algorithms)

    Estos algoritmos realizan una partición fija o variable de los universos de discurso de las variables de entrada y analizan los datos numéricos que describen el comportamiento del sistema para asignar una regla por cada línea del fichero. Posteriormente, resuelven los conflictos que puedan haberse producido y seleccionan las reglas del sistema difuso en función de su grado de activación y de los parámetros de configuración definidos por el usuario. xfdm incluye tres algoritmos de identificación que trabajan con particiones fijas (Wang & Mendel, Nauck y Senhadji) y uno más que contempla un número variable de particiones (Incremental Grid). Adicionalmente, la opción "Flat System" permite generar especificaciones de sistemas difusos con un comportamiento plano que pueden resultar de utilidad como entrada a la herramienta de entrenamiento o a otras facilidades de Xfuzzy.

    Los parámetros y opciones específicas de estos algoritmos son:

    - Nauck:
    • Number of rules: número de reglas a identificar
    • Type of selection: “Best rules” o “Best per class

    - Sendhadji:
    • Number of rules: número de reglas a identificar

    - Incremental Grid:
    • Limit of MFCs, Limit of Rules, Limit of RMSE: la ejecución del algoritmo termina cuando se alcanza uno de estos límites.
    • Learnig option: opción de ajuste activada/no activada.

b) Algoritmos basados en agrupamiento (Cluster-oriented algorithms)

    xfdm incorpora también otros algoritmos para generar un sistema difuso a partir de una serie de datos empleando técnicas de agrupamiento o Clustering. Al agrupar conjuntos de puntos en clusters representados por puntos prototipo, este tipo de técnicas permiten reducir considerablemente la información que debe manejar el algoritmo y dan lugar habitualmente a sistemas difusos con menor número de reglas. La herramienta incluye cuatro algoritmos que utilizan un número fijo de clusters (Hard C-Means, Fuzzy C-Means, Gustafson-Kessel y Gath-Geva), así como dos algoritmos que permiten variar de forma iterativa el número de clusters hasta alcanzar el límite definido por el usuario (Incremental Clustering e ICFA).

    Los parámetros y opciones específicas de estos algoritmos son:

    - Incremental Clustering:
    • Neighborhood radius: radio de vecindad
    • Max. N. of clusters: máximo número de clusters

    - Fixed Clustering:
    • Clustering algorithm: Hard C-Means, Fuzzy C-Means, Gustafson-Kessel, Gath-Geva
    • Number of clusters
    • Limit on iterations
    • Fuzziness index
    • Limit on cluster variation
    • Number of clusters
    • Learning option: activada/no activada

    - ICFA (Incremental Clustering for Function Approximation):
    • Number of clusters
    • Max. Iterations
    • Fuzziness index
    • Limit on cluster variation
    • Activate migration: activada/no activada

Selección de estilos

La interfaz gráfica para la selección de estilo de las variables de entrada del sistema permite elegir, de forma conjunta para todas las variables o independientemente para cada una de ellas, el rango, el número y el tipo de funciones de pertenencia. Las opciones disponibles incluyen funciones de pertenencia (libres o agrupadas en familias) lineales a tramos, gausianas y basadas en splines.

xfdm

Por otra parte, la interfaz gráfica para la selección del estilo del sistema permite elegir el operador de conjunción usado para implementar el conectivo de antecedentes de las reglas, así como el método de defuzzificación utilizado. En este último caso, las posibles alternativas son: Fuzzy Mean, Weighted Fuzzy Mean, Takagi-Sugeno de primer orden y Max Label (para clasificadores difusos).

xfdm

Fichero de configuración

La configuración de un proceso de identificación puede ser guardada en y cargada desde un fichero externo. El contenido de este fichero está formado por las siguientes directivas:

 xfdm_pattern("file_name")
 xfdm_inputs(n_inputs)
 xfdm_outputs(n_outputs)
 xfdm_input(variable|ANY,min,max,N_MFs,style)
 xfdm_system(rulebase_name,out_name,and_op,gen,style)
 xfdm_algorithm(algorithm_name,[value],...)

La directiva xfdm_pattern selecciona el fichero de patrones de entrenamiento utilizado para identificar el sistema. xfdm_inputs y xfdm_outputs especifican el número de entradas y salidas, respectivamente. El estilo de las variables de entrada se define mediante una o más directivas xfdm_input, cuyos parámetros indican el nombre de la variable (‘ANY’ para todas las del sistema), el rango de valores (‘0.0, 0.0’ si se obtiene del fichero de patrones), el número de funciones de pertenencia y el estilo de las mismas (0: Free triangles; 1: Triangular family; 2: Free shouldered triangles; 3: Shouldered-triangular Family; 4: Free gaussians; y 5: B-splines family). La directiva xfdm_system define el estilo del sistema, incluyendo como parámetros el nombre de la base de reglas, el nombre de la variable, el operador usado como conectivo de antecedentes (0: min; 1: prod), la opción de generación del sistema (0: solo identifica la base de reglas; 1: también genera la estructura del sistema) y el método de defuzzificación empleado (0: FuzzyMean; 1: WeightedFuzzyMean, 2: Takagi-Sugeno; y 3: MaxLabel). Por último, el algoritmo de identificación, así como sus posibles parámetros, se define mediante la directiva xfdm_algorithm.

La siguiente figura muestra algunos ejemplos de sistemas difusos para aproximación de funciones generados con xfdm.

xfdm


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

©IMSE-CNM 2018