INFORME TAREA N 4 CLUSTERING

Documentos relacionados
INFORME TAREA N 5 SELF-ORGANIZING MAPS

Sistema de Registro, Derivación y Monitoreo Chile Crece Contigo

Técnicas de Clasificación Supervisada DRA. LETICIA FLORES PULIDO

Análisis de Presupuestos, Herramientas de Análisis Y Si

Guía práctica de estudio 03: Algoritmos

ANALISIS DE CLUSTER CON SPSS: INMACULADA BARRERA

El método simplex 1. 1 Forma estándar y cambios en el modelo. 2 Definiciones. 3 Puntos extremos y soluciones factibles básicas. 4 El método simplex.

MINERIA DE TEXTOS EN R: VIA UN MODELO DE ESPACIO VECTORIAL Y ANÁLISIS CLUSTER. Resumen

F. 6.1 LIBRO MAYOR. Formas de Acceso: Menú Libros Electrónicos/Libro Electrónico 5.0.0/6.1 Libro Mayor.

7ª Práctica. Matlab página 1 EJERCICIO 1. ORDENAR UN VECTOR CON EL MÉTODO DE LA BURBUJA...1

CUENTAS POR COBRAR MOVIMIENTO DE CARTERA

Análisis y síntesis de sistemas digitales combinacionales

PRÁCTICA No. 2 FORMA POLAR DE UN NUMERO COMPLEJO. Otra forma de expresar un número complejo es la forma polar o forma módulo-argumento,

Inicio. Cálculos previos GRASP. Resultados. Fin. Figura 5.1: Diagrama de flujo del algoritmo.

LABORATORIO Nº 8 FILTROS EN EXCEL

UNIVERSIDAD AUTONOMA DEL ESTADO DE MEXICO ESCUELA PREPARATORIA TEXCOCO

Fórmulas Matriciales con OpenOffice.org Calc 3

CAPÍTULO III I. MARCO METODOLÓGICO. Este capítulo hace mención a los aspectos metodológicos de la

Tipos de gráficas y selección según los datos CIENCIA, TECNOLOGIA Y AMBIENTE

Tema 2: Determinantes

Utilización de Funciones en OpenOffice.org Calc

Maribel Martínez y Ginés Ciudad-Real Fichas para mejorar la atención MATRIZ DE LETRAS

Distribuciones de frecuencia

FORMATO DE CONTENIDO DE CURSO PLANEACIÓN DEL CONTENIDO DE CURSO

PRÁCTICA No. 2 FORMA POLAR DE UN NUMERO COMPLEJO. Otra forma de expresar un número complejo es la forma polar o forma módulo-argumento,

Tema1: Introducción a La Estadística 1.1-1

Tutorial MT-a3. Matemática Tutorial Nivel Avanzado. Probabilidad y estadística

Herramientas computacionales para la matemática MATLAB: Análisis de datos.

INFORME PROYECTO CLASIFICADOR DE ACTIVIDADES FÍSICAS

CC3001 Algoritmos y Estructuras de Datos Tarea 1: Algoritmos simples de ordenación

ESPACIOS VECTORIALES

Actividad: Qué proporción del área terrestre de Puerto Rico está urbanizada?

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 12

Curso de Estadística Unidad de Medidas Descriptivas. Lección 1: Medidas de Tendencia Central para Datos Crudos

Computación Aplicada. Universidad de Las Américas. Aula virtual de Computación Aplicada. Módulo de Excel 2013 LIBRO 10

Prácticas de Ecología Curso 3 Práctica 1: Muestreo

Guía práctica de estudio 03: Algoritmos

1.- Sistemas Numéricos 2.- Diferencia entre señal analógica y Digital 3.- Postulados básicos del Algebra de Boole

Análisis Numérico para Ingeniería. Clase Nro. 3

Cursada Segundo Cuatrimestre 2012 Guía de Trabajos Prácticos Nro. 1

NOMBRE: Elaboración: Lic. Mónica Sánchez Medina. Fecha: 10 de junio de 2014

Investigación de Operaciones I. Problemas de Asignación

Solución de sistemas de ecuaciones lineales: Descomposición LU

Matemática. Desafío. GUÍA DE EJERCITACIÓN AVANZADA Cálculo de medidas de dispersión y muestreo GUICEN041MT22-A16V1

De grados tres y cuatro

Algoritmos genéticos

