Proyecto de Inteligencia Artificial II.pdf

UNIVERSIDAD TÉCNICA DE MANABÍ “Facultad de Ciencias Informáticas” Carrera de Ingeniería en Sistemas Informáticos PROYEC

Views 62 Downloads 1 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

UNIVERSIDAD TÉCNICA DE MANABÍ “Facultad de Ciencias Informáticas” Carrera de Ingeniería en Sistemas Informáticos

PROYECTO INTEGRADOR

MATERIA: INTELIGENCIA ARTIFICIAL

RESPONSABLES:      

CADENA GARCÍA BRIAN ALEJANDRO GERMAN PINCAY CRISTIAN ANDRÉS GILER VILLAGÓMEZ RICARDO DAVID MOREIRA BRIONES DAVID ALEJANDRO NAVIA ROMERO JOSÉ DANIEL ZUÑIGA REZABALA JUAN ENRIQUE

NIVEL: 8vo PARALELO: “A” DOCENTE: Dr. RODOLFO GARCÍA BERMÚDEZ

PERIÓDO Octubre 2015 - Febrero 2016

UNIVERSIDAD TÉCNICA DE MANABÍ

VISIÓN: Ser institución universitaria, líder y referente de la educación superior en el Ecuador, promoviendo la creación, desarrollo, transmisión y difusión de la ciencia, la técnica y la cultura, con reconocimiento social y proyección regional y mundial.

MISIÓN: Formar académicos, científicos y profesionales responsables, humanistas, éticos y solidarios, comprometidos con los objetivos del desarrollo nacional, que contribuyan a la solución de los problemas del país como universidad de docencia con investigación, capaces de generar y aplicar nuevos conocimientos, fomentando la promoción y difusión de los saberes y las culturas, previstos en la Constitución de la República del Ecuador.

FACULTAD DE CIENCIAS INFORMÁTICAS VISIÓN: Ser una facultad líder que con integridad, transparencia y equidad forme profesionales capaces de desarrollar soluciones informáticas innovadoras, generadores de conocimientos e investigación permanente.

MISIÓN: Formar profesionales investigadores en el campo de las Ciencias Informáticas, al servicio de la sociedad, que aporten con soluciones innovadoras al desarrollo tecnológico del país.

MARCO TEÓRICO

Introducción al

El entorno de trabajo del Weka 1

Weka es un conjunto de librerias JAVA para la extracción de conocimientos desde bases de datos. Es un software ha sido desarrollado bajo licencia GPL lo cual ha impulsado que sea una de las suites más utilizadas en el área en los últimos años. La versión 3.4.7 incluye las siguientes características: 

Diversas fuentes de datos (ASCII, JDBC).



Interfaz visual basado en procesos/flujos de datos (rutas).



Distintas herramientas de minería de datos: reglas de asociación (a priori, Tertius, ...), , agrupación/segmentación/conglomerado (Cobweb, EM y k-medias), clasificación (redes neuronales, reglas y árboles de decisión, aprendizaje Bayesiona) y regresión (Regresión lineal, SVM..).



Manipulación de datos (pick & mix, muestreo, combinación y separación).



Combinación de modelos (Bagging, Boosting ...)



Visualización anterior (datos en múltiples gráficas) y posterior (árboles, curvas ROC, curvas de coste..).



Entorno de experimentos, con la posibilidad de realizar pruebas estadísticas (t-test).

2

Figura 1. Ventana inicial de Weka.

Como se puede ver en la parte inferior de la Figura 1, Weka define 4 entornes de trabajo 

Simple CLI: Entorno consola para invocar directamente con java a los paquetes de weka



Explorer: Entorno visual que ofrece una interfaz gráfica para el uso de los paquetes



Experimenter: Entorno centrado en la automatización de tareas de manera que se facilite la realización de experimentos a gran escala.



KnowledgeFlow: Permite generar proyectos de minería de datos mediante la generación de flujos de información.

1.1 Explorer En esta parte vamos a centrarnos en el entorno Explorer, ya que permite el acceso a la mayoría de las funcionalidades integradas en Weka de una manera sencilla.

Figura 2. Ventana del Explorador

3

Como se puede observar existen 6 sub-entornos de ejecución: 

