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
- 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).
- 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".
- 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:
- Si ha instalado la versión 3.6, lea las páginas 33 a 42 de WekaManual.pdf.
- Si ha instalado la versión 3.4, lea las páginas 2 a 8 de
ExplorerGuide.pdf.
- 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.
- 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").
- 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).
- 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).
- 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.
- 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".
- 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.