Programación I: Matrices - Arreglos bidimensionales

CORPORACIÓN UNIFICADA NACIONAL DE EDUCACIÓN SUPERIOR FACULTAD DE INGENIERIAS LINEA INFORMÁTICA GUIA TABLAS DINÁMICAS

UNIVERSIDAD PEDAGÓGICA Y TECNOLÓGICA DE COLOMBIA FACULTAD DE CIENCIAS PROGRAMA DE MATEMÁTICAS PLAN DE ESTUDIOS

BOLETÍN 5: Algoritmos II

SOLUCIONARIO Medidas de tendencia central y posición

1.1 CASO DE ESTUDIO: JUEGO DE CRAPS

3. ANÁLISIS DE SEÑALES

Diseño de página y configurar un documento

Para poder comenzar a trabajar con Excel, es necesario considerar los siguientes términos:

Contenido. Introducción Usando di Monitoring como un usuario normal Uso de di Monitoring como un operador de entrada de datos...

PRÁCTICA No. 2 FORMA POLAR Y EXPONENCIAL DE UN NÚMERO COMPLEJO. Otra forma de expresar un número complejo es la forma polar o forma módulo-argumento,

MANUAL DE USO PROGRAMA SENSIBAR

Guía práctica de estudio 06: Lenguaje binario

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

4.1 CONGRUENCIA ENTRE LOS OBJETIVOS DEL PLAN DE ESTUDIOS Y EL PERFIL DE EGRESO CON LAS LGAC:

MÓDULO DE BODEGAS POR EMPRESAS

Estudio Económico y Termoeconómico del disco Stirling EuroDish de la E.S.I. de Sevilla

A. Menéndez Taller CES 15_ Confiabilidad. 15. Confiabilidad

SUBMÓDULO DE DISTRIBUCIÓN DE PLANTA DE PERSONAL

PROYECTO DETECCIÓN DE CLUSTERS INTRODUCCIÓN AL RECONOCIMIENTO DE PATRONES

NOTAS DE ESTADISTICA DESCRIPTIVA CON AYUDA DE EXCEL 2003 y 2007

2.1. Introducción Análisis exploratorio Análisis exploratorio para variables con muchas modalidades

F REGISTRO DE VENTAS E INGRESOS

Fila: Es un conjunto de varias celdas dispuestas en sentido horizontal.

Análisis de imágenes digitales

Qué es una tabla dinámica? Para qué sirve una tabla dinámica?

MULTIPLICACIÓN: LA DIVISIÓN su inversa

Estadística Descriptiva

Representaciones gráficas: Método del Paralelogramo

Campo Magnético en un alambre recto.

UNIVERSIDAD AUTÓNOMA DE BAJA CALIFORNIA SUR. Ingeniería Aplicada TEÓRICA SERIACIÓN 100% DE OPTATIVAS DISCIPLINARIAS

7. Poblar base de datos a partir de documentos XML validados con esquemas XML

Word 2016 Domine las funciones avanzadas del tratamiento de texto de Microsoft

Formulación del problema de la ruta más corta en programación lineal

09/12/2010 Módulo de Proveedores

INTRUCTIVO RENOVACIÓN EN EL REGISTRO DE GENERADORES DE RESIDUOS ESPECIALES NO INDUSTRIALES

PROCEDIMIENTO PARA GENERAR LOS REQUERIMIENTOS DE SELLOS DIGITALES

B A S E S : C O M P E T E N C I A S U D O K U 1 7 A L 2 0 D E O C T U B R E P R E S E N T A C I Ó N G E N E R A L.

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

Figura 1: Esquema de las tablas simplex de inicio y general.

MÓDULO 10 INVENTARIO

Trabajo Práctico 5 Estructura Repetitiva

SISTEMA INTEGRADO DE GESTIÓN OPERATIVA (SIGO) APLICACIÓN ACTAS DE LIBERACIÓN DE RACIONES (MODALIDAD RACIONES) MANUAL DE USUARIO

Accys Contab. Contabilidad General

UNIDAD 9 TIPOS DE DATOS

