Вы находитесь на странице: 1из 8

Universidad Veracruzana

Facultad de Fsica e Inteligencia Artificial Maestra en Inteligencia Artificial

Implementacin del Algoritmo ID3


Reporte de Prctica.

Por Yaser Aguas Garca

yaser0.7@gmail.com

Xalapa, Ver.

02 de septiembre de 2013

Implementacion de ID3
El objetivo de ste ejercicio es programar el algoritmo ID3 y probar que el mtodo permite generar un rbol de decisin desde una base de datos.

Qu es el algoritmo ID3?
Acrnimo de Iterative Dichotomiser 3, es un algoritmo usado para generar rboles de decisin a partir de un conjunto de datos. Inventado por Ross Quinlan en 1986 [1], investigador en Ciencias de la Computacin, enfocado principalmente en minera de datos y teora de la decisin [2]. El algoritmo utiliza el concepto de entropa de teora de la comunicacin para determinar el atributo con mayor ganancia de informacin (o menor entropa), crea un nodo a partir de ese atributo y descarta los atributos innecesarios. Los nodos pueden contener dos o ms ramas que representan el valor del atributo evaluado. ste proceso se repite hasta acabar con los atributos y terminar con las hojas del rbol, los nodos hoja producen resultados homogneos llamados decisiones.

Trabajos Relacionados.
En el artculo titulado Finding Rules In Data, de Beverly Thompson y William Thompson, se describe el proceso de creacin de un rbol de decisin utilizando el mtodo propuesto por Quinlan para obtener informacin directamente de un conjunto de datos. Aunque no se implementa en un lenguaje de programacin especfico, el artculo propone el mtodo para obtener sentencias If-Then que pueden ser utilizadas por una mquina. En DECISION MAKING USING ID3 ALGORITHM Copyright 2012, por Mary Slocum, se muestra la implementacin prctica del algoritmo ID3 para predecir futuros servicios y diagnsticos a pacientes con problemas cardiacos. En ste trabajo, se hace nfasis en la importancia de organizar la base de datos para obtener un uso optimizado antes de calcular la entropa y crear el rbol de decisin. En Example of ID3 algorithm por Ernest Davis, se hace nfasis en el proceso de obtencin de la entropa de clasificacin.

Yaser Aguas Garca

Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

Materiales.
Se utilizaron las siguientes computadoras para desarrollar y probar el software (Tabla 1):
PC Procesador No. De Ncleos 4 No. De Procesadores Lgicos 4 Velocidad De Reloj 2.83GHz Cach RAM Arquitectura Video SO

Intel Core2 Quad Q9550

6144KB

6GB DDR3 HTx

64-Bits

2x NVIDIA GeForce GTX 660 Ti SLI 4GB RAM

Windows7 Home Premium 64 Bits

Intel Core2 Duo T6600

2.2GHz

2048KB

4GB DDR3

64-Bits

Mobile Intel 4 Series Express Chipset

Windows7 Home Premium 64 Bits

Tabla 1. Caractersticas de las computadoras empleadas.

Se prob el algoritmo con las siguientes bases de datos (Tabla 2):


DB Nmero de instancias 624 Nmero de Atributos 9 Clase Atributos Tamao en KB 14 Fuente:

breastcancer.csv

Class

tenis.csv

14

Jugar-tenis

farmaco.csv

14

Administrar _ Farmaco_F

clump-thickness, cell-size, cell-shape, marginal-adhesion, single-epithelial, bare-nuclei, bland-chromatian, normal-nucleoil, mitoses. cielo, temperatura, humedad, viento Presion_Arterial, Azucar_en_Sangre, Indice_de_Colesterol, Alergia_a_Antibioticos, Otras_Alergias

Terceros

Induction of Decision Trees por Quinlan, J. R

Material en Clase

Tabla 2. Bases de datos y sus caractersticas.

Yaser Aguas Garca

Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

Metodologa.
Las bases de datos se encuentran en formato Comma Separated Values (csv). Se opt por programar en Python v2.7 pues incluye una biblioteca que permite leer los archivos .csv y convertirlos a una lista de cadenas. Esto lo hace con la siguiente funcin (Figura 1):

Figura 1. Lectura de la base de datos.

Al igual que Mary Slocum, coincidimos en la importancia de preparar y organizar la informacin antes de iniciar con los clculos de entropa y ganancia de informacin para ir creando el rbol. Por lo anterior se generan tres listas ms, una con los datos o ejemplos, otra con los atributos y otra con el nombre de la clase. stas sern las 3 listas de las cuales el programa obtendr la informacin. Cada lista se obtiene mediante funciones independientes (Figura 2):

Figura 2. Obtencin de datos, atributos y clase.

Para que las funciones anteriores cumplan su objetivo de manera exitosa, es necesario agregar a los requisitos de la base de datos lo siguiente: La primera fila de la base de datos estar compuesta por el nombre de los atributos y el nombre de la clase. La ltima columna de la base de datos corresponde a la clase. El mtodo ID3 propuesto por Quinlan, emplea el concepto de entropa de clasificacin para determinar la ganancia de informacin de cada atributo, esto se consigue determinando la probabilidad de que los diferentes valores posibles de los atributos se relacionen con los valores posibles de la clase. De lo anterior concluimos que hay dos elementos importantes a evaluar: Los valores de los atributos y los valores de la clase, o en otras palabras, el
Yaser Aguas Garca Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

dominio de los atributos y el dominio de la clase. Los dominios se obtienen mediante la siguiente funcin (Figura 3):

