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');