Modelos, Control y Sistema de Visión

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

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.
                  
                Presentación


[Paso 2].- Se determina (cuando exista un conjunto de reglas), el grupo de variables que constituyen la parte precedente de las reglas más próximo al nuevo conjunto de datos.

[Paso 3].- Si el nuevo grupo 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 que definen dos variables de entrada

% Descripción: Genera el valor estimado para pares (x,y)

% 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];

%##############################################
% Definido por el usuario
% Ancho de función de pertenencia gausiana
ac=.3;
% Radio
r= 3;
% Número máximo de clusters permitidos
N_cmax=400;
%##############################################

% Se define matriz de posibles clusters
x0_l=zeros(N_cmax,1);

% Tamaño de la matriz de datos de entrada x ( en N_ite)
[N_ite,m]=size(x);

% Se define la matriz Akl (ver ecuación anterior)
Akl=zeros(N_cmax,1);
% Se define la matriz Bkl (ver ecuación anterior)
Bkl=zeros(N_cmax,1);

% Se define el primer cluster
M=1;
x0_l(1)=x(1);
A(1)=y(1);
B(1)=1;

%Matriz de datos de entrada que se repetirán
x_l=zeros(N_cmax,1);

% Valores resultantes
y_estc=zeros(N_ite,1);

for i=2:N_ite
% Se busca distancia del dato a todos los clusters
for l=1:M
x_l(l)=x(i);
end

% Se calcula menor distancia entre los cluster y su posición
[c_dist,kl]=min(x_l(1:M)-x0_l(1:M));

if (c_dist > r)
% Es necesario incorporar nuevo cluster
M=M+1;
x0_l(M)=x(i);

% Se dejan los restantes como están
Akl(1:M)=Akl(1:M);
Bkl(1:M)=Bkl(1:M);

% Se incorpora nuevo dato
Akl(M)=y(i);
Bkl(M)=1;

else
% Se incorpora el dato al cluster respectivo
% Se dejan los restantes como están
Akl(1:M)=Akl(1:M);
Bkl(1:M)=Bkl(1:M);

% Excepto el que se refuerza
Akl(kl)=Akl(kl)+y(i);
Bkl(kl)=Bkl(kl)+1;

end

% Se realiza la proyección
dif=x_l-x0_l;

% Función de pertenencias
M_f_l=exp(-dif.^2/ac^2);

% Numerador y denominador
Num=sum(Akl(1:M)'*M_f_l(1:M));
Den=sum(Bkl(1:M)'*M_f_l(1:M));

% Resultado generado por el cluster
y_estc(i)=Num/Den;
end

% Se dibuja
% Representa los clusters generados por
% la identificación en x e y
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

 

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.