agrupamiento kmeans

Post on 14-Jun-2015

26.898 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Agrupamiento

Cluster

Cluster: Un punto usado para representar un conjunto de valores de entre todos los iniciales que tienen algo en común, y se pueden agrupar en función de determinado rasgo

Concepto

Algoritmos de agrupamiento: Tienen como objetivo devolver al usuario una serie de puntos que en cierto modo representan al resto de puntos iniciales por su posición privilegiada con respecto al total.

Aplicaciones

Compresión de voz e imagenReconocimiento de formas Preprocesamiento de datos Fusión sensorialProcesamiento de imagen.

Aprendizaje no supervisado: No requieren del uso del error entre la salida del sistema y el modelo que se pretende obtener para adaptar los parámetros

Algoritmos de agrupamiento más utilizados

K-means clustering

Fuzzy c-means clustering

Grupos próximos a un entorno (nearest neighborhood clustering)

Redes de aprendizaje competitivo

Mapas autoorganizados

Ejemplo de Fuzzy c-means clustering

>> x=[0 0 0 1 1 1 2 3 4 5 5 5 6 6 6 7 7 7 8 9 10 11 11 11 12 12 12];

>> y=[1 2 3 1.5 2 2.5 2 2 2 1.5 2

2.5 2 4 6 3 4 5 4 4 4 3 4 5 2 4 6]; >> z=[x; y]';>> save datos.dat z –ascii>> fcmdemo

Ejemplo de k-means clustering

• >> datos = load('fcmdata.dat');

• >> [U, v, sumd, D] = kmeans(datos,3);

• >> plot(datos(:,1),datos (:,2),'*')

• >> hold on

• >> plot(v(:,1),v(:,2),'rs‘)

Ejemplo de Grupos próximos

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]=subclust(X,.7);plot(X(:,1),X(:,2),'p');hold on;plot(v(:,1),v(:,2),'rs');

K-means: Matriz de datos

Matriz de datos: Conjunto de valores de entrada

Matriz nxN: n=2 y N=9

Matriz de distancias

Matriz de distancias: Se almacena la distancia de cada punto de la matriz de datos a cada centro de grupo o centroide

Matriz cxN: c=2 y N=9

d1,3

d1,1

d2,9

d2,7

Cálculo de las distancias

k=1..n (n representa el número de variables para representar un punto, plano:n=2)

i=1..c (c representa el número de clusters)

j=1..N (N representa el número de puntos de entrada)

Norma Euclídea:

Matriz de clusters o centroides

n: Número de variables para representar un punto

c: Número de clusters

23.2

42V

Matriz de pertenencias

N: número de puntos de entrada

c: Número de clusters

Se define la pertenencia a uno u otro grupo

D =[ 0 0.5000 1.0000 1.1180 2.0616 3.0414 4.0000 4.0311 4.1231 4.1231 4.0311 4.0000 3.0414 2.0616 1.1180 1.0000 0.5000 0]

Matriz de distancias

Matriz de pertenenciasU =[1 1 1 1 1 0 0 0 0 Grupo 1 0 0 0 0 0 1 1 1 1 ] Grupo 2

AlgoritmoCondiciones iniciales:c = Número de clustersz = [ ] Matriz de datosv = [ ] Valores iniciales de los clusters

Desde l=1 hasta … criterio de mínima distancia {

Se calcula la matriz de distancias U (utiliza matrices z y v) Se calcula la matriz de pertenencias (utiliza la matriz U) Se calcula la matriz de centroides o clusters (utiliza la matriz z y U)

}

Calcula matriz de distancias% Calcula distancias[n, N]=size(z); % Matris de datos[n, c]=size(v); % Matriz de centroides for i=1:c for j=1:N tempp=0; for k=1:n temp(k)=(z(k,j)-v(k,i))^2; tempp=tempp+temp(k); end d(i,j)=sqrt(tempp); endend

Calcula matriz de pertenencias

% Se actualiza la matriz de pertenencias% Ejemplo sólo para dos grupos for j=1:N % muestras if d(1,j)>d(2,j) U(1,j)=0; U(2,j)=1; else U(1,j)=1; U(2,j)=0; endend

Calcula matriz de centroides%Se calcula la media de los valores de las muestrassuma=zeros(n,c);cantidad=zeros(c,1);% Cantidad de valoresfor c=1:2 for j=1:N if U(c,j) == 1 cantidad(c,1)=cantidad(c,1)+1; suma(:,c)=suma(:,c)+z(:,j); end end media(:,c)=suma(:,c)/cantidad(c,1);end% Se actualiza vector de centroidesv=media;

Ejemplo

Condiciones iniciales

Primera iteración Segunda iteración

kmeans (Matlab)

Matlab posee un toolbox de estadística que realiza el algoritmo de k-means clustering. La sintaxis es:

[...] = kmeans(...,'param1',val1,'param2',val2,...)

donde, entre otras, devuelve: a) La matriz de pertenencia b) La matriz de centroides c) La matriz de distancias.

kmeans (II)

Parámetros de entrada:

Criterio para medir la distancia entre la matriz de datos y los centroides (la medida implícita es la norma euclídea).

La forma en que se establecen las condiciones iniciales de los centroides (de forma predeterminada escoge como valores iniciales de los centroides a valores de la matriz de datos).

Número de iteraciones en la búsqueda de los centroides (el valor implícito es 100).

Ejemplo de utilización de kmeans >> z=[x, y]z = 0 1.0000 0 2.0000 0 3.0000 1.0000 1.5000 1.0000 2.0000 1.0000 2.5000 2.0000 2.0000 3.0000 2.0000 4.0000 2.0000 5.0000 1.5000 5.0000 2.0000 5.0000 2.5000 6.0000 1.0000 6.0000 2.0000 6.0000 3.0000

Ejemplo de kmeans (II)

Si se ejecuta la función para dos cluster:>> [U, v, sumd, D]=kmeans(z,2);

Devuelve:Matriz de pertenencia>> U=U'U = 2 2 2 2 2 2 2 1 1 1 1 1 1

1 1Matriz de centroides>> vv = 5.0000 2.0000 0.7143 2.0000

Ejemplo de kmeans (III)

Matriz de distancias>> DD = 26.0000 1.5102 25.0000 0.5102 26.0000 1.5102 16.2500 0.3316 16.0000 0.0816 16.2500 0.3316 9.0000 1.6531 4.0000 5.2245 1.0000 10.7959 0.2500 18.6173 0 18.3673 0.2500 18.6173 2.0000 28.9388 1.0000 27.9388 2.0000 28.9388

Variantes del algoritmo

Se basan en:

Condiciones iniciales de los centroides

Método para determinar la distancia entre las variables y los centroides

Cálculo de la pertenencia de variables a un grupo

Criterio de parada del algoritmo

top related