edición de datos) Área Académica: Informática Tema: Hoja Electrónica (Introducción y Profesora: I.S.C. Francisco Ángeles Ángeles

CURSO DE POSTGRADO. Matemáticas I. N o m b r e C u r s o. Rodrigo Assar (ICBM) ICBM, Facultad de Medicina, U-Chile U N I D A D A C A D É M I C A

Son una clase particular de los algoritmos evolutivos.

Encontrando patrones en los objetos que nos rodean

LIBRO BASICO DE MICROSOFT EXCEL ) Usted puede crear la URL (una carpeta para guardar el libro).

Capítulo. Gráficos. as de gráficos. Programa Nacional de Informática

PASOS PARA CREAR UNA TABLA DINÁMICA UTILIZANDO EL ASISTENTE

MANUAL SYS APOLO ACTIVOS FIJOS

INSTRUCTIVO SISTEMA DE REFERENCIACIÓN COMPARATIVA ONLINE DE INDICADORES DE DESEMPEÑO HOSPITALARIO -QUID-

Transcripción:

Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Eléctrica EL4106 Inteligencia Computacional INFORME TAREA N 4 CLUSTERING Nombre Alumno : Profesor : Profesor Auxiliar : Sebastián Gálvez Javier Ruiz del Solar Daniel Herrmann Felipe Valdés Fecha : 16/06/2014 Santiago, Chile.

Contenido Contenido... II Índice de Figuras y Tablas... III 1. Introducción... 1 2. Desarrollo... 2 2.1. Base de Datos... 2 2.2. K-means... 3 3. Conclusiones... 5 4. Anexos... 6 5. Bibliografía...10

Índice de Figuras y Tablas Figura 1: Clustering K-Means, K=3... 3

Introducción 1. Introducción El objetivo general de esta tarea consiste en identificar agrupaciones de datos similares mediante distintos algoritmos de clustering, analizando su desempeño. Para esto se utilizará la base de datos Wine Data Set, que forma parte del UC Irvine Machine Learning Repository. Esta base de dato contiene 13 características fisicoquímicas medidas para 178 muestras de vino. La base de datos contiene datos de vinos Italianos, producidos en la misma región, pero por 3 productores distintos. Cada productor produce un tipo de vino distinto. Se debe utilizar el algoritmo de clustering k-means para encontrar y caracterizar 3 clusters, luego, realizar lo mismo para el algoritmo fuzzy c-means y comparar los resultados. También se debe analizar la correspondencia entre los productores del vino y clusters al que pertenece la muestra. U. de Chile. FCFM. DIE ~1~

Desarrollo 2. Desarrollo 2.1. Base de Datos El programa generado en el archivo separacion.m contiene una función [entren,clases_entren,prueba,clases_prueba]=separacion(data,clases,pr_r ate), que tiene como objetivo dividir la base de datos en los conjuntos de entrenamiento y prueba, para retornarlos en las matrices respectivas. El argumento data contiene en cada fila las mediciones sobre las distintas características correspondientes a las columnas. El argumento clases es un vector columna que en cada fila contiene el número correspondiente al dígito representado en cada muestra. El argumento pr_rate identifica qué proporción del conjunto total se asignará al conjunto de prueba. Luego de cargar la base de datos de los dígitos trazados en una Tablet utilizando load Base_de_Datos_Tarea4, se puede separar invocando la función de la forma [en en_c pr pr_c]=separacion(trazos,numero,pr_rate); La función de Matlab identifica los conjuntos de datos de distinto productor y extrae aleatoriamente datos para formar el conjunto de prueba. Luego del conjunto original resta estos datos para obtener el conjunto de entrenamiento. El desempeño muestra que la representatividad y la proporción de clases se mantiene en niveles similares como muestra la siguiente tabla. Clase Productor 1 Productor 2 Productor 3 Conjunto [%] [%] [%] Conjunto Original 33.15 39.89 26.97 Conjunto Prueba 33.80 39.44 26.76 Conjunto Entrenamiento 32.71 40.19 27.10 Y se logró que la proporción de conjuntos fuera la pedida. En este caso se logró que el conjunto de prueba fuera 39.89% de los datos. U. de Chile. FCFM. DIE ~2~

Desarrollo 2.2. K-means En el archivo script k-means.m se carga la base de datos utilizada y se separa utilizando la función mencionada en el punto anterior, obtenio conjuntos de entrenamiento y prueba. Luego, se utiliza la función de Matlab [ik, ck] =kmeans(x,k) para separar los datos X en K clusters, almacenando los índices de los clusters asignados en la variable ik, y los centroides que los representan en el espacio de características. Para el caso de generar 3 clusters, se generó un gráfico para visualizar si los clusters obtenidos representaban completamente la partición según los productores, lo cual no se produjo, ya que como se observa en la Figura 1, existen algunos datos que están en un cluster distinto al que debiese corresponder según su producción (se compara según los índices del vector productores de la base de datos). FIGURA 1: CLUSTERING K-MEANS, K=3 U. de Chile. FCFM. DIE ~3~

