Está en la página 1de 13

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH.

Universidad de Palermo, 2011

Framework de agrupamiento interoperable para proyectos de investigacin

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Framework de agrupamiento interoperable para proyectos de investigacin Introduccin Responsables del proyecto Objetivos del proyecto Comunidad y software libre Sobre el diseo de WEKA Clustering bsico en WEKA Construyendo un Clusterer Evaluando Diseo del framework para WIH Desarrollo de un adapter para Weka Trabajando con tipos del API de Java Ejemplo de conversin de un DataSet Adaptador abstracto para WEKA Adaptador para el mtodo SimpleKMeans de WEKA Simplificando el uso de nuestro adaptador Estado del proyecto y demostracin Cronograma Desarrollo del framework Colaboracin a Weka Referencias

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Introduccin
En el ambito del AIGROUP -grupo de investigacin en Inteligencia Artificial en la Universidad de Palermo- desde el proyecto WIH, Word Intelligent Handler, nos encaminamos en la bsqueda, investigacin y desarrollo de nuevos mtodos de agrupamiento y distancias para dar solucin a problemas especificos de nuestro proyecto. El proyecto requiere para una de sus etapas la incorporacin de una herramienta de data-mining, por tanto los resultados de estas investigaciones luego se tendran que implementar en esta herramienta y agregar a las posibilidades del sistema actual. WIH es un proyecto de robot conversacional chaterbot. Esta investigacin es derivada en parte del trabajo del proyecto, pero no es el objetivo de esta presentacin tratar temas especificos del proyecto WIH, para ms informacin sobre WIH vea [Dialog Structure Automatic Modeling].1

Responsables del proyecto


M. D. Lopez de Luise mddl@aigroup.com.ar A. Cabrera acabrera@aigroup.com.ar D. Hisgen dhisgen@aigroup.com.ar

Objetivos del proyecto


Se dispuso desde la direccin del proyecto: El uso del software WEKA de la Universidad de Waikato, Nueva Zelanda, para la futura contribucin a este y a su comunidad de usuarios, sin embargo se estableci como primordial que el proyecto WIH sea transparente frente a posibles cambios futuros. Se hizo incapi y es uno de los objetivos del framework proporcionar una interfaz de uso simple y amena, de fcil implementacin. Para facilitar nuestros procesos de investigacin, se solicito que el software brindara acceso a las siguientes funcionalidades: carga y almacenamiento de conjuntos de datos y resultados de las evaluaciones en archivos separados por coma. Documentos y esquemas XML de configuracin. Facilidades de representacin en grficos en dos dimensiones.

[Dialog Structure Automatic Modeling] M.D.Lopez de Luise, D. Hisgen. 2010.

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Comunidad y software libre


WEKA es una alternativa de cdigo abierto, respetada, establecida y muy usada a nivel mundial especialmente en ambitos academicos. Est desarrollado enteramente en Java, tiene dos ramas: 3.6.6 estable, y posee una rama 3.7 en desarrollo activo. Es software libre: esta licenciado bajo GNU v2 y recibe aportes de multiples programadores en su versin de desarrollo.

Sobre el diseo de WEKA


A continuacin presentamos el diseo de el subconjunto de clases a las que nos acotaremos:

Los components comnes que usaremos son: Instances - Representacin de nuestro dataset en WEKA. DistanceFunction - Interfaz de todas las funciones a utilizar en determinados mtodos (Clusterer). Clusterer - Es construido sobre los datos procesados (implementacin de un mtodo de clusterizacin). ClusterEvaluation - Desde donde obtenemos los resultados de nuestro Clusterer.

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Clustering bsico en WEKA


Antes de presentar el diseo del framework, es importante conocer la forma particular de trabajo con WEKA.
Las clases necesarias pertenecen al siguiente paquete. weka.clusterers

Construyendo un Clusterer
Un clusterer es construido usando el metodo buildClusterer(Instances). La siguiente porcin de cdigo muestra como construir un clusterer EM Expectation Maximization con un mximo de iteraciones de 100. import weka.clusterers.EM; ... String[] options = new String[2]; options[0] = "-I"; // max. iterations options[1] = "100"; EM clusterer = new EM(); // nueva instancia de un clusterer clusterer.setOptions(options); // establece las opciones clusterer.buildClusterer(data); // construye el clusterer

