ESTUDIO MINERIA DE DATOS: WEKA Luis Martin-Cobos Blanco Ingeniería de Telecomunicaciones Universidad Carlos III de Madrid Av. De la Universidad, 30 28911 Leganés (Madrid) 100276565 100276565@alumnos.uc3m.es Alberto Godino Martinez Ingeniería de Telecomunicaciones Universidad Carlos III de Madrid Av. De la Universidad, 30 28911 Leganés (Madrid) 100275692 100275692@alumnos.uc3m.es RESUMEN En el presente artículo se analiza mediante la herramienta WEKA y MATLAB la clasificación en clusters y sus aplicaciones. Palabras Clave K Means, minería de datos, Matlab , cluster. 1. INTRODUCCION Se nos presentan una serie de países, mas de 200, con una inmensa cantidad de atributos diferentes(tasa de mortalidad, tasa de población joven , tasa de crecimiento de la población,…). 2. ESTUDIO DE LAS RELACIONES ENTRE LAS CARACTERISTICAS COMUNES A UNA SERIE DE DATOS DE ENTRADA 2.1 PRIMER ESTUDIO Nuestro primer estudio sobre todos estos datos va a consistir en elegir una serie de países, más de 100 para tener una buena muestra representativa de ellos y algunas características de los mismos: 1 Mortalidad infantil : (Child mortality (0-5 year-olds dying per 1,000 born)) 2 Tasa de alfabetización :(Literacy rate, adult total (% of people ages 15 and above)) 3 Densidad de población: Population density (per square km) 4 Población urbana : Urban population (% of total) 5 Tasa de crecimiento de la población : Population growth (annual %) 6 Tasa de población infantil :Population aged 0-4 years, both sexes (%) Vamos a utilizar la matriz de covarianzas para ver en un grafico de colores, que nos va a proporcionar Matlab, la relación que existe entre esas características. Lo que queremos por lo tanto descubrir son las relaciones directas o inversas entre esas características: por ejemplo si un elevado dato de mortalidad infantil supone por lo general un elevado número de personas analfabetas en ese país, o si un gran crecimiento de la población de un país guarda relación con la proporción de habitantes de ese mismo país en ciudades. . Fig 1. Matriz de covarianzas Vamos a analizar el siguiente grafico. El color rojo indica relaciones directas y los azules inversas; por tanto un crecimiento de la tasa de mortalidad infantil implica un descenso en la tasa de alfabetización (por ser azul, relación inversa); o por ejemplo un incremento de la mortalidad infantil implica un crecimiento en la tasa de crecimiento en el país, etc Todas estas relaciones son lógicas: los países con mayor tasa de mortalidad infantil presentan unos índices de alfabetización menores o los países que suelen tener un crecimiento demográfico grande como por ejemplo países de África o la India suelen ser países mas subdesarrollados y por consiguiente con tasas de mortalidad infantil mayores; demostramos por tanto, que las matrices de covarianzas son una importante herramienta para el análisis de la información. (ANEXO I) 2.2 SEGUNDO ESTUDIO En este segundo estudio vamos a emplear la matriz de correlaciones. A diferencia que la matriz de covarianzas, este nuevo mecanismo nos va a permitir conocer la lo fuerte o débil que es esa relación que habíamos descubierto antes. Fig 2. Matriz de correlaciones Fig 5. Simulación K Means 3 clusters. Los colores marrones y rojos indican un elevado grado de correlación positiva entre las variables, mientras que los colores azules indican un elevado grado de correlación inversa entre esas variables. El mayor grado de correlación directa existe entre una variable y si misma, valores de la diagonal de la matriz. Después podemos observar como por ejemplo la característica 1 y 5 (mortalidad infantil y tasa de crecimiento de la población )guardan un elevado grado de correlación positiva(tono rojizo); es muy lógico, y la tasa de población infantil de un país con la tasa de alfabetización(2 y 6) presentan un elevado grado de correlación negativa, es decir, son inversas. (ANEXO I) En esta figura podemos comprobar como después de 5 iteraciones el algoritmo converge. También, vemos que se han creado 3 clusters: - Cluster 0: pertenecen a él el 28% de los países que estamos evaluando - Cluster 1: pertenecen a él el 45% de los países que estamos evaluando - Cluster 2: pertenecen a él el 26% de los países que estamos evaluando También podemos ver cuál es el valor de cada atributo en el centro de cada cluster (no tener en cuenta el atributo países). En la siguiente imagen vemos la relación entre dos de las características que mejor nos permiten ver la separación en clusters de los datos. En este caso hemos elegido "Child mortality" en el eje X y "Literacy Rate" en el eje Y. 3 SIMULACION CON WEKA 3.1 CLASIFICACION EN CLUSTERS A continuación vamos a pasar a hacer un análisis de los datos usando la herramienta WEKA. Hemos realizado un cluster usando el algoritmo de K Means con 3 clusters y 3 seeds (semillas). Hemos decidido que haya 3 clusters para poder dividir los países en desarrollados, sub desarrollados y en vías de desarrollo. Fig 6. Representacion de los 3 clusters en funcion de dos caracteristicas Como podemos comprobar, los datos se han dividido en 3 clusters: rojo, azul y verde. Evaluando los datos, llegamos a la conclusión que el cluster rojo (cluster 1) sería el conjunto de países desarrollados puesto que tienen una mortalidad infantil baja y nivel de alfabetización alto. Comprobamos que estamos en lo cierto seleccionando algunos puntos pertenecientes a ese cluster y viendo que son países como Australia, España, USA o Portugal. Los países en el cluster azul (cluster 0) corresponderían a países en vías de desarrollo puesto que tienen una mortalidad infantil media-baja y un nivel de alfabetización medio-alto. Vemos que pertenecen a ese cluster países como El salvador o Turquía. Por último vemos que los países pertenecientes al cluster verde (cluster 2) son los países sub desarrollados ya que tienen una mortalidad infantil media-alta y un nivel de alfabetización bajo (Burkina Faso, Iraq). 3.2 ANÁLISIS DE DATOS: CÁLCULO DE OTROS ATRIBUTOS A PARTIR DE LA CLASIFICACIÓN EN CLUSTERS A continuación, vamos a intentar estimar la población de un país que vive en las condiciones del cluster al que pertenece. Por ejemplo, en el caso de EEUU, podríamos intentar estimar cuanta gente vive en las condiciones de lo que sería el punto central del clúster, siendo su clúster el clúster de los países más ricos y desarrollados. Para ello y sabiendo la población de cada país, vamos a basarnos en la distancia desde el centro hasta el extremo del cluster y la distancia desde el centro al país del que se quiere estimar este tipo de población. Calcularemos el % de pertenencia de un país al cluster dividiendo la distancia desde el centro a ese país entre la distancia máxima (distancia del centro al extremo del cluster). Para ello nos creamos un pequeño programa en Matlab que nos calcula el grado de pertenencia de un país así como la población que vive en esas condiciones. 3.3 ANÁLISIS DE DATOS: CONCLUSIONES A PARTIR DEL ANÁLISIS DE LA RELACIÓN ENTRE CARACTERÍSTICAS En este apartado, vamos a intentar concluir cómo han evolucionado los países del mundo a lo largo de los últimos 200 años. 3.3.1 Ingresos frente a esperanza de vida en el mundo Las características que se van a analizar son los ingresos de los países en el eje Y (en escala logarítmica) y la esperanza de vida en el eje X. A continuación vemos alguna de las simulaciones hechas para poder realizar un análisis de ellas y sacar conclusiones. Fig 7. Representacion de los paises año 1800 Vamos a hacer una pequeña simulación con España de ejemplo. Vemos que introduciendo el cluster al que pertenece, las coordenadas en las que se encuentra dentro del cluster y la población (50 millones) nos da como resultado que 37.7 millones de personas viven en España en condiciones altas. Nótese que estas condiciones dependen en gran medida de la existencia únicamente de 3 clusters, y por tanto podrán variar en función de la clasificación realizada(puede ser algo irreal que en la actualidad 37 millones de españoles vivan en lo que se supone condiciones altas). >> poblacion(1,[1.4 95], 50 ) ans = 37.7309 >> (ANEXO II) Fig 8. Representacion de los paises año 1851 Fig 9. Representacion de los paises año 1900 Fig 12. Representacion de los paises año 2012 Fig 10. Representacion de los paises año 1949 Como podemos comprobar, desde 1800 y en rangos de 50 años, cada vez todos los países analizados se han ido desplazando hacia la zona derecha y arriba de la imagen. Esto nos indica que la esperanza de vida de todos los países ha aumentado y que en general, todos los países son más ricos que al inicio. También vemos que al inicio, en 1800, los países estaban muy juntos y a medida que han pasado los años, se han ido separando. Esto nos indica que hay países que se han desarrollado mejor económicamente (por tanto su calidad de vida es mayor repercutiendo positivamente en la esperanza de vida, haciéndose mas grande también) y por tanto quedan más arriba a la derecha de la grafica. Otros no lo han hecho tanto y aunque sí que se desplazan hacia la derecha de la grafica y un poco hacia arriba, no lo hacen de forma tan significativa. También podemos comprobar en la clasificación por colores, que los países que más abajo del grupo se encuentran en general son los pertenecientes a África y en cambio arriba se encuentra parte de América (posiblemente del Norte) en color amarillo, o parte de Asia (probablemente Rusia) en color naranja, rojo posiblemente perteneciente a China y varios verdes pertenecientes a Europa. Aunque no se encuentra en la grafica, pudimos comprobar como por ejemplo, en 1942 (Segunda Guerra Mundial) , la esperanza de vida de Polonia dio un gran bajón y se situó a la izquierda de la grafica. 3.3.2 Evolución económica de los países asiáticos Hemos decidido llevar a cabo un pequeño estudio sobre 3 países asiáticos, en concreto Filipinas, Tailandia y China , ya que la importancia de estos países es cada vez mayor. Vemos como a lo largo de los ultimo años han corregido bastante su situación y por ello cada vez son mas importantes en las economías mundiales. Se espera que China se convierta en una potencia al nivel de los Estados Unidos en unos años. Fig 11. Representacion de los paises año 1981 Vemos que, en el caso de España, vamos avanzando hacia arriba y muy poco hacia la derecha. Esto indica que cada vez había más desempleo y la gente no ganaba más. Entonces, podemos comprobar que durante esos años en España había una época de cambio estructural debido a la muerte de Franco, la creación de la Constitución, la crisis del petróleo, etc. [referencia: http://es.wikipedia.org/wiki/Econom%C3%ADa_de_Espa%C3% B1a#1973_.E2.80.93_1986:_Crisis_y_cambios_estructurales] Fig 13. Evolucion economico de ciertos paises asiaticos 3.3.3 Evolución económica en España desde 1980 hasta 2007(desempleo vs ingresos por persona) Con este ejercicio vamos a intentar analizar crisis económicas que haya habido. Para ello vamos a centrarnos en España y los valores a analizar van a ser el desempleo en gente mayor de 15 años (eje Y) y los ingresos por persona (eje X). Fig 15. Representacion evolucion de España hasta 1986 Este es el estado inicial de la simulación: Vemos que el máximo se encuentra alrededor de 1986, que fue cuando España entro en la Unión Europea. Esto implica probablemente una mejora de nuestra economía y por tanto nosotros propondríamos que España se desplazara hacia abajo y más hacia la derecha (menos desempleo y más ingresos debido a la mejora económica del país) Fig 14. Representacion de los paises año 1981(contexto economico) A medida que vamos avanzando, en general todos los países se van desplazando hacia abajo y a la derecha de la grafica, lo que indica que cada vez hay menos desempleo y la gente gana más dinero. Fig 16. Representacion evolucion de España hasta 1990 Vemos como de nuevo se cumplen nuestras predicciones hasta 1990. A partir de ese momento, vemos como en España se produce una gran mejora económica traducida (final de la crisis) en un descenso del desempleo y mayores ingresos por persona (desplazamiento inferior y lateral hacia la derecha). 4 CONCLUSIÓN Por tanto, podemos concluir que los países en general son cada vez más ricos y que viven más (desplazamiento lateral hacia la derecha y desplazamiento hacia arriba). También se puede concluir que hay países que lo están haciendo bastante más rápido que otros (vemos como países como China se han desplazado mucho mas rápido comparando en 1800 y en 2012). También, con respecto a Clustering en general, vemos como podemos hacer reducción de dimensiones para poder clasificar algo que no podía hacerse al inicio y nos permite a su vez, realizar cálculos mucho mas simplemente pero que se pueden aproximar a los reales. ANEXO: CODIGOS MATLAB Fig 17. Representacion evolucion de España hasta 1994 Vemos como a partir de 1990 y hasta 1994, España sube prácticamente vertical, lo que indica mucho más paro del que había y el mismo ingreso por personas. Por tanto podríamos suponer que hubo alguna crisis económica en España durante esos años. Comprobamos que así es, que durante esos años, en España, hubo una gran crisis económica provocada por la burbuja inmobiliaria de Japón y la crisis del petróleo provocada por la Guerra del Golfo. También, el 13 de Mayo de 1993 se produce el famoso “Jueves Negro” [referencia: http://es.wikipedia.org/wiki/Crisis_econ%C3%B3mica_de_1993_ en_Espa%C3%B1a ]. ANEXO I: load datos_pais length datos_pais %normalizamos los datos por fila %@media contiene la media de cada fila(fila1, caracteristica 1 de los 200 paises) %@varianza contiene la varianza de cada fila %@normalizado normaliza los datos de cada fila para ser justos normalizado = zeros(size(datos_pais,1),size(datos_pais,2)); for i = 1:size(datos_pais,1) media = mean(datos_pais(i,:)); var = mean((datos_pais(i,:) - mean(datos_pais(i,:))) * (datos_pais(i,:) - mean(datos_pais(i,:)))'); normalizado(i,:) = (datos_pais(i,:)-media)./sqrt(var); end %Matriz de covarianzas MatrizCovarianzas = zeros(size(datos_pais,1),size(datos_pais,1)); for i = 1:size(datos_pais,1) for j = 1:size(datos_pais,1) result = mean((datos_pais(i,:) - mean(datos_pais(i,:))) * (datos_pais(j,:) - mean(datos_pais(j,:)))'); MatrizCovarianzas(i,j) = result; end end image(MatrizCovarianzas) figure Fig 18. Representacion evolucion de España hasta 2005 %Ahora calculamos la matriz de covarianzas con los datos normalizados. for i = 1:size(datos_pais,1) for j = 1:size(datos_pais,1) covarianza = mean((normalizado(i,:) mean(normalizado(i,:))) * (normalizado(j,:) mean(normalizado(j,:)))'); distanciaMax = coordenadasBorde(1))^2 coordenadasBorde(2))^2 ); sqrt( (coordenadasCentro(1)+ (coordenadasCentro(2) - MatrizCovarianzas(i,j) = covarianza; distanciaPais = sqrt( coordenadasPaisAEvaluar(1))^2 + coordenadasPaisAEvaluar(2))^2 ); end end %calculo de la matriz de correlaciones MatrizCorrelaciones = zeros(size(datos_pais,1), size(datos_pais,1)); for k = 1:size(datos_pais,1) for l = 1:size(datos_pais,1) var1 = mean((normalizado(k,:) - mean(normalizado(k,:))) * (normalizado(k,:) - mean(normalizado(k,:)))'); var2 = mean((normalizado(l,:) - mean(normalizado(l,:))) * (normalizado(l,:) - mean(normalizado(l,:)))'); MatrizCorrelaciones(k,l) = MatrizCovarianzas(k,l)/sqrt(var1*var2); end end imagesc(MatrizCorrelaciones) ANEXO 2: function [poblacion] = poblacion ( coordenadasPaisAEvaluar, poblacionPaisAEvaluar) cluster, %el punto mas alejado del cluster de los desarrollados (1) = armenia con X = 3.2 e Y = 98 %el punto mas alejado del cluster de los medio desarrollados (0) = egipto X = 3.8 e Y = 48 %el punto mas alejado del cluster de los subdesarrollados (2) = rwanda con X = 8.2 e Y = 50.0 %los centros de los clusters estan en: % cluster 0 x = 3.5621 e Y = 76,2414 % cluster 1 x = 1.9196 e Y = 96.4348 % cluster 2 x = 6.3889 e Y = 45.22 %ejemplo: Las coordenadas de España estan en X = 1.4 e Y = 95 if cluster == 0 coordenadasCentro = [3.5621 76.2414]; coordenadasBorde = [3.8 48]; end if cluster == 1 coordenadasCentro = [1.9196 96.4348]; coordenadasBorde = [3.2 98]; end if cluster == 2 coordenadasCentro = [6.3889 45.22]; coordenadasBorde = [8.2 50]; end (coordenadasCentro(1)(coordenadasCentro(2) - poblacion = poblacionPaisAEvaluar * distanciaPais/distanciaMax; end