Preprocess: Incluye las herramientas y filtros para cargar y manipular los datos



Classification: Acceso a las técnicas de clasificación y regresión



Cluster: Integra varios métodos de agrupamiento



Associate: Incluye una pocas técnicas de reglas de asociación



Select Attributes: Permite aplicar diversas técnicas para la reducción del número de atributos



Visualize: En este apartado podemos estudiar el comportamiento de los datos mediante técnicas de visualización.

2. Un primer ejemplo Vamos a empezar con un ejemplo muy sencillo. En primer lugar, aparte del Weka, dispones de un fichero zip disponible en www.dsic.upv.es/~cferri/weka con todos los ficheros de datos necesarios para realizar este boletín. En particular, en este primer ejemplo, vamos a trabajar con los datos acerca de los días que se ha podido jugar al tenis, dependiendo de diversos aspectos meteorológicos. El objetivo es poder determinar (predecir) si hoy podremos jugar al tenis. Los datos de que disponemos están en el fichero: weather.arff” y son los siguientes: Sky Sunny Sunny Overcast Rain Rain Rain Overcast Sunny Sunny Rain Sunny Overcast Overcast Rain

Temperature Hot Hot Hot Mild Cool Cool Cool Mild Cool Mild Mild Mild Hot Mild

Humidity High High High High Normal Normal Normal High Normal Normal Normal High Normal High

Wind Weak Strong Weak Weak Weak Strong Strong Weak Weak Weak Strong Strong Weak Strong

PlayTennis No No Yes Yes Yes No Yes No Yes Yes Yes Yes Yes No

Abrimos el Weka y lanzamos el Explorer. Lo primero que vamos a hacer es cargar los datos en el área de trabajo. Para ello, pincha en el botón “Open file” del entorno “preprocess”. Seleccionamos el fichero “weather.arff” y si todo ha ido bien veremos la pantalla de la Figura 3. Weka utiliza un formato específico de datos, el formato arff. Un fichero con este formato, no sólo contiene los datos desde donde vamos a efectuar el aprendizaje, además incluye meta-información sobre los propios datos, como por ejemplo el nombre y tipo de cada atributo, así como una descripción textual del origen de los datos. Podemos convertir ficheros en texto conteniendo un registro por línea y con los atributos separados con comas (formato csv) a ficheror arff mediante el uso de un filtro convertidor.

4

Figura 3. Cargando el dataset Weather

Desde esta ventana podemos conocer bastantes detalles del dataset que acabamos de cargar. Por ejemplo, el sistema nos indica que tenemos 14 registros con 5 atributos. Si seleccionamos cada uno de los atributos, conoceremos más información del atributo en cuestión: tipo(nominal o numérico), valores distintos, registros que no tienen información de ese atributo, el valor máximo y mínimo (sólo en atributos numéricos), y finalmente un histograma con información sobre la distribución de los ejemplos para ese atributo, reflejando con el uso de colores la distribución de clases de cada uno de los registros. Por ejemplo, en la Figura 3 podemos observar que el atributo Outlook tiene tres valores diferentes (Sunny, Overcast y Rainy) siendo la distribución de [5,4,5]. En el caso de los 5 registros 2 donde el atributo Outlook=sunny, tenemos 3 con clase no y 2 con clase yes , cuando Outlook=overcast los 4 registros son yes, y finalmente cuando Outlook=rainy existen 3 con clase yes, y 2 con clase no. Pulsando en el botón Choose en Filter, tendremos acceso a multitud de herramientas para el preprocesamiento de datos. Estas herramientas permiten (entre otras muchas funcionalidades): 

Realizar un filtrado de atributos



Cambiar el tipo de los atributos (discretizar o numerizar)



Realizar muestreos sobre los datos



Normalizar atributos numéricos



Unificar valores de un mismo atributo

Una vez cargado el fichero, ya estamos en disposición de aprender un modelo (en este caso un árbol de decisión). Para ello, seleccionamos en la pestaña Classify. Como podemos observar, el entorno cambia bastante con respecto a la ventana anterior. Pulsando en el botón choose de Classifier podemos configurar el método de clasificación o regresión que 3 queramos utilizar. Estos métodos se han agrupado a grandes rasgos en las siguientes familias :

5



Bayes. Métodos basados en el paradigma delaprendizaje de Bayes