Evaluando
Para evaluar un clusterer debes usar la clase ClusterEvaluation, por ejemplo para obtener el nmero de clusters encontrados: import weka.clusterers.ClusterEvaluation; import weka.clusterers.Clusterer; ... ClusterEvaluation eval = new ClusterEvaluation(); Clusterer clusterer = new EM(); // nueva instancia de clusterer, opciones por defecto clusterer.buildClusterer(data); // construir el clusterer eval.setClusterer(clusterer); // el cluster a evaluar eval.evaluateClusterer(newData); // datos para evaluar en el clusterer System.out.println("# of clusters: " + eval.getNumClusters()); // imprime el nmero de clusters encontrado

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Diseo del framework para WIH


A continuacin presentamos el diagrama de clases del diseo de nuestro framework:

Cumpliendo con lo requerido, se decidi implementar un patrn Adaptador para implementar multiples frameworks de clustering de forma transparente en el sistema. Para esto definimos una interfaz IClusterer con especificaciones bsicas de clusterizacin. A su vez de ser necesario cada Adaptador definir su propio diseo, para el adaptador de WEKA dispusimos de un adaptador abstracto e implementamos herencia para cada tipo de clustering que posee el framework. Una clase Utils para separar procedimientos comunes de acceso a datos y visualizacin. El acceso es por medio de una fachada SimpleClustering para proveer acceso comn, con un metodo performClustering() sobrecargado con distinta cantidad de atributos para cada metodo de clustering y algunas validaciones pertinentes.

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Desarrollo de un adapter para Weka


Trabajando con tipos del API de Java
Nuestra interfaz IClusterer trabaja con tipos primitivos y del API de Java, por lo cual nuestro adaptador tendr que convertir los objetos en los cuales trabaja WEKA en matrices:

Ejemplo de conversin de un DataSet

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Adaptador abstracto para WEKA

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Adaptador para el mtodo SimpleKMeans de WEKA


Se puede ver como WEKA trabaja con el concepto de opciones -LetraOpcion Valor para las funciones de distancia, pero nuestro adaptador trabaja con variables de estado para cada una de estas, por esto es necesario realizar conversiones para cada propiedad setNombreOpcion() y realizar las actualizaciones correspondientes en cada cambio.

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Simplificando el uso de nuestro adaptador


A traves de la clase SimpleClustering separamos la implementacin de las llamadas a nuestro adaptador: simplificamos la forma de uso de nuestro sistema. En este caso y por hacer nico uso del framework Weka se desarrollo la clase de la siguiente manera:

Una alternativa a lo presentado a anteriormente: sera implementar n-clases para cada metodo de clustering en general: SimpleClusteringKMeans, SimpleClusteringFarthestFirst, bien para cada framework una clase con distintas sobre-escrituras del metodo performClustering().

10

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Estado del proyecto y demostracin


Se dispone de un adaptador completo para el mtodo de agrupamiento SimpleKMeans en Weka, y se pueden establecer configuraciones para todas las capacidades de Weka en SimpleKMeans, funciones de distancias nominales Manhattan y Euclideana.

11

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Cronograma

Desarrollo del framework


Primer Semestre 2012 Incorporacin de carga XML. Incorporacin de mtodos de clustering disponibles en Weka. Adaptadores para otros frameworks de agrupamiento disponibles.

Colaboracin a Weka
Ao 2012 Investigacin en nuevas distancias e implementacin. Investigacin en nuevos mtodos de agrupamiento e implementacin.

12

Framework de agrupamiento interoperable para proyectos de investigacin. Proyecto WIH. Universidad de Palermo, 2011

Referencias
[1] B. Witten. Data Mining: Practical Machine Learning Tools and Techniques. Word Press. Princeton. 2007. [2] AIGroup - WIH Proyect. 2010 http://www.aigroup.com.ar/?page_id=21 [3] AIGroup Wiki - Text mining con Weka https://aigroupw.wiki.zoho.com/Text-Mining-con-Weka-tutorial.html [4] WekaWIKI: Use weka in your Java Code http://weka.wikispaces.com/Use+WEKA+in+your+Java+code#Clustering [5] Weka official documentation http://weka.sourceforge.net/doc.stable/ [6] Data mining with Weka - IBM DeveloperWorks http://www.ibm.com/developerworks/opensource/library/os-weka1/index.html [7] Clustering and Data Mining with R http://faculty.ucr.edu/~tgirke/HTML_Presentations/Manuals/Clustering/clustering.pdf [8] Comparing Weka and R http://www.telefonica.net/web2/todobi/Dic07/ComparingWekaAndR.pdf

13