Desarrollo Posteriormente, se procede a realizar una validación del clustering, utilizando el Índice de Calinski & Harabasz como criterio, el cual se calcula según la siguiente fórmula: Donde N es el número de muestras, y Tr(SB) y Tr(SB) son las trazas de las matrices de dispersión inter- e intra clase. Así, para cada K, se obtiene un índice y se puede calcular el número óptimo de clusters sio el que maximiza el índice CH. Si bien, este criterio no considera la partición a priori conocida (según productores), es un buen método para identificar qué tan compactos son los clusters y qué tan alejados entre ellos están. Sería interesante combinar este indicador junto a uno según un criterio externo, sin embargo por razones de tiempo esto no pudo ser realizado. Finalmente, dado el índice CH para valores de K entre 3 y 8, se obtuvo que el mejor clustering se obtiene para K=3, ya que aumentando el número de clusters el índice disminuye, y considerar un menor número no tiene sentido, ya que se sabe que existen al menos 3. U. de Chile. FCFM. DIE ~4~

Conclusiones 3. Conclusiones El método de Clustering K-means permite dividir las muestras en K grupos (clusters) distintos, y según distintos criterios se puede validar qué tan buena es esta división. En el caso del índice de Calinski & Harabansz, éste considera cuán compactos y separados entre ellos están los clusters, pero no incorpora información sobre una partición de las muestras conocida a priori, por lo que tal vez no es la mejor elección para este caso, pero sí podría ser útil como complemento. Según el criterio utilizado, se observa que conviene realizar un clustering para 3 grupos distintos. U. de Chile. FCFM. DIE ~5~

Anexos 4. Anexos A continuación se muestran los códigos contenidos en cada uno de los archivos entregados en la tarea. separacion.m function [entren, clases_entren, prueba, clases_prueba]= separacion(data,clases,pr_rate) %[entren clases_entren, prueba, clases_prueba]= separacion(data,clases) recibe la matriz 'data' con los datos de %los trazos de los digitos y genera dos conjuntos representativos 'entren' con el (1-pr_rate)*100% de los datos y %'prueba' con el (pr_rate)*100%, y dos conjuntos ('clases_entren' y 'clases_prueba') que llevan información sobre la clase verdadera de cada muestra. N=length(data(:,1)); nfeats=length(data(1,:)); % n de caracteristicas nc=3; % n de clases %Uno los datos con las clases en una sola matriz, para asociar los %índices de las filas a cada clase distinta. newdata=[data,clases]; %ordeno y obtengo los índices de las muestras de cada clase. [aux ind]=sortrows(newdata,14); szs=zeros(1,nc); ind_bord=zeros(1,nc); %debo encontrar los indices de los que efectivamente pertenecen a cada %clase, para guardarlos en una matriz y luego separarlos. for i=1:nc auxaux=(aux(:,nfeats+1)==i); ind_aux=find(auxaux,1,'last'); ind_bord(i)=ind_aux; szs(i)=sum(auxaux(:)); %también calculo cuántos hay por clase. clear auxaux; %Se quiere pr_rate% de los datos por cada clase para el conjunto de prueba pr_szs=round(szs.*pr_rate); ind_bord_pr=cumsum(pr_szs);%esto me sirve para saber cuántos datos seleccionar por cada clase en las iteraciones. sz_prueba=sum(pr_szs); %tamaño total del conjunto de prueba. prueba=zeros(sz_prueba,nfeats+1); r_vec=zeros(sz_prueba,1); %vector que trá los indices seleccionados. %Selección de datos de prueba (20% por cada clase) U. de Chile. FCFM. DIE ~6~

