Weka es una herramienta que nuclea varias decenas de algoritmos y técnicas de data mining. Fue desarrollada por numerosos investigadores de la Universidad de Waikato (Nueva Zelanda), bajo la dirección de Ian Witten (a quien tuvimos el placer de conocer en persona). Por ser libre y multiplataforma, Weka es una gran plataforma para introducir a personas de distintos campos y niveles de expertise a la minería de datos.
Para conservar la brevedad y puntualidad de este tutorial, asumiremos que el lector tiene conocimientos básicos sobre la herramienta. Existen numerosos tutoriales disponibles en el sitio oficial de Weka (http://www.cs.waikato.ac.nz/ml/weka/index_documentation.html), para quienes deseen introducirse en el uso de esta herramienta.
Para este tutorial se usará un dataset de ejemplo que incluye Weka, llamado ReutersGrain. Este está dividido en dos partes: set de entrenamiento y set de prueba.
Como primer paso, debemos ingresar al Weka Explorer.
Luego, verán el explorer vacío, por lo tanto, deben abrir el archivo de prueba.
Esto les dará acceso al diálogo, donde deberán ubicar la carpeta de instalación de Weka, donde se hallan los datasets y seleccionar el que se encuentra resaltado en la imagen. Elegimos la porción del dataset que esta destinada a training, ya se será la parte sometida a tales efectos para crear y entrenar nuestro clasificador.
3 Stage:
Puede que al seleccionar el cuadro de diálogo no se actualice, si lo cierran podrán confirman que han seleccionado el dataset, porque lo verán cargado en el explorer. Al seleccionar el atributo “class” del dataset, se visualizará cuantas instancias hay de cada clase. Verán que contiene 1451 instancias de la clase “0” y 103 de la clase “1”, dando un total de 1554 instancias.
Para realizar la clasificación de documentos, debemos ir a la sección “Classify” del explorer. Allí seleccionaremos el test set:
Seleccionaremos el test set para este dataset.
6 Stage:
Luego tendremos que elegir un clasificador para nuestro modelo. A tales efectos, al pulsar “choose”.
7 Stage:
Para nuestra primer prueba, usaremos un Árbol de Decisión, llamado J48, que es una implementación Java de su contraparte C4.5. A tales efectos, tendremos que armar un clasificador “filtrado”. Este clasificador combina cualquier técnica disponible para el análisis de datos en Weka, con los filtros disponibles. El clasificador, primero aplicará el filtro al set de datos para luego analizarlos con la técnica seleccionada.
8 Stage:
Si el FilteredClassifier fue seleccionado correctamente lo vemos en el campo aledaño al botón “choose”. Al hacer click en este campo, podremos acceder a la configuración del filtro.
Seleccionaremos como clasificador, el arbol de inducción:
Como filtro, seleccionaremos de la categoría “unsupervised” > “attribute”:
Este filtro tendrá la tarea de pasar los documentos de texto del data set, a vectores de palabras, para su posterior análisis:
Es posible configurarlo de diversas maneras para adaptarlo a distintos idiomas o criterios de evaluación de corte de palabras. A su vez es posible utilizar distintos algoritmos de Stemming para utilizar un vector de raíces de palabras en lugar de las palabras completas, esto lo retomaremos en artículos posteriores.
14 Stage:
Es posible configurarlo de diversas maneras para adaptarlo a distintos idiomas o criterios de evaluación de corte de palabras. A su vez es posible utilizar distintos algoritmos de Stemming para utilizar un vector de raíces de palabras en lugar de las palabras completas, esto lo retomaremos en artículos posteriores.
15 Stage:
Una vez listo, nuestro modelo puede ser ejecutado por Weka. Al estar ejecutando, veremos como la imagen del “weka” que se encuentra en la esquina inferior derecha de la ventana, se mueve hacia un lado y otro que hay actividad en el Log. Este proceso puede tardar varios minutos, dependiendo del tamaño del dataset y del modelo construido.
16 Stage:
En el caso de los árboles de decisión, es posible visualizarlo en pantalla haciendo click derecho en el modelo de la lista de resultados.
Al abrirlo y ajustarlo a una ventana de mayor tamaño, veremos el arbol de decisión:
El clasificador también nos mostrará los resultados de manera textual:
as
La matriz de confusión indica la cantidad de instancias que fueron clasificadas de forma errónea.
Podemos apreciar que según el análisis del modelo, la exactitud del modelo, es de un 96.3576 %. En un primer análisis, esto parecería mas que aceptable, pero las conclusiones que podemos sacar de la matriz de confusión, nos muestran que el modelo es muy bueno para detectar instancias de A, no así de B. De las 547 instancias de A (cero), se encuentran en el data set para test, 544 A fueron clasificadas como tales, y 3 fueron confundidas como B. En el caso de B, de las 57 instancias de B en el data set de test, 19 instancias B fueron clasificadas como A, lo cual muestra un porcentaje de error muy elevado.
En la Parte 2 de este artículo analizaremos otra técnica de datamining y sus resultados.
Referencias:
Practical Data Mining. Tutorial 5. Mark Hall, Eibe Frank, Ian Witten. 2006-2012 University of Waikato.
Introduction to Data Mining. Ian H. Witten, Eibe Frank.