METODOS MATEMATICOS EN CIENCIAS DE LA COMPUTACION 05-06
UNIVERSIDAD DEL PAIS VASCO - EUSKAL HERRIKO UNIBERTSITATEA, UPV-EHU

PRACTICA II: RECONOCIMIENTO DE PATRONES CON WEKA

Tareas a realizar para el Tema 14 (Clustering):

  1. WEKA ofrece distintas posibilidades de aplicar algoritmos de "clustering" (o clasificación no-supervisada) sobre tus datos. Las técnicas de "clustering" se utilizan en bases de datos no supervisadas en las que la variable clase no existe (o no se ha definido). Su objetivo fundamental es el descubrimiento ("class discovery") de dichas clases o estructuras diferenciadas del problema, para posteriormente poder “bautizarlas”: descubrir un nuevo subtipo de tumor, un grupo homogéneo de ciudadanos que responde a una encuesta generalista... Esto es, la base de datos se ha recolectado-diseñado sin que hubiera una variable especial (o clase) a predecir (lo contrario a las bases de datos con las que has trabajado, en las que la clase está perfectamente definida para cada caso). "Todas las variables son iguales..."
    Es común en los sociólogos, tras realizar una encuesta generalista en la que se preguntan diversas cuestiones acerca de una temática (medioambiente, pautas de consumo, preferencias políticas...), crear grupos-"clusters" homogéneos de encuestados, y "bautizarlos-resumirlos"...

    Ten en cuenta que todas las bases de datos que os he ofrecido para WEKA se han confeccionado de forma "supervisada", con el objetivo final de que la última variable de ellas es especial, y su correcta predicción causa interés. En un principio, no tiene interés realizar tareas de "clustering" sobre una base de datos que ya contiene el valor de la variable clase para cada instancia. Esto es, "no hay clases que descubrir, ya están descubiertas y aparecen al final de cada caso..."

    Aunque la base de datos que estás utilizando contiene ya la variable clase para cada instancia, WEKA permite realizar tareas de clustering en las que la variable clase sea omitida y no tome parte en la creación de los ‘clusters’
    : indaga qué opción del interfaz hay que pulsar para que eso se haga así. No interesa, no tiene sentido, que los "clusters" sean creados con dicha variable clase tomando parte en el proceso de "clustering": no debe aparecer la clase en la información-creación de los centroides...

    Podríamos indagar si los "clusters" o grupos creados por medio de técnicas de "clustering" (sin utilizar la clase) se "acercan" a ella, si "descubren las clases verdaderas del problema"... (entiende esto último en un sentido amplio). Hazlo así para 3 valores distintos del número de ‘clusters’ (grupos) en el algoritmo no-supervisado K-Means, realizando también el siguiente estudio para cada valor del número de ‘clusters’:

o  fíjate en la información acerca de los centroides de cada ‘cluster’: en base a lo anterior, no debería aparecer la variable clase en dichos centroides, en su creación...

o   ya que no ha tomado parte en la construcción de los ‘clusters’, observa la distribución de la variable clase a lo largo de éstos. Teniendo esta información en cuenta, sugiere cuál es el número de ‘clusters’ que induce una distribución más ‘pura’-‘idónea’ de las clases de las instancias, el que se "acerca más" a las clases verdaderas y ya conocidas del problema, ya que querríamos que en un ‘cluster’ concreto haya el mayor número posible de instancias de una única clase, y el menor número posible de casos de las demás clases. Informalmente: ¿cómo-cuánto se “acoplan” las clases reales del problema a los clusters descubiertos? De esta manera parecería que estaríamos "descubriendo" las clases verdaderas del problema...
Las salidas que obtendrás serán de este tipo (lo he hecho para el problema "Iris", con dos "clusters"). Personalmente no me parece correcto que muestre la última línea: no creo que haya nada, en un proceso de "clustering", que "bienclasificar" o "malclasificar". Date cuenta que en el "clustering" no existen conceptos como validación cruzada, método H, estimación del porcentaje de bien clasificados... La primera matriz no es una matriz de confusión, pero sí que nos indica la distribución de las clases verdaderas del problema a lo largo de los "clusters" construidos:

0  1 <-- assigned to cluster
2 48 | Iris-setosa
45 5 | Iris-versicolor
50 0 | Iris-virginica

Incorrectly clustered instances : 52.0 34.6666 %