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 6 (Clasificadores Bayesianos):

  1. Elige una base de datos de entre las que tienes en el siguiente directorio. Aunque podrás cambiar de base de datos de trabajo durante el curso, comprender el problema con el que estás tratando te ayudará, por lo que no se recomienda que cambies a menudo de base de datos de trabajo.
    Acerca de la base de datos escogida, en líneas generales: explicación de la naturaleza del problema que trata, distribución de las clases del problema (número de casos de cada clase), origen del problema, así como cualquier cuestión que se considere interesante acerca de la naturaleza real del problema tratado. Estas cuestiones las puedes encontrar bien en la página web de la colección UCI (ficheros de extensión *.names), o bien en la misma cabecera del fichero de datos WEKA (*.arff).
     
  2. Escoge dentro del interfaz de WEKA un clasificador supervisado que implemente la técnica de naive-Bayes. Dado este clasificador, las variables relevantes (aquellas que tienen “fuerza-capacidad” para discriminar entre las clases del problema), son aquellas que:
     

    Recuerda la teoría impartida para el algoritmo del naive Bayes, y cómo se calculaba la probabilidad de pertenencia para cada clase del problema.
    Comenta cuáles te parecen, según tu criterio e intuición (no vamos a ver ninguna forma “exacta” de realizar esta tarea), las variables predictoras más relevantes para discriminar entre las distintas clases del problema. Únicamente para estas variables consideradas por ti como relevantes, muestra, para cada valor de la clase, su media y varianza en el caso de las variables predictoras continuas (ordinales) y la probabilidad de cada valor de las variables predictoras discretas (nominales).
    La manera más sencilla de hacer este ejercicio es basándote en la salida del modelo naive Bayes aprendido con todos los casos, esto es, el "Classifier Output" de WEKA. Ten en cuenta que en él aparecen, para cada valor de la clase de tu problema, "una foto" (distribuciones de probabilidad condicionadas-número de casos que toma cada valor de la variable-contador, o medias condicionadas, dependiendo de si la variables es nominal u ordinal) de cada variable predictora (pero condicionada sólo para los casos que toman ese valor concreto de la clase; observa las transparencias 8-9 del Tema 6).
    Marca a lápiz, sobre la salida de WEKA para las variables que has considerado como relevantes, algunos valores de "p(Xi=xi|C=c)"; "μic" "σic" ; en los que te has basado para considerarlas como relevantes. Comenta en qué te has basado para considerarlas como relevantes. Para hacer este ejercicio, ten en cuenta cómo realiza la clasificación el naive Bayes. 
     

  3. Utilizando distintas semillas de aleatorización en WEKA, realiza una comparativa estadística mediante un test estadístico (no paramétrico) de los porcentajes de acierto estimados en base a 5 ejecuciones del método H (2/3 del fichero para entrenar, 1/3 para testear), entre:

    ¿Se puede hablar, con una base estadística, de un algoritmo ganador/perdedor? Analiza y comenta los resultados de la comparativa realizada.

    Para realizar la comparativa puedes utilizar el software SPSS disponible en los ordenadores de la Facultad. Aún así hay abundante software libre en la red, de uso muy sencillo, que realiza las mismas comparativas: uno de ellos, WINKS. Una copia de evaluación del software SPSS también la puedes conseguir en su web.

    Ten en cuenta la siguiente explicación intuitiva, en la que se ahondará en la sesión de laboratorio correspondiente, para entender en cualquier comparativa estadística que realices el concepto de significatividad asintótica, clave para entender el grado de similitud/diferencia entre las muestras de números comparadas:

    “la significatividad asintótica de un test estadístico es una probabilidad (valor entre 0 y 1) que viene a reflejar el peso-influencia del azar para explicar las diferencias entre las dos muestras comparadas. En estadística viene a aplicarse clásicamente un umbral del 5% (en probabilidad , 0.05) para argumentar si son las diferencias entre las dos muestras comparadas estadísticamente significativas o no. Partiendo de que la hipótesis nula testada es que ambas muestras parten de una misma distribución (son equivalentes), la idea intuitiva es que una influencia baja del azar viene a denotar una naturaleza estadísticamente distinta de las dos muestras comparadas (hay algo más que azar que explique las diferencias entre las dos muestras...)”

    “la significatividad asintótica de un test estadístico también puede interpretarse como lo que se parecen las dos muestras de datos comparadas". El grado de parecido, similitud, de las dos muestras de números comparadas. Grados de similaridad menores al 5% se consideran como una diferencia estadísticamente significativa (remarcando el nivel concreto de significatividad). Si las dos muestras de números fuesen idénticas, la significatividad asintótica del test sería del 100%.

    La significatividad asintótica también se puede ver como el peso del azar en la explicación de las diferencias que hay entre las dos muestras de números. Esto es, si el peso del azar es bajo (menor del 5%) en la explicación de dichas diferencias: es que hay algo más que azar, las muestras son diferentes por naturaleza...
     

  4. Yendo más allá en la complejidad de las estructuras y relaciones aprendidas por el clasificador naive Bayes (asumiendo que puede haber relaciones de probabilidad entre las variables predictoras del problema). Trabajando con una base de datos escogida por ti, investiga las amplias posibilidades que ofrece el clasificador BayesNet de WEKA para construir clasificadores similares a: naive Bayes aumendato a árbol, clasificador Bayesiano k-dependiente, redes Bayesianas múltiplemente conectadas. Puede ser que no te encuentres con exactamente los mismos clasificadores. Se recomienda trabajar con todas las variables de la base de datos, para poder ver más tipos de relaciones entre ellas. Trabaja, para este ejercicio en concreto, con una base de datos con únicamente dos valores de la variable clase:
       
    •   aprende un clasificador naive Bayes aumentado a árbol (TAN=tree augmented network): muestra su estructura gráfica si no es demasiado grande y se puede comprender (no la enseñes si crees que no se ve nada) (clicka en las propiedades de la ejecución realizada para ver la estructura gráfica aprendida) y enseña la tabla de distribuciones de probabilidad para alguna variable que te interese y que tenga al menos otra variable padre, aparte de la clase del problema. ¿Cuántas variables padre tiene esta variable en la que te has fijado?
      Entiende que la tabla de probabilidad que estás viendo, se refiere a las distribuciones de probabilidad de la variable "hijo" que has seleccionado: pero condicionada a cada configuración de valores distinto que tomen sus padres.
      Tienes que entender lo que son y qué están mostrando esas tablas de probabilidad: indica a lápiz, sobre la salida, qué es cada columna y fila de esa tabla. ¿Te has dado cuenta que las variables numéricas continuas han sido discretizadas en varios intervalos? Fíjate en las tablas de probabilidad. Este tipo de algoritmos no pueden trabajar con variables continuas. 
       
    • !OJO! Me he dado cuenta que hay un error en algunas tablas de probabilidad en WEKA, para algunas bases de datos: se muestra dos veces la variable clase (como si fuesen dos clases distintas, cuando sólo hay una), condicionando los valores de la variable predictora de la que es padre. Esto es un error del software, no tiene sentido: fíjate que los valores de las probabilidades en las filas en las que la clase no es la "misma", es uniforme... (0'5,0'5...) o (0'33,0'33...)¿?¿?¿? La pena es que esto dificulta la comprensión de la tabla de las distribuciones de probabilidad de la variable hija (condicionada), con varias filas que no tienen sentido.
      Bueno, aquí sí que se nota que WEKA es software libre...
       
    • mediante el algoritmo K2, aprende un clasificador Bayesiano 2-dependiente: explica el significado de los parámetros "initAsNaiveBayes" y "maxNumberofParents", que son necesarios para hacer lo que se te pide. Muestra su estructura gráfica (si no es demasiado grande y se puede comprender; no la enseñes si crees que no se ve nada) y enseña la tabla de distribuciones de probabilidad para alguna variable predictora que te interese: indica a lápiz, sobre la salida, qué es cada columna y fila de esa tabla. ¿Cuántas variables padre tiene esta variable en la que te has fijado?
       
    • ¿qué te parece que se hace cuando el algoritmo de búsqueda es "GeneticSearch"? ¿Qué pintan los algoritmos genéticos aquí? ¿Cuál es su función?      
       
    • ¿ves posible aprender estructuras de "Red Bayesiana Múltiplemente Conectada", sin limitar el número de padres que tenga una variable? ¿Cómo? Pon un ejemplo.
       
  5. Con un mismo tipo de comparativa que en la tarea 3, realiza una comparativa estadística entre:
     

    ¿Se puede hablar, con una base estadística, de un algoritmo ganador/perdedor? Analiza y comenta los resultados de la comparativa realizada.

     

  6. Aún así, no siempre una red Bayesiana es utilizada para clasificar, y puede ser que nos interese saber cuáles son una serie de relaciones "fuertes-consistentes" de probabilidad entre las variables de una base de datos: sin que haya una variable "clase" a predecir. Hay muchos softwares (tanto comerciales como académicos-libres) para la construcción a partir de datos de modelos basados en clasificadores Bayesianos.
    Uno de esos softwares es Bayesia. En su portal tiene varias demos-presentaciones del software. Activa la demo sobre "Bayesian network learning", y responde a las siguientes preguntas (los datos con los que trabaja son sobre cáncer de pulmón)(echa un vistazo antes a las preguntas, y luego activa la presentación):