Modelos, Control y Sistema de Visión

Central     Modelos     Control     Visión     Aplicaciones     Mapa del sitio     Publicaciones     Sobre el autor      
Grupos próximos a un entorno
 

                                                    Presentación


Este método de aprendizaje se diferencia de los métodos k-means clusteringfuzzy c-means clustering en que no es necesario definir a priori el número de grupos que se desea, generándose de forma automática el número de centroides basado en los datos observados. En su caso, es necesario definir un radio que determinará el número de grupos representativos, equivalentes a reglas de un sistema borroso.
 
Los pasos fundamentales para crear un sistema borroso por grupos próximos son los siguientes:

[Paso 1].- Se define el primer conjunto de datos como un grupo, y la regla que lo identifica.
                   
[Paso 2].- Se determina la mínima distancia entre el nuevo conjunto de datos y los grupos existentes.

[Paso 3].- Si la mínima distancia está fuera de un rango de proximidad definido por un radio r, se incorpora una nueva regla; si no, se considera que el nuevo grupo es identificable por la regla más próxima existente, por lo que no se incorpora al conjunto de reglas.

[Paso 4].- Se realiza la inferencia aplicando la siguiente ecuación [1]
 
 
donde M representa al número de grupos (reglas borrosas). Los restantes parámetros se describen en el algoritmo que se desarrolla más adelante.

[Paso 5].- Se repite el algoritmo a partir del [Paso 2].

Una representación gráfica del proceso de formación de los grupos se muestra en la siguiente figura

 

El nuevo grupo está fuera del radio definido sobre el grupo más próximo ( r’ > r ), por lo que se incorpora una nueva regla al mecanismo de inferencia

 

El nuevo grupo está dentro del radio

definido sobre el grupo más próximo

( r’ < r ), no se incorpora nueva regla al mecanismo de inferencia

El número de reglas que se genera depende de la distribución de las variables de entrada en el patrón de entrenamiento y del radio r definido. El radio r determina la complejidad del sistema borroso diseñado, mientras menor radio, mayor número de reglas (que identifica a los grupos) y complejidad del sistema.
 
Un algoritmo desarrollado en Matlab se muestra a continuación
 

% Clustering para datos definidos por múltiples entradas,

% una salida

% Genera un conjunto de reglas, basadas en identificación

 

% Matriz de datos a identificar

x=[0 0 0 1 1 1 2 3 4 5 5 5 6 6 6]';

y=[1 2 3 1.5 2 2.5 2 2 2 1.5 2 2.5 1 2 3]';

x1=x+7;

y1=y.*2;

x2=x1+7;

y2=y.*(-2);

x=[x; x1; x2];

y=[y; y1; y2];

 

% El formato de x es x(N,n) donde N número de muestras

% El formato de y es y(N,1)

 

%##############################################

% Definido por el usuario

% Ancho de función de pertenencia gausiana

ac=.5;

% Radio

r= 3;

% Número máximo de clusters permitidos

N_cmax=400;

 

%##############################################

% Tamaño de la matriz de datos de entrada x (en N_ite) y número de

% variables por muestra (n)

[N_ite,n]=size(x);

 

% Se define matriz de posibles clusters

x0_l=zeros(N_cmax,n);

 

% Condiciones iniciales de variables utilizadas

Akl=zeros(N_cmax,1);

Bkl=zeros(N_cmax,1);

d=zeros(N_cmax,1);

 

% Se define el primer cluster

M=1;

x0_l(1,:)=x(1,:);

Akl(1,1)=y(1,1);

Bkl(1,1)=1;

 

% Valores resultantes

y_estc=zeros(N_ite,1);

 

for i=2:N_ite %Iteración sobre matriz de datos

% Se busca la distancia del dato a todos los clusters

for l=1:M

d(l,1)=norm(x(i,:)-x0_l(l,:))

end

 

% Se calcula la menor distancia entre los cluster y el nuevo dato

[c_dist,kl]=min(d(1:M,1));

 

if (c_dist > r)

% Es necesario incorporar nuevo cluster

M=M+1;

x0_l(M,:)=x(i,:);

 

% Se incorpora nuevo dato

Akl(M,1)=y(i,1);

Bkl(M,1)=1;

 

else

 

% Se refuerza el cluster respectivo

Akl(kl,1)=Akl(kl,1)+y(i,1);

Bkl(kl,1)=Bkl(kl,1)+1;

 

end

 

% Se realiza la proyección

for l=1:M

expenl(l,1)=exp(sum((x(i,:)-x0_l(l,:))^2)/ac^2);

 

end

 

% Numerador y denominador

Num=Akl(1:M,1)'*expenl(l,1);

Den=Bkl(1:M,1)'*expenl(l,1);

 

% Resultado generado por el cluster

y_estc(i,1)=Num/Den;

 

end

 

% Se visualiza

clus_x=x0_l(1:M,:);

clus_y=Akl(1:M,:)./Bkl(1:M,:);

plot(x,y,'p');

hold on;

plot(clus_x,clus_y,'s');

 
Los grupos resultantes de su aplicación, para diferentes radios, se muestran en la siguiente figura
 

 

Radio r=1.2, 11 reglas

Radio r= 0.3, 21 reglas

 
Función de grupos próximos a un entorno en Matlab
 
El Toolbox de fuzzy logic incorpora una función que realiza un algoritmo semejante al que se denomina subtractive clustering [2]:

[C] = SUBCLUST(X, RADII)

siendo C los centroides, X la matriz de datos de entrada y RADII (definido entre 0 y 1) es el radio que determina la incorporación del dato al cluster o la creación de uno nuevo.
Un ejemplo de aplicación se muestra en el siguiente programa
 

% Matriz de datos
x=[0 0 0 1 1 1 2 3 4 5 5 5 6 6 6]';
y=[1 2 3 1.5 2 2.5 2 2 2 1.5 2 2.5 1 2 3]';
x1=x+7;
y1=y.*2;
x2=x1+7;
y2=y.*(-2);
x=[x; x1; x2];
y=[y; y1; y2];
X=[x,y];

% Se aplica el algoritmo
[v]=subclust(X,.7);

% Dibuja
figure
plot(X(:,1),X(:,2),'p');
hold on;
plot(v(:,1),v(:,2),'s');

  
 El resultado se muestra en la siguiente figura
 

 

Otras funciones Matlab de utilidad son:

findcluster: Interfaz gráfica de usuario
genfis2: Sistema de inferencia borroso

 

A continuación se muestra un ejemplo de aplicación.

 

Referencias:


[1] Wang. L.X.: "Adaptive Fuzzy systems and Control". Prentice Hall. 1994.

[2] Yager, R.; Filev, D.: "Essentials of Fuzzy Modeling and Control". John Wiley & Sons. 1994.