k means

Anuncio
Minería de datos
La minería de datos (DM, Data Mining) consiste en la extracción no trivial de información que
reside de manera implícita en los datos. Dicha información era previamente desconocida y podrá
resultar útil para algún proceso. En otras palabras, la minería de datos prepara,
sondea y explora los datos para sacar la información oculta en ellos.
Bajo el nombre de minería de datos se engloba todo un conjunto de técnicas encaminadas a
la extracción de conocimiento procesable, implícito en las bases de datos. Está fuertemente
ligado con la supervisión de procesos industriales ya que resulta muy útil para aprovechar los
datos almacenados en las bases de datos.
Proceso
Un proceso típico de minería de datos consta de los siguientes pasos generales:
Selección del conjunto de datos, tanto en lo que se refiere a las variables objetivo (aquellas que se
quiere predecir, calcular o inferir), como a las variables independientes (las que sirven para hacer
el cálculo o proceso), como posiblemente al muestreo de losregistros disponibles.
Análisis de las propiedades de los datos, en especial los histogramas, diagramas de dispersión, presencia
de valores atípicos y ausencia de datos (valores nulos).
Transformación del conjunto de datos de entrada, se realizará de diversas formas en función del análisis
previo, con el objetivo de prepararlo para aplicar la técnica de minería de datos que mejor se adapte a los
datos y al problema, a este paso también se le conoce como preprocesamiento de los datos.
Seleccionar y aplicar la técnica de minería de datos, se construye el modelo predictivo, de clasificación o
segmentación.
Extracción de conocimiento, mediante una técnica de minería de datos, se obtiene un modelo de
conocimiento, que representa patrones de comportamiento observados en los valores de las variables del
problema o relaciones de asociación entre dichas variables. También pueden usarse varias técnicas a la vez
para generar distintos modelos, aunque generalmente cada técnica obliga a un preprocesado diferente de
los datos.
Interpretación y evaluación de datos, una vez obtenido el modelo, se debe proceder a su validación
comprobando que las conclusiones que arroja son válidas y suficientemente satisfactorias. En el caso de
haber obtenido varios modelos mediante el uso de distintas técnicas, se deben comparar los modelos en
busca de aquel que se ajuste mejor al problema. Si ninguno de los modelos alcanza los resultados
esperados, debe alterarse alguno de los pasos anteriores para generar nuevos modelos.
Técnicas de minería de datos
Agrupamiento o Clustering.- Es un procedimiento de agrupación de una serie de vectores según criterios
habitualmente de distancia; se tratará de disponer los vectores de entrada de forma que estén más cercanos
aquellos que tengan características comunes. Ejemplos:
Algoritmo K-means.
El algoritmo de k-means clustering es el referente principal entre los diversos métodos
para seleccionar grupos representativos entre los datos.
Existen una serie matrices que constituyen el fundamento para la implementación de
este tipo de algoritmo, entre ellas:
- Matriz de datos
- Matriz de distancias
- Matriz de centroides
- Matriz de pertenencias
Sus diferentes variantes se basan fundamentalmente en la forma de medir distancias
entre los datos y los grupos, el criterio para definir la pertenencia de los datos a cada
grupo y la forma de actualizar dichos grupos.
Se describe a continuación el fundamento de este algoritmo, así como la función
equivalente en Matlab.
Matriz de datos
En esta matriz se almacena el conjunto de muestras de las que se pretende obtener
los puntos significativos que representen grupos a clasificar.
Esta matriz puede representarse por la siguiente estructura:
siendo su orden de nxN, donde N es el número de observaciones o muestras de que se
dispone y n son los rasgos que caracterizan a cada muestra, adquirida del sistema al
que representa. La siguiente figura representa el caso de n=2 y N=7, con dos clusters
o centros de grupos representativos.
Por ejemplo, una matriz z definida por:
>> z=[1 1 1 2 3 4 5 5 5; 1.5 2 2.5 2 2 2 1.5 2 2.5]
>> plot(z(1,:),z(2,:),'vb')
Se representa en la siguiente figura
Matriz de distancias
La matriz de distancias es donde se almacena la distancia de cada punto de la matriz
de datos a cada centro de grupo o centroide, cuyo tamaño es cxN, siendo c el número
de clusters.
donde cada componente dij representa la distancia de la muestra j ( j=1:N) al
centroide i (i=1:c). El significado de cada componente de la matriz (2) se representa
en la siguiente figura
Uno de los elementos que caracterizan a este algoritmo de clustering es que se debe
definir el número de clusters que se desean obtener. Supóngase que se desea obtener
dos clusters de la matriz de dato:
>> z=[1 1 1 2 3 4 5 5 5; 1.5 2 2.5 2 2 2 1.5 2 2.5]
Las condiciones iniciales de los clusters se considera que son el primer y último valor,
ello es:
>> v=[1 5; 1.5 2.5]
Si se utiliza la distancia euclídea como medida de distancias entre cada elemento de la
muestra y los centroides, entonces se cumple
Se ejecuta el siguiente programa que calcula la matriz de distancias
>> z=[1 1 1 2 3 4 5 5 5; 1.5 2 2.5 2 2 2 1.5 2 2.5]
>> v=[1 5; 1.5 2.5]
% Calcula distancias utilizando la norma euclidiana
[n, N]=size(z); % Matriz 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);
end
end
devolviendo la matriz de distancias
>> d
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
Además de la norma euclidiana, existen otras formas de medir distancias entre la
matriz de datos y la matriz de centroides
Matriz de clusters o centroides
Los centroides que se generen durante la evolución del algoritmo de clustering van
siendo almacenados en la matriz v(nxc), siendo n el número de rasgos que
caracterizan a cada cluster y c el número de grupos que deben definirse antes de
aplicar el algoritmo. La matriz de centroides se representa por
Esta matriz se actualiza continuamente durante la evolución del algoritmo, para ello
debe previamente definirse a que grupo pertenece cada muestra. Si se utiliza como
criterio la mínima distancia para actualizar el valor de los centroides, entonces se debe
definir la siguiente matriz
Matriz de pertenencias
En la matriz de pertenencias se define la pertenencia a uno u otro grupo (normalmente
normalizado en el intervalo [0, 1]). Esta matriz define la eficiencia del algoritmo de
clustering, pues será la base para actualizar los valores de los centroides. Si se define
la matriz de pertenencias por
continuando con el algoritmo ejemplo de Matlab, si se considera como criterio la
mínima distancia para dos centroides y se aplica el mismo en la matriz de
distancias d previamente calculada, se puede implementar el siguiente programa
% Se actualiza la matriz de pertenencias
% Ejemplo sólo para dos grupos
for j=1:N % Número de muestras
% Se aplica el criterio de mínima distancia
if d(1,j)>d(2,j)
u(1,j)=0; u(2,j)=1;
else
u(1,j)=1; u(2,j)=0;
end
end
Lo cual devuelve, para una matriz de distancias
>> d
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
Una matriz de pertenencias
>> u
u=
1 1 1 1 1 0 0 0 0 Grupo 1
0 0 0 0 0 1 1 1 1 Grupo 2
El próximo paso del algoritmo es recalcular el valor de la matriz que representa los
centros de grupo v(11). Para ello se calcula la media del valor de las muestras que
pertenecen a cada grupo y esta media genera la nueva matriz de centroides, como
realiza la siguiente sección de programa
%Se calcula la media de los valores de las muestras
suma=zeros(n,c);
cantidad=zeros(c,1);
% Cantidad de valores
for 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 el vector de centroides
v=media;
de lo cual resulta el nuevo valor de la matriz de los centroides, que aplicado sobre las
condiciones iniciales es
>> v
v=
1.6000 4.7500
2.0000 2.0000
Considerando lo anterior, el algoritmo de k-means clustering puede resumirse por los
siguientes pasos:
1.- Condiciones iniciales: Definir el número de centroides c y los centroides iniciales
(v), basado en la matriz de datos (z).
Desde i=1 hasta criterio de parada
{
2.- Calcular la matriz de distancias (d)
3.- Calcular la matriz de pertenencia (u)
4.- Actualizar la matriz de centroides (v) }
Como se puede apreciar en este algoritmo, existen tres factores de primordial
importancia, algunos de ellos con criterios de selección heurística:
1.- Definir cual es el número de clusters.
2.- Seleccionar el criterio para medir distancias.
3.- Definir el criterio para determinar el grado de pertenencia a cada grupo.
Función kmeans de Matlab
Matlab posee, en el toolbox de estadística, una función que realiza el algoritmo de kmeans clustering. La sintaxis es (ejecutar; >>help kmeans):
[...] = kmeans(...,'param1',val1,'param2',val2,...)
donde, entre otras variables, devuelve:
a) La matriz de pertenencia
b) La matriz de centroides
c) La matriz de distancias.
Con respecto a los parámetros de entrada, se puede definir:
a) El criterio para medir la distancia entre la matriz de datos y los centroides (la
medida implícita es la norma euclídea).
b) La forma en que se establecen las condiciones iniciales de los centroides (de forma
predeterminada escoge como valores iniciales a muestras pertenecientes a la matriz de
datos).
c) Número de iteraciones en la búsqueda de los centroides (el valor implícito es 100).
% Como ejemplo, supóngase la siguiente matriz de datos
>>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]';
%Para obtener 5 centroides se aplica:
>> [U, v, sumd, D]=kmeans(z,5);
%Lo cual devuelve una matriz de pertenencias
>> U=U'
U=
111111144444422332335555555
%basado en una matriz de distancias
>>D=D'
D=
Columns 1 through 11
1.5102 0.5102 1.5102 0.3316 0.0816 0.3316 1.6531 5.2245 10.7959 18.6173
18.3673
56.1111 49.1111 44.1111 40.6944 37.4444 34.6944 27.7778 20.1111 14.4444
14.0278 10.7778
67.6250 63.1250 60.6250 50.6250 48.6250 47.1250 36.1250 25.6250 17.1250
12.6250 10.6250
22.7778 21.7778 22.7778 13.6944 13.4444 13.6944 7.1111 2.7778 0.4444 0.3611
0.1111
136.3673 131.3673 128.3673 112.0459 109.7959 108.0459 90.2245 72.6531
57.0816 45.7602 43.5102
Columns 12 through 22
18.6173 27.9388 31.9388 43.9388 40.5102 43.5102 48.5102 57.0816 72.6531
90.2245 106.7959
8.0278 9.1111 1.1111 1.1111 4.4444 1.4444 0.4444 3.7778 8.1111 14.4444 25.7778
9.1250 6.1250 3.1250 8.1250 1.1250 0.6250 2.1250 0.1250 1.6250 5.1250 11.1250
0.3611 1.7778 5.7778 17.7778 6.4444 9.4444 14.4444 15.1111 22.7778 32.4444
41.1111
41.7602 31.9388 27.9388 31.9388 19.3673 18.3673 19.3673 10.7959 5.2245 1.6531
1.0816
Columns 23 through 27
109.7959 114.7959 127.3673 131.3673 143.3673
22.7778 21.7778 41.1111 33.1111 33.1111
10.6250 12.1250 21.1250 18.1250 23.1250
44.1111 49.1111 53.7778 57.7778 69.7778
0.0816 1.0816 4.5102 0.5102 4.5102
%Siendo la matriz de centroides:
>> v
v=
0.7143
6.3333
7.7500
4.6667
11.2857
2.0000
5.0000
3.7500
2.0000
4.0000
%Lo cual puede visualizarse en la siguiente figura
>> plot(z(:,1),z(:,2),'v');
>> hold on
>> plot(v(:,1),v(:,2),'sr');
Descargar