Clustering en proyectos de investigación

13
Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011 Framework de agrupamiento interoperable para proyectos de investigación 1

description

Proyecto de investigación fin de curso, AIGroup. Mención especial Premio Banco Río, 2011.

Transcript of Clustering en proyectos de investigación

Page 1: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Framework de agrupamiento interoperable para proyectos de investigación

1

Page 2: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Framework de agrupamiento interoperable para proyectos de investigaciónIntroducción

Responsables del proyectoObjetivos del proyectoComunidad y software libreSobre el diseño de WEKAClustering básico en WEKA

Construyendo un ClustererEvaluando

Diseño del framework para WIHDesarrollo de un adapter para Weka

Trabajando con tipos del API de JavaEjemplo de conversión de un DataSetAdaptador abstracto para WEKAAdaptador para el método “SimpleKMeans” de WEKA

Simplificando el uso de nuestro adaptadorEstado del proyecto y demostraciónCronograma

Desarrollo del frameworkColaboración a Weka

Referencias

2

Page 3: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

IntroducciónEn el ambito del AIGROUP -grupo de investigación en Inteligencia Artificial en la Universidad de Palermo- desde el proyecto WIH, “Word Intelligent Handler”, nos encaminamos en la búsqueda, investigación y desarrollo de nuevos métodos de agrupamiento y distancias para dar solución a problemas especificos de nuestro proyecto. El proyecto requiere para una de sus etapas la incorporación de una herramienta de data-mining, por tanto los resultados de estas investigaciones luego se tendrían que implementar en esta herramienta y agregar a las posibilidades del sistema actual. WIH es un proyecto de robot conversacional “chaterbot”. Esta investigación es derivada en parte del trabajo del proyecto, pero no es el objetivo de esta presentación tratar temas especificos del proyecto WIH, para más información sobre WIH vea [Dialog Structure Automatic Modeling].1

Responsables del proyectoM. D. Lopez de [email protected]. [email protected]. [email protected]

Objetivos del proyectoSe dispuso desde la dirección del proyecto: El uso del software WEKA de la Universidad de Waikato, Nueva Zelanda, para la futura contribución 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 fácil implementación. Para facilitar nuestros procesos de investigación, 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 configuración. Facilidades de representación en gráficos en dos dimensiones.

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

3

Page 4: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Comunidad y software libreWEKA es una alternativa de código 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 versión de desarrollo.

Sobre el diseño de WEKAA continuación presentamos el diseño de el subconjunto de clases a las que nos acotaremos:

Los components comúnes que usaremos son:● Instances - Representación de nuestro dataset en WEKA.● DistanceFunction - Interfaz de todas las funciones a utilizar en determinados métodos (Clusterer).● Clusterer - Es construido sobre los datos procesados (implementación de un método de clusterización).● ClusterEvaluation - Desde donde obtenemos los resultados de nuestro Clusterer.

4

Page 5: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Clustering básico en WEKAAntes de presentar el diseño del framework, es importante conocer la forma particular de trabajo con WEKA. Las clases necesarias pertenecen al siguiente paquete.weka.clusterers

Construyendo un ClustererUn clusterer es construido usando el metodo buildClusterer(Instances). La siguiente porción de código muestra como construir un clusterer EM “Expectation Maximization” con un máximo 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

EvaluandoPara evaluar un clusterer debes usar la clase ClusterEvaluation, por ejemplo para obtener el número 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 número de clusters encontrado

5

Page 6: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Diseño del framework para WIHA continuación presentamos el diagrama de clases del diseño de nuestro framework:

Cumpliendo con lo requerido, se decidió implementar un patrón Adaptador para implementar multiples frameworks de clustering de forma transparente en el sistema.Para esto definimos una interfaz IClusterer con especificaciones básicas de clusterización.A su vez de ser necesario cada Adaptador definirá su propio diseño, 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 visualización.El acceso es por medio de una fachada SimpleClustering para proveer acceso común, con un metodo performClustering() sobrecargado con distinta cantidad de atributos para cada metodo de clustering y algunas validaciones pertinentes.

6

Page 7: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Desarrollo de un adapter para WekaTrabajando con tipos del API de JavaNuestra 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 conversión de un DataSet

7

Page 8: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Adaptador abstracto para WEKA

8

Page 9: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Adaptador para el método “SimpleKMeans” de WEKASe 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.

9

Page 10: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Simplificando el uso de nuestro adaptadorA traves de la clase SimpleClustering separamos la implementación 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: sería 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

Page 11: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Estado del proyecto y demostraciónSe dispone de un adaptador completo para el método 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

Page 12: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “Proyecto WIH”. Universidad de Palermo, 2011

Cronograma

Desarrollo del framework Primer Semestre 2012

● Incorporación de carga XML.● Incorporación de métodos de clustering disponibles en Weka.● Adaptadores para otros frameworks de agrupamiento disponibles.

Colaboración a Weka Año 2012

● Investigación en nuevas distancias e implementación.● Investigación en nuevos métodos de agrupamiento e implementación.

12

Page 13: Clustering en proyectos de investigación

Framework de agrupamiento interoperable para proyectos de investigación. “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. 2010http://www.aigroup.com.ar/?page_id=21

● [3] AIGroup Wiki - Text mining con Wekahttps://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 documentationhttp://weka.sourceforge.net/doc.stable/

● [6] Data mining with Weka - IBM DeveloperWorkshttp://www.ibm.com/developerworks/opensource/library/os-weka1/index.html

● [7] Clustering and Data Mining with Rhttp://faculty.ucr.edu/~tgirke/HTML_Presentations/Manuals/Clustering/clustering.pdf

● [8] Comparing Weka and Rhttp://www.telefonica.net/web2/todobi/Dic07/ComparingWekaAndR.pdf

13