Trabajo práctico de introducción a WEKA

Objetivo: familiarizarse con las herramientas básicas que proporciona WEKA para inducción de clasificadores. En la asignatura Laboratorio de Sistemas Inteligentes se realizarán prácticas más completas.

Actividades preliminares

  1. Descargue e instale WEKA según se explica en la página de descarga. Para esta actividad es indiferente utilizar la última versión estable (3.6) o la "versión del libro" (3.4).
  2. Al ejecutar el programa aparece la ventana "GUI chooser", con un menú superior y cuatro botones. Pulse sobre el botón "Explorer" y aparecerá una ventana con título "Weka explorer".
  3. En el directorio creado al descomprimir el fichero descargado se encuentran algunos documentos en pdf. Para esta sencilla práctica no es necesario leerlos por completo:
  4. Como primera comprobación, abra el fichero weather.arff del directorio data/, que contiene 14 ejemplos sobre los días en que se ha podido jugar al tenis (play = yes/no) en función de los valores de cuatro atributos. Observe, seleccionando cada atributo, su tipo (numérico o nominal) y su distribución. En la pestaña "Classify" seleccione el clasificador J48 (versión WEKA de C4.5; se encuentra dentro del grupo "trees"), con la opción "Use training test" y observe, al activar "Start", los resultados que aparecen en el marco de la derecha. Pinchando con el botón derecho sobre el nombre del resultado (en el marco inferior de la izquierda) aparecen opciones, entre ellas la de visualizar el árbol inducido.

Ejercicio

En drugs.tar.gz se encuentran cuatro ficheros con datos sobre enfermos de rinitis alérgica recogidos en cuatro hospitales. Dos de los ficheros están en el formato "arff" (nativo de WEKA) y otros dos en "csv" (valores separados por comas). WEKA puede traducir del segundo al primero, y, en cualquier caso, para esta práctica basta con experimentar con drug1n.arff y utilizar otro como conjunto de prueba.

Se trata de predecir el medicamento más adecuado para un nuevo paciente en función de seis atributos: Age (numérico), Sex (nominal), BP (blood pressure, nominal: alta, baja, normal), Cholesterol (nominal: alto, normal), Na (nivel de sodio en sangre, numérico) y K (nivel de potasio en sangre, numérico). Los datos indican cuál ha sido, de entre cinco medicamentos (drugA, drugB, drugC, drugX, drugY) el mejor para cada uno de los pacientes que forman los conjuntos de entrenamiento.

  1. Sin hacer ningún preprocesamiento, compruebe los resultados (particularmente, precisión y matriz de confusión) para los clasificadores ZeroR y OneR (en el grupo "rules").
  2. Aplique J48 y compare con los resultados anteriores. Utilice para la validación sucesivamente tres métodos: "training set", "cross-validation" y "supplied test set" (drug2n.arff) y observe las diferencias. Anote por lo menos los resultados más significativos: número de ejemplares clasificados correcta e incorrectamente, precisión y matrices de confusión. Visualice el árbol y conserve la ventana para una comparación posterior (si la visualización es defectuosa, pinchando con el botón derecho en la ventana hay algunas opciones).
  3. Aplique el perceptrón multicapa (en el grupo "functions") y compare los resultados con los anteriores, y con los tres métodos de validación. (Dependiendo del ordenador, el proceso puede tardar algún tiempo; espere a que el "weka" de la esquina inferior derecha deje de moverse).
  4. Un problema de C4.5 es que no puede descubrir que combinando adecuadamente ciertos atributos numéricos se llegan a obtener mejores predicciones. En la pestaña "Visualize" se muestra la distribución de clases (medicamentos) en función de parejas de atributos. Si analizamos todos los gráficos vemos dos particularmente interesantes: el de la pareja K/Na (y su simétrico, Na/K). En efecto, se puede observar que drugY es el resultado más frecuente, pero sobre todo para valores altos del cociente Na/K. Parece que este cociente pueda ser un atributo más significativo que Na y K aislados. Bajo la pestaña "Preprocess" existe la opción "Filter"; pinchando en "Choose" aparecen muchos filtros, entre ellos, "filters/unsupervised/attribute/AddExpression", que permite escribir una expresión aritmética para definir un nuevo atributo en función de otros. Como K es el atributo 6 y Na es el 5, escriba en la ventana emergente que sale al pinchar sobre la expresión "a6/a5" y un nombre, por ejemplo, "K_div_Na". "OK" y luego "Apply" y aparece el nuevo atributo con el número 8.
  5. Vuelva a "Classify" para repetir el algoritmo C4.5 (J48). Por defecto, WEKA toma el último atributo como el de la clase a predecir, por lo que, antes de nada, en el desplegable que aparece en el centro del marco izquierdo cambie "K_div_Na" por "Drug".
  6. Vuelva a aplicar C4.5 y compare los resultados con los del punto 2, particularmente, el árbol inducido.

Informe

Entregue un informe de unas 4 a 8 páginas con las conclusiones que haya obtenido.