Anexos %primera iteración for i=1:ind_bord_pr(1) r=randi([1 ind_bord(1)]); while(find(r_vec==ind(r))) %selecciono un indice al azar dentro del rango de la clase '0'. % y me aseguro que sea distinto a alguno seleccionado. r=randi([1 ind_bord(1)]); prueba(i,:)=newdata(ind(r),:); %guardo los datos y la clase a la que pertenece el dato elegido en el conjunto de prueba r_vec(i)=ind(r); %guardo el indice para luego borrar ese dato del conjunto y que lo que quede sea el de entrenamiento % repito para el resto de las clases. for j=2:nc for i=(ind_bord_pr(j-1)+1):ind_bord_pr(j) r=randi([(ind_bord(j-1)+1) ind_bord(j)]); while(find(r_vec==ind(r))) r=randi([(ind_bord(j-1)+1) ind_bord(j)]); prueba(i,:)=newdata(ind(r),:); r_vec(i)=ind(r); prueba2 = prueba(randperm(length(prueba(:,1))),:); %desordeno las filas prueba=prueba2; clear prueba2; %extraigo del conjunto original los datos utilizados para el conjunto de prueba entren=newdata; entren(r_vec,:)=[]; sz_entren=length(entren(:,1)); %Verificar representatividad %calculo cantidad de datos por clase en cada conjunto [aux ind]=sortrows(prueba,14); [aux2 ind2]=sortrows(entren,14); ver_szs_prueba=zeros(1,nc); ver_szs_entren=zeros(1,nc); for i=1:nc auxaux=(aux(:,nfeats+1)==i); auxaux2=(aux2(:,nfeats+1)==i); ver_szs_prueba(i)=sum(auxaux(:)); %calculo cuántos datos hay por clase en el conjunto de prueba construido. ver_szs_entren(i)=sum(auxaux2(:)); %y cuántos por clase en el conjunto de entrenamiento clear auxaux; clear auxaux2; U. de Chile. FCFM. DIE ~7~

Anexos %verifico proporciones parecidas por clase en ambos conjuntos. (DESCOMENTAR %PARA VERIFICAR) % repr_total=szs./n % repr_prueba=ver_szs_prueba./sz_prueba % repr_entren=ver_szs_entren./sz_entren %verifico proporción 80/20 de los datos en cada conjunto. % sz_entren/n % sz_prueba/n %Separo datos de información sobre la clase a la que pertenece cada uno. clases_entren = entren(:,14); entren(:,14)=[]; clases_prueba = prueba(:,14); prueba(:,14)=[]; k_means.m load Base_de_Datos_Tarea4 %a=muestras; for i=1:13 a(:,i)=muestras(:,i)./norm(muestras(:,i)); N=length(a(:,1)); Nfeats=length(a(1,:)); [en, en_c, pr, pr_c]=separacion(a,productor,0.4); %***Descomentar para "ver" división en clusters segun sus indices. %K=3; %[ik ck]=kmeans(a,k); % ind=1:n; % plot(ind,ik,'.') % title('indices asociados a K-means') % axis([1 N 0 K+1]) % xlabel('indice de muestra') % ylabel('indice del cluster asociado') U. de Chile. FCFM. DIE ~8~

Anexos %******* VALIDACION******* CH=zeros(1,6); for l=3:8 K=l; [ik ck]=kmeans(a,k); %matriz de particion gamma=zeros(k,n); for i=1:k for j=1:n gamma(i,j)=(ik(j)==i); m=mean(ck); %numero de datos por cluster Nc=zeros(1,K); ind=cell(k,1); for i=1:k Nc(i)=sum(ik==i); %**** Dispersión Intra-cluster **** Sw=zeros(Nfeats,Nfeats); for i=1:k; for j=1:n; Sw=Sw+gamma(i,j)*((a(j,:)-ck(i,:))'*(a(j,:)-ck(i,:))); %**** Dispersión Entre Clusters ***** Sb=zeros(Nfeats,Nfeats); for i=1:k; Sb=Sb+Nc(i)*((ck(i,:)-m)'*(ck(i,:)-m)); %Indice de Calinski y Harabasz CH(l)=(trace(Sb)/(K-1))/(trace(Sw)/(N-K)); [mch,mk]=max(ch); display(sprintf('el mejor clustering se logra para K=%i',mk)) U. de Chile. FCFM. DIE ~9~

Bibliografía 5. Bibliografía Presentación EL4106 - Inteligencia Computacional - ValidacionClustering - Otoño 2014. Centro de documentación de Mathworks, Sección de K-means http://www.mathworks.com/help/stats/kmeans.html U. de Chile. FCFM. DIE ~10~