Funciones. Métodos “matemáticos”: Redes neuronales, regresiones, SVM…



Lazy. Métodos que utilizan el paradigma de aprendizaje perezoso, es decir no construyen un modelo



Meta. Métodos que permiten combinar diferentes métodos de aprendizaje



Trees. Métodos que aprenden mediante la generación de árboles de decisión



Rules. Métodos que aprenden modelos que se pueden expresar como reglas.

Además en esta ventana podemos establecer como queremos efectuar la validación del modelo aprendido 

Use training set. Con esta opción Weka entrenará el método con todos los datos disponibles y a posteriori realiza la evaluación sobre los mismos datos.



Supplied test set. Con esta opción podemos cargar un conjunto de datos (normalmente diferentes a los de aprendizaje) con los cuales se realizará la evaluación



Cross-validation. Se realiza la evaluación mediante la técnica de validación cruzada. En este caso podemos establecer el número de pliegues a utilizar.



Percentage split. Se define un porcentaje con el que se aprende el modelo. La evaluación se realiza con los datos restantes.

Para este primer ejemplo vamos a utilizar el algoritmo clásico de aprendizaje de árboles de decisión C4.5 (J48 es el nombre que se le da en Weka), Para ello pulsamos Choose, seleccionamos J48 en Trees. Si pulsáramos sobre la ventana que contiene el nombre del método podríamos modificar los parámetros específicos de este método. En este caso dejaremos los valores por defecto. Por último seleccionamos como opción de evaluación (test options) la opción Use training set, y ya estamos listos para ejecutar el método de aprendizaje. Para ello pulsamos el botón Start que despierta al pájaro Weka de su letargo y realiza el aprendizaje del modelo predictivo, en este caso un árbol de decisión. Como podemos observar weka nos informa en primer lugar de algunos parámetros del dataset. A continuación nos muestra de manera textual el modelo aprendido (en este caso el árbol de decisión). Por ultimo nos incluye información sobre la evaluación del modelo. En este problema, el árbol aprendido tiene una precisión máxima (100%) por lo que todas las medidas de error son 0. Además podemos conocer más detalles de la distribución de los ejemplos por clase en la matriz de confusión). Podemos visualizar el árbol de una manera más atractiva si pulsamos el botón derecho sobre el texto trees.J48 de la caja Result-list. Seleccionamos la opción Visualize Tree, y obtendremos el árbol de decisión de la Figura 4. Además, la Figura 4 nos muestra para cada hoja cuántos ejemplos de la evidencia son cubiertos. Con el botón derecho sobre el texto trees.J48 de la caja Result-list tendremos acceso otras opciones más avanzadas para el análisis del modelo aprendido.

6

Zotero es un gestor de referencias bibliográficas, libre, abierto y gratuito desarrollado por el Center for History and New Media de la George Maison University que funciona también como servicio. Como aplicación es posible instalarlo como Extensión de Firefox o como programa independiente (Zotero Standalone), y en ambos casos es multiplataforma, estando disponible para los sistemas operativos Windows, Mac y GNU/Linux. El funcionamiento de Zotero se basa en los siguientes principios: 