Figura 3. Obtencin del dominio de un atributo respecto a una lista de ejemplos.

Una vez que tenemos el dominio del atributo a evaluar, el mtodo ID3 evala cada valor dentro del dominio respecto a un valor de la clase. A mano, esto se hace leyendo las filas de la base datos que contienen el valor deseado de la clase, en el programa, esa lectura se logra generando una nueva lista de datos conformada de los ejemplos que contienen slo el valor deseado de la clase. Dado que la tabla resultante se seguir partiendo hasta obtener una hoja del rbol de decisin, es importante que la variable donde se almacena la nueva tabla no se altere durante la recursividad. Python para ahorrar memoria, en vez de copiar una variable, genera un apuntador con el nombre que se le indique al mismo espacio de memoria de la variable original. Para evitar esto, se genera una copia profunda de la variable duplicando la variable en memoria (Figura 4).

Figura 4. Obtencin de la nueva tabla de ejemplos de acuerdo a un atributo y un valor de clase.

Con las funciones anteriores, tenemos el manejo de la base de datos para obtener la informacin a analizar. Dado que ahora ya es sencillo solicitar un atributo, los posibles valores de un atributo, la clase, los posibles valores de la clase, y tambin es posible tener una tabla donde se muestren los ejemplos donde se relacione un atributo con determinado valor y la clase, se procede a obtener la entropa y ganancia de informacin de los atributos para poder ir generando el rbol. La ganancia de informacin de un atributo respecto a la clase se obtiene de la siguiente manera (Figura 5):

Figura 5. Frmula para obtener la ganancia de un atributo respecto a la clase.

Esto nos dice que es necesario obtener la entropa de clase y aadirle la sumatoria negativa de las entropas de los valores de un atributo respecto a la clase. Para obtener la entropa de clase se utiliza la siguiente ecuacin (Figura 6):

Yaser Aguas Garca

Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

Figura 6. Clculo de entropa de clase.

Y para obtener la entropa de un atributo (Figura 7):

Figura 7. Clculo de entropa de atributo.

Como se puede observar, ambos clculos son muy similares, la diferencia radica en que para calcular la entropa de un atributo, cada valor del atributo se relaciona con los valores de la clase. Por esto, es posible utilizar una sola funcin para calcular ambas ganancias, tal y como se muestra en la Figura 8.

Fugura 8. Calculo de entropas.

Y para calcular la ganancia de la informacin se suma la entropa de clase con la sumatoria negativa de la entropa del atributo (Figura 9):

Figura 9. Clculo de Ganancia de informacin.

Ya con esto, es posible escribir la funcin que genere el rbol. En concreto la funcin del algoritmo ID3. sta funcin va creando una lista de listas anidadas. La lista principal est formada por la raz del rbol y cada valor del atributo, o rama, genera nuevas listas. Los nodos siguientes se guardan en listas dentro de los atributos. Y as hasta llegar a la condicin de paro, que es que el dominio del atributo a evaluar est conformado de un solo valor, lo que genera una hoja.

Yaser Aguas Garca

Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

La funcin ID3 que genera el rbol se observa en la Figura 10:

Figura 10. Funcin ID3.

La condicin de paro, se obtiene con la siguiente funcin (Figura 11):

Figura 11. Condicin de Paro.

Todo el programa se ejecuta desde una sola funcin que llama a las dems. La base de datos se especifica en una variable llamada ruta. Tambin existe la posibilidad, de que el usuario pueda ingresar la ruta del archivo de la base de datos al descomentar la tercera lnea de la funcin run( ) (Figura 12).

Figura 12. Funcin principal.

Yaser Aguas Garca

Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

Conclusiones.
Con sta prctica qued demostrado que es posible implementar en un programa el algoritmo ID3. Se demostr que el mtodo genera un rbol en forma de listas anidadas como se esperaba (Ver Figura 13).

Figura 13. Arbol de Decisin obtenido de la base de datos tenis en PC1.

Aunque no fue posible encontrar cdigos para comparar el programa con otros. Podemos observar que la manera de efectuar los pasos para la obtencin del rbol de decisiones vara en el proceso que se le da a la base de datos antes de analizarla. Tener funciones que nos brinden los datos necesarios para efectuar las operaciones de entropa y de dicotomizacin de la tabla de datos ayuda a simplificar el cdigo para las funciones recursivas. Una futura mejora del cdigo, sera una funcin que tomase unos valores nuevos de atributos y que recorra el rbol obtenido para dar una prediccin.

Referencias y Bibliografa.
[1] Induction of Decision Trees, por Quinlan, J. R. Machine Learning. 1986 [2] http://en.wikipedia.org/wiki/Ross_Quinlan Finding Rules In Data, por Beverly Thompson y William Thompson. 1986 DECISION MAKING USING ID3 ALGORITHM Copyright 2012, por Mary Slocum. Rivier University. 2012 Example of ID3 algorithm en http://cs.nyu.edu/courses/spring04/G22.2560-001/id3-ex.txt, por Ernest Davis. Dept. of Computer Science, New York University. rboles de Decisin en http://ccc.inaoep.mx/~emorales/Cursos/NvoAprend/Acetatos/sbl.pdf, por Eduardo Morales, Jess Gonzlez. INAOE. Enero 2012. UC Irvine Machine Learning Repository en http://archive.ics.uci.edu/ml/

Yaser Aguas Garca

Mtodos Matemticos para la Inteligencia Artificial

02 de septiembre de 2013

Вам также может понравиться