Fuzzy c-means clustering

10,133 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
10,133
On SlideShare
0
From Embeds
0
Number of Embeds
1,868
Actions
Shares
0
Downloads
272
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Fuzzy c-means clustering

  1. 1. Aprendizaje no supervisado: Fuzzy c_means clustering
  2. 2. Función de coste x k : Valores pertenecientes a la matriz de datos (entradas) v i : Valores de la matriz de centroides C i µCi ( xk ): Representa el grado de pertenencia de determinado valor de la matriz de datos al cluster Ci . m: Determina el grado en el cual miembros que pertenecen a determinado cluster afectan el valor de los centroides Objetivo: Obtener vi
  3. 3. Condiciones iniciales % Datos de entrada x=[1 1 1 2 3 4 5 5 5]'; y=[1.5 2 2.5 2 2 2 1.5 2 2.5]'; X=[x, y]; % Centroides iniciales v=[1 2.25; 5 1.25]; % Condiciones iniciales m=2; % Influencia del grado de pertenencia c=2; % Número de centroides
  4. 4. Grado de pertenencia <ul><li>Se calcula el grado de pertenencia de cada valor de la matriz de datos a cada cluster </li></ul>Para m=2, y primer variable:
  5. 5. Grado de pertenencia(Matlab) <ul><li>% Tamaño de matriz de datos </li></ul><ul><li>[L,D]=size(X); </li></ul><ul><li>% Se calcula los grados de pertenencia </li></ul><ul><li>for l=1:L </li></ul><ul><li>for j=1:c </li></ul><ul><li>%Suma de distancias </li></ul><ul><li>suma(j)=sum((X(l,1)-v(j,1))^2+(X(l,2)-v(j,2))^2); </li></ul><ul><li>end </li></ul><ul><li>for j=1:c </li></ul><ul><li>sumaa(j)=0; </li></ul><ul><li>for i=1:c sumaa(j)=sumaa(j)+suma(j)/suma(i); </li></ul><ul><li>end </li></ul><ul><li>U(l,j)=1/sumaa(j) </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>
  6. 6. Resultados Datos y centroides Los grados de pertenencia devueltos son U = 0.9662 0.0338 0.9962 0.0038 0.9965 0.0035 0.9000 0.1000 0.5290 0.4710 0.1471 0.8529 0.0038 0.9962 0.0338 0.9662 0.0887 0.9113 Los cinco primeros valores pertenecen al grupo o centroide 1 y los restantes 4 al centroide 2
  7. 7. Actualización del valor de los centroides x : Valores pertenecientes a la matriz de datos (entradas) µCi ( x ): Representa el grado de pertenencia de los valores de la matriz de datos al cluster Ci .
  8. 8. <ul><li>% Determinar el nuevo valor de los centroides </li></ul><ul><li>for j=1:c </li></ul><ul><li>vn(1)=0; vn(2)=0; </li></ul><ul><li>vd(1)=0; vd(2)=0; </li></ul><ul><li>for l=1:L </li></ul><ul><li>%Primer término del centroide </li></ul><ul><li>vn(1)=vn(1)+U(l,j)^2*X(l,1); </li></ul><ul><li>vd(1)=vd(1)+U(l,j)^2; </li></ul><ul><li>% Segundo término del centroide </li></ul><ul><li>vn(2)=vn(2)+U(l,j)^2*X(l,2); </li></ul><ul><li>vd(2)=vd(2)+U(l,j)^2; </li></ul><ul><li>end </li></ul><ul><li>v(j,1)=vn(1)/vd(1); </li></ul><ul><li>v(j,2)=vn(2)/vd(2); </li></ul><ul><li>end </li></ul>Actualización del valor de los centroides (Matlab)
  9. 9. Resultados Condiciones iniciales Resultado primera iteración
  10. 10. Algoritmo fuzzy c-means Condiciones iniciales : c = Número de clusters z = [ ] Matriz de datos v = [ ] Valores iniciales de los clusters <ul><li>Desde l=1 hasta … criterio de mínima distancia </li></ul><ul><li>{ </li></ul><ul><li>Se calcula la matriz de pertenencias </li></ul><ul><li>Se calcula la matriz de centroides o clusters </li></ul><ul><li>} </li></ul>
  11. 11. Función FCM Fuzzy Logic Toolbox [CENTER, U] = FCM(DATA,N_CLUSTER,OPTIONS) donde: CENTER: Coordenadas de los centroides U: Matriz de pertenencia OPTIONS(1): Exponente de la matriz U (implícito: 2.0) OPTIONS(2): máximo número de iteraciones (implícito: 100) OPTIONS(3): Diferencia entre variaciones de centroides deseado (implícito: 1e-5) OPTIONS(4): mostrar las iteraciones (implícito: 1)
  12. 12. Ejemplo % 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]; [v]=fcm(X,2); % Ejecuta el algoritmo % Dibuja figure plot(X(:,1),X(:,2),'p'); hold on; plot(v(:,1),v(:,2),'s');
  13. 13. Resultado de la ejecución
  14. 14. GUI: findcluster

×