Recopilar fuentes bibliográficas, ya sea de forma manual, automática a partir del identificador del recurso (es decir, a partir del ISBN, ISSN, Digital Object Identifier (DOI), PubMed o semi-automática a partir de los metadatos de las páginas web2 .



Organizar las referencias a partir de carpetas, etiquetas y carpetas inteligentes.



Citar las referencias en documentos, para lo cual ofrece varios formatos (citas, bibliografías o informes), estilos de citación e integración con procesadores de texto3 .



Sincronizar la biblioteca de referencias, notas y adjuntos (para ello es necesaria la creación de una cuenta de usuario) entre distintos equipos o a través de la web oficial.



Colaborar con una persona, un grupo de autores o públicamente compartiendo referencias, notas y adjuntos.

Características 

      



 

Software libre y de código abierto, gratuito y multiplataforma. Disponible como extensión de Firefox, programa independiente (con conectores opcionales que le permiten trabajar con Chrome o Safari) o versión web. Almacenamiento y gestión de referencias y notas y archivos asociados. Extracción automática de metadatos de documentos PDF (requiere extensión adicional). Copias de seguridad y sincronización entre varios equipos (requiere creación de cuenta de usuario). Búsqueda completa de texto a través de documentos. Filtrado inteligente, etiquetado y cambio de nombre de archivos PDF. Citas y bibliografías sincronizadas en Microsoft Word, OpenOffice y LibreOffice, en distintos idiomas5 . Utilización del formato Citation Style Language (CSL) para la creación de estilos de citas bibliográficas, con más de 7.500 estilos disponibles y posibilidad de crear nuevos estilos6 . Importación de documentos y trabajos de investigación de sitios web externos (por ejemplo, PubMed, Google Scholar, Arxiv, etc.) haciendo uso del bookmarklet del navegador. Soporta COinS y el bookmarklet del navegador importa de cualquier sitio que soporte COinS7 . Compartir y colaborar en grupo.

7

  

Exportar a distintos formatos. Creación de cronologías de referencias. Existencia de aplicaciones de terceros que extienden sus funcionalidades.

8

CONSTRUCCIÓN DEL CLASIFICADOR

WEKA Datos originales de iris.arff mostrados en el Weka Explorer para ver las características de sus atributos: SEPALLENGHT o longitud de sépalo

SEPAL WIDHT ó Ancho de sépalo

9

SEPALLENGHT ó Longitud de sépalo

PETALWIDTH ó Longitud del pétalo

10

Número de clases totales (50) de iris.arff

11

Los datos generados del archivo original de iris a un nuevo archivo llamado datos.arff nos dan en el software WEKA los siguientes resultados de sus atributos:

SEPALLENGHT o longitud de sépalo

SEPAL WIDHT ó Ancho de sépalo

12

SEPALLENGHT ó Longitud de sépalo

PETALWIDTH ó Longitud del pétalo

13

Número de clases totales (30) de datos nuevos

14

KNOWLEDGE FLOW

Elaboración de un diseño en weka con la herramienta Knowledge flow para probar un clasificador de un dataset sobre los atributos del iris de una flor. Algoritmo En primera instancia iniciamos el weka y escogemos la herramienta Kowledge Flow.

Luego se procede a realizar el diseño que nos permitirá probar nuestro clasificador:  

Hacemos clic en la pestaña DATASOURCES y elegimos ArffLoader en la barra de herramientas. A continuación colocamos el componente de ArffLoader en el área de diseño.

15

 

Especificamos a continuación un archivo ARFF para cargar al primer clic derecho del ratón sobre el icono del ArffLoader en el diseño. Seleccionamos configurar en la lista de este menú y vamos a la ubicación del archivo ARFF que es el de los datos generados a partir de iris.arff

16



A continuación hacemos clic en la pestaña evaluación en la parte superior de la ventana y elegir la ClassAssigner, la cual nos permitirá elegir una clase. Lo ubicamos en el diseño.



A continuación hacemos clic derecho sobre el ClassAssigner y seleccionamos configurar en el menú. Esto nos permitirá más adelante a abrir una ventana desde la que puede especificar qué columna es la clase de los datos.

17



A continuación seleccionamos la ClassValuePicker, esta nos permitirá elegir qué clase de la etiqueta para ser evaluado en el ROC. Colocamos esto en el diseño y haga clic derecho sobre ClassAssigner y seleccionamos dataset y conectamos con el ClassValuePicker.

18



A continuación escogemos un componente llamado CrossValidationFoldMaker de la barra de herramientas de evaluación y lo colocamos en el diseño.



Conectamos el ClassAssigner a la CrossValidationFoldMaker haciendo clic derecho sobre ClassAssigner.

19



A continuación haga clic en la pestaña de clasificadores en la parte superior de la ventana y nos desplazamos a lo largo de la barra de herramientas hasta llegar al componente J48 en la sección de árboles, y posteriormente lo colocamos al diseño.



Conectamos el CrossValidationFoldMaker con el J48 dos veces, primero por trainingSet y luego testSet.

20



Repetimos este paso anterior con el clasificador RandomForest.



Luego tenemos que volver a la pestaña de evaluación y colocar un componente llamado ClassifierPerformanceE-Avaluador en el diseño. Conectaremos el J48 seleccionando la entrada de batchClassifier. Añadir otro ClassifierPerformanceEvaluator para RandomForest y conectarlos via batchClassifier así.

21



Luego iremos a la barra de herramientas de visualización y colocamos un componente de nombre ModelPerformanceChart en el diseño. Conectamos ambos ClassifierPerformanceEvaluators a la ModelPerformanceChart seleccionando la entrada de thresholdData.

22



Ahora debemos comenzar o iniciar el flujo de ejecución seleccionando el ArffLoader, clic derecho y nuevamente clic en Star Loading.



Como se muestra a continuación, tenemos el estado de los componentes.



Seleccionamos Show chart en el menú del componente ModelPerformanceChart, y a continuación se muestran las curvas ROC generadas del dataset empleados.arff, escogiendo la clase casado:

23



Como podemos ver gráficamente se muestra la ventana donde podemos además escoger la etiqueta que queramos observar.

24



También podemos visualizar el resultado de la evaluación a través del componente Text Viewer.



Podemos ver el resultado de sus clases en el Random Forest con la respectiva matriz de confusión.

25



Podemos ver el resultado de sus clases del componente J48 con su respectiva matriz de confusión

En conclusión Weka nos permite observar de una manera detallada los resultados de un clasificador, y con la herramienta Knowledge Flow diseñar gráficamente una red que permita ver el comportamiento de sus clases. Se recomienda usar Weka como software aplicativo para esta clase de problemas en los que se puede interpretar sus datos de una manera gráfica y sus clasificaciones

26

CÓDIGO EN PHYTON from _strptime import _regex_cache import random import arff

#codigo desarollado por German #obtenemos el diccionario de datos del archivo arff

data = arff.load(open('iris.arff','rb')) datos=data.get('data') print (" registros de flores "+str(len(datos))+"")

#funciones que generan la nueva selección de datos y crean el nuevo archivo

def listar(lista): for x in lista: au=""+str(x) print au

def aleatorios(cantidad, min, max): numeros = set()

if max < min: min, max = max, min

if cantidad > (max-min): print "solamente puedo generar %d numeros" % (max-min) cantidad = max - min

27

while len(numeros) < cantidad: numeros.add(random.randint(min, max))

return numeros def crearFile(): archi=open('datos.arff','a') archi.write('@RELATION iris\n') archi.write('

\n')

archi.write('@ATTRIBUTE sepallength

REAL\n')

archi.write('@ATTRIBUTE sepalwidth

REAL\n')

archi.write('@ATTRIBUTE petallength REAL\n') archi.write('@ATTRIBUTE petalwidth archi.write('@ATTRIBUTE class archi.write('

REAL\n')

{Iris-setosa,Iris-versicolor,Iris-virginica}\n')

\n')

archi.write('@DATA\n') archi.close()

def Grabar(texto): archi=open('datos.arff','a') archi.write(texto+'\n') archi.close()

def extraer(lista): str1 = ','.join(str(e) for e in lista) return str1 def Zetoza(lista): for t in lista: n=datos[t]

28

Grabar(extraer(n))

def Versicolor(lista): for t in lista: n=datos[t] Grabar(extraer(n))

def Virginica(lista): for t in lista: n=datos[t] Grabar(extraer(n)) #Grabar(extraer(n)) #llamando a la funciones para generar los datos y archivos crearFile() z=aleatorios(30,0,49) v=aleatorios(30,50,99) vg=aleatorios(30,100,149) #print z Zetoza(z) #print v Versicolor(v) #print vg Virginica(vg)

29

Bibliografía.

[1] «Microsoft Word - Mineria_de_python_Intrusiones_de_Red.doc IntrusionesDeRed.pdf». . [2] «BFTree - Pentaho Data Mining - Pentaho Wiki». [En línea]. Disponible en: http://wiki.pentaho.com/display/DATAMINING/BFTree. [Accedido: 12-dic2015]. [3] «Algoritmos de búsqueda con retroceso para problemas multicriterio Tesis.pdf». . [4] «Microsoft PowerPoint - Sesion5_Busquedas2.ppt [Modo de compatibilidad] - Sesion5_Busquedas2.pdf». . [5] «thesis.pdf». . [6] «randomforest2001.pdf». . [7] «Random Forests for Classification and Regression - UofU2013.pdf». .

30