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

Centro de Investigación y de Estudios Avanzados

del Instituto Politécnico Nacional

Laboratorio de Tecnologı́as de Información

Sistema para explotar servicios de


minerı́a de datos a través de la Web

Tesis que presenta:

Jorge Omar Jasso Luna

Para obtener el grado de:

Maestro en Ciencias
en Computación

Director de la Tesis:
Dr. Vı́ctor Jesús Sosa Sosa

Cd. Victoria, Tamaulipas, México. Diciembre, 2008



c Derechos reservados por
Jorge Omar Jasso Luna
2008
Esta investigación fue parcialmente financiada mediante el proyecto No. 51623 del
Fondo Mixto Conacyt-Gobierno del Estado de Tamaulipas.

This research was partially funded by project number 51623 from “Fondo Mixto
Conacyt-Gobierno del Estado de Tamaulipas”
La tesis presentada por Jorge Omar Jasso Luna fue aprobada por:

Dra. Xiaoou Li Zhang

Dr. Arturo Dı́az Pérez

Dr. Vı́ctor Jesús Sosa Sosa, Director

Cd. Victoria, Tamaulipas, México., 16 de Diciembre de 2008


A Natalia y (+)Roberto
los principales maestros de mi vida
Agradecimientos

A mi familia, especialmente a mi madre por su apoyo y comprensión durante este


tiempo.

A mi asesor, Dr. Vı́ctor Sosa, por brindarme su apoyo y directriz para llevar a cabo
este proyecto.

A todos los investigadores de la Unidad Tamaulipas que compartieron conmigo sus


conocimientos en el aula de clases.

A mis amigos y compañeros del Cinvestav con los cuales convivı́ y se convirtieron
en mi ’familia’ por espacio de dos años.

A todos mis amigos y seres queridos que siempre me ofrecian una palabra de aliento
para seguir adelante.
Índice General

Índice General I

Índice de Figuras V

Índice de Tablas VII

Índice de Algoritmos IX

Publicaciones XI

Resumen XIII

Abstract XV

1. Introducción 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Definición del problema . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.5. Alcances y limitaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.6. Organización del documento . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Marco teórico 7
2.1. Minerı́a de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1. La minerı́a de datos en el proceso de descubrimiento de conocimiento 8
2.1.2. Tareas de la minerı́a de datos . . . . . . . . . . . . . . . . . . . 8
2.2. Clasificación y predicción . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.1. Clasificación Bayesiana . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2. k-Vecinos Más Cercanos . . . . . . . . . . . . . . . . . . . . . . 13
2.2.3. Máquinas de Vectores de Soporte . . . . . . . . . . . . . . . . . 14
2.2.4. Clasificación por arboles de decisión . . . . . . . . . . . . . . . . 15
2.2.4.1. Métodos de selección de atributo de separación . . . . 16
2.2.4.2. Algoritmo ID3 . . . . . . . . . . . . . . . . . . . . . . 19
2.2.4.3. Algoritmo C4.5 . . . . . . . . . . . . . . . . . . . . . 29
2.3. Tecnologı́as distribuidas para aplicaciones de minerı́a de datos . . . . . . 33
2.3.1. Modelo cliente-servidor . . . . . . . . . . . . . . . . . . . . . . 33
2.3.2. Servicios Web . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

I
2.3.3. RMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3. Herramientas para minerı́a de datos 37


3.1. Herramientas de la primera generación . . . . . . . . . . . . . . . . . . 37
3.2. Herramientas de la segunda generación . . . . . . . . . . . . . . . . . . 38
3.3. Herramientas de la tercera generación . . . . . . . . . . . . . . . . . . . 41
3.4. Limitantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

4. Diseño e implementación del sistema 51


4.1. Arquitectura del enfoque propuesto . . . . . . . . . . . . . . . . . . . . 51
4.1.1. Proceso de Construcción del clasificador global . . . . . . . . . . 54
4.1.2. Estructura de los metadatos . . . . . . . . . . . . . . . . . . . . 55
4.2. Implementación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.1. Diagrama de clases . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.2. Nodo Central de Cómputo . . . . . . . . . . . . . . . . . . . . . 59
4.2.3. Nodos Locales . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4.2.4. Aplicación Web para el registro de participantes . . . . . . . . . 65
4.2.5. Cliente Weka Team Miner . . . . . . . . . . . . . . . . . . . . . 65
4.2.6. Pseudocódigo Clasificador global ID3 . . . . . . . . . . . . . . . 66
4.2.7. Algoritmo para construcción de clasificador . . . . . . . . . . . . 68
4.3. Herramientas de software . . . . . . . . . . . . . . . . . . . . . . . . . 71

5. Evaluación del sistema 73


5.1. Objetivo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
5.2. Requerimientos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.3. Escenario de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.4. Casos de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
5.4.1. Crear un nuevo grupo de trabajo . . . . . . . . . . . . . . . . . 76
5.4.2. Registrar un nuevo nodo local . . . . . . . . . . . . . . . . . . . 76
5.4.3. Construir un clasificador con información global . . . . . . . . . 77
5.4.4. Construcción de clasificadores locales, global y su comparación . 79

6. Conclusiones 93
6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
6.2. Aportaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.3. Ventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.4. Desventajas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
6.5. Trabajo futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

II
A. Códigos 97
A.1. Nodo Central de Cómputo . . . . . . . . . . . . . . . . . . . . . . . . . 97
A.2. ClassifierBuilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
A.3. Clase Id3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100

Bibliografı́a 103

III
Índice de Figuras

2.1. Minerı́a de datos como un paso del proceso de descubrimiento de conoci-


miento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2. Problema de clasificación linealmente separable . . . . . . . . . . . . . . 14
2.3. Mapeo de datos no lineales a un espacio de mayor dimensionalidad . . . 15
2.4. Árbol de decisión para el concepto de aplicar fármaco, indicando si es
adecuado suministrarle un fármaco a un paciente. . . . . . . . . . . . . 16
2.5. Construcción del árbol. Paso 1 . . . . . . . . . . . . . . . . . . . . . . . 22
2.6. Construcción del árbol. Paso 2 . . . . . . . . . . . . . . . . . . . . . . . 24
2.7. Construcción del árbol. Paso 3 . . . . . . . . . . . . . . . . . . . . . . . 26
2.8. Construcción del árbol. Paso 4 . . . . . . . . . . . . . . . . . . . . . . . 26
2.9. Construcción del árbol. Paso 5 . . . . . . . . . . . . . . . . . . . . . . . 28
2.10. Árbol final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.11. Árbol de decisión C4.5 paso 1 . . . . . . . . . . . . . . . . . . . . . . . 31
2.12. Árbol de decisión C4.5 paso 2 . . . . . . . . . . . . . . . . . . . . . . . 32
2.13. Árbol de decisión final empleando el algoritmo C4.5 . . . . . . . . . . . 33

3.1. Explorador de Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39


3.2. Grid Weka, escenario de usos . . . . . . . . . . . . . . . . . . . . . . . 42
3.3. Componentes de Discovery Net . . . . . . . . . . . . . . . . . . . . . . 43
3.4. Componentes de GridMiner . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5. FAHEIM. Flujo de trabajo de Minerı́a de datos . . . . . . . . . . . . . . 45
3.6. Arquitectura Weka4WS . . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.7. Interfaz Clasificación Weka4WS . . . . . . . . . . . . . . . . . . . . . . 48

4.1. Arquitectura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2. Plataforma rmi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.3. Proceso de intercambio de metadatos . . . . . . . . . . . . . . . . . . . 55
4.4. Estructura de los metadatos . . . . . . . . . . . . . . . . . . . . . . . . 56
4.5. Ejemplo de valores en los metadatos . . . . . . . . . . . . . . . . . . . 56
4.6. Metadatos del conjunto de entrenamiento del nodo A . . . . . . . . . . 58
4.7. Metadatos del conjunto de entrenamiento del nodo B . . . . . . . . . . 58
4.8. Diagrama de clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.9. Diagrama de la base de datos del sistema . . . . . . . . . . . . . . . . . 63
4.10. Interfaz para registro de grupos . . . . . . . . . . . . . . . . . . . . . . 65
4.11. Interfaz para registro de nuevos miembros . . . . . . . . . . . . . . . . . 66
4.12. Interfaz cliente Weka . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4.13. Panel de selección de propiedades . . . . . . . . . . . . . . . . . . . . . 67

V
4.14. Salida de un clasificador (árbol de decisión) . . . . . . . . . . . . . . . . 67
4.15. Metadatos obtenidos por el conjunto de entrenamiento del nodo A . . . 69
4.16. Metadatos obtenidos por el conjunto de entrenamiento del nodo B . . . 70
4.17. Metadatos globales formados a través de los metadatos de los nodos A y B 71

5.1. Escenario de prueba . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75


5.2. Interfaz Web de la aplicación Team Miner para crear un nuevo grupo de
trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
5.3. Agregando un nuevo miembro al grupo . . . . . . . . . . . . . . . . . . 77
5.4. Interfaz del cliente Weka que permite solicitar clasificadores con informa-
ción global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.5. Interfaz del cliente Weka aplicando el clasificador obtenido del NCC . . . 79
5.6. Gráfica de comportamiento de los clasificadores ID3y C4.5 experimento 1 81
5.7. Gráfica de comportamiento de los clasificadores ID3 y C4.5 para el expe-
rimento 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.8. Gráfica de comportamiento de los clasificadores ID3 y C4.5 para el expe-
rimento 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

VI
Índice de Tablas

2.1. Conjunto de datos para decidir el aplicar un fármaco . . . . . . . . . . . 21


2.2. Cálculo de la ganancia de información para seleccionar atributo separador. 22
2.3. Subconjunto de datos para presión arterial alta. . . . . . . . . . . . . . . 23
2.4. Subconjunto de datos para presión arterial media. . . . . . . . . . . . . 23
2.5. Subconjunto de datos para presión arterial baja. . . . . . . . . . . . . . 23
2.6. Cálculo de la ganancia de información para subconjunto Presión arterial alta 24
2.7. Subconjunto de datos para otras alergias si . . . . . . . . . . . . . . . . 25
2.8. Subconjunto de datos para otras alergias no . . . . . . . . . . . . . . . 25
2.9. Cálculo de la ganancia de información para el subconjunto otras alergias si. 27
2.10. Subconjunto de datos para alergia a antibióticos si . . . . . . . . . . . . 27
2.11. Subconjunto de datos para otras alergias no . . . . . . . . . . . . . . . 27
2.12. Cálculo de la proporción de ganancia. Conjunto de datos de entrada . . . 30
2.13. Conjunto de datos para otras alergias si . . . . . . . . . . . . . . . . . . 31
2.14. Conjunto de datos para otras alergias no . . . . . . . . . . . . . . . . . 31
2.15. Cálculo de la proporción de ganancia para subconjunto de datos otras
alergias si . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

3.1. Weka4Ws, operaciones proveı́das por cada Servicio Web . . . . . . . . . 48


3.2. Caracterı́sticas de las herramientas de minerı́a de datos . . . . . . . . . . 49

4.1. Conjunto de datos nodo A . . . . . . . . . . . . . . . . . . . . . . . . . 57


4.2. Conjunto de datos nodo B . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.1. Resultados algoritmo ID3 para el experimento 1 . . . . . . . . . . . . . 80


5.2. Resultados algoritmo C4.5 para el experimento 1 . . . . . . . . . . . . . 80
5.3. Resultados algoritmo ID3 para el experimento 2 . . . . . . . . . . . . . 84
5.4. Resultados algoritmo C4.5 para el experimento 2 . . . . . . . . . . . . . 84
5.5. Resultados algoritmo ID3 para el experimento 3 . . . . . . . . . . . . . 88
5.6. Resultados algoritmo C4.5 para el experimento 3 . . . . . . . . . . . . . 88

VII
Índice de Algoritmos

1. Algoritmo general de árboles de decisión . . . . . . . . . . . . . . . . . 17


2. Algoritmo ID3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3. Algoritmo C4.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4. Pseudocódigo algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . 68
5. Algoritmo Classifier Builder . . . . . . . . . . . . . . . . . . . . . . . . 69
6. Algoritmo buildTree . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

IX
Publicaciones

Omar Jasso-Luna, Victor Sosa-Sosa and Iván López-Arévalo. Global classifier for confi-
dential data in distributed datasets, in 7th Mexican International Conference on Artificial
Intelligence(MICAI 2008), Springer, Mexico City, Mexico, October 2008.

Omar Jasso-Luna, Victor Sosa-Sosa and Iván López-Arévalo . An approach to building


a Distributed ID3 classifier, in International Symposium on Distributed Computing and
Artificial Intelligence (DCAI 2008), Springer, Salamanca, Spain, October 2008.

Omar Jasso-Luna, Victor Sosa-Sosa and Iván López-Arévalo. Towards a distributed da-
tasets classifier, in 15th International Multi-Conference on Advanced Computer Systems
& Computer Information Systems and Industrial Management Applications (ACS 2008),
Polish Journal of Environmental Studies, Miedzyzdroje, Poland, October 2008.

XI
Resumen

Sistema para explotar servicios de minerı́a de datos a


través de la Web
por

Jorge Omar Jasso Luna


Maestro en Ciencias del Laboratorio de Tecnologı́as de Información
Centro de Investigación y de Estudios Avanzados del Instituto Politécnico Nacional, 2008
Dr. Vı́ctor Jesús Sosa Sosa, Director

Dı́a tras dı́a diversas aplicaciones del área de la ciencia, industria y comercio, entre
otras, están almacenando grandes cantidades de datos a pasos agigantados. Estas fuentes
de datos deben ser analizadas por las organizaciones por medio de técnicas de minerı́a de
datos para descubrir conocimiento en forma de tendencias y/o patrones que ayuden en
el proceso de toma de decisiones o de obtención de pronósticos a futuro. Sin embargo,
existen organizaciones nuevas o pequeñas que aún no cuentan con fuentes de datos lo sufi-
cientemente grandes para detectar patrones que les permita crear pronósticos fiables. Este
tipo de organizaciones pudieran verse beneficiadas si otras organizaciones con fuentes de
datos similares y más grandes compartiesen con ellas sus datos. Desafortunadamente las
organizaciones que cuentan con grandes registros de datos históricos cuentan con polı́ticas
de privacidad que no permiten compartirlas. Es por esto que a pesar de que actualmente
se cuenta con diversas herramientas que hacen posible la minerı́a de datos distribuida
a través de un conjunto de nodos Grid estas no han sido adoptadas por este tipo de
instituciones. Esta situación se debe a que en estas herramientas la generación de una
técnica de minerı́a de datos, como son los árboles de decisión, implica la transferencia del
conjunto de datos a minar al nodo de procesamiento, además de no presentar una manera
de obtener un único clasificador a partir de un conjunto de fuentes de datos homogéneas.

XIII
Lo anterior ocurre porque las herramientas actuales de este tipo tienen como principal
enfoque el distribuir y ejecutar diversas tareas de minerı́a de datos de forma simultánea
aprovechando diversos recursos del cómputo Grid

El objetivo principal de este trabajo de investigación es precisamente ofrecer una so-


lución a estas limitantes. Nuestro enfoque se centra en la construcción de clasificadores
a partir de información global obtenida de un conjunto de nodos locales. Dichos nodos
locales cuentan con un componente que accede a los datos locales, compartiendo sólo
metadatos con un Nodo Central de Cómputo. De esta forma se evita la transferencia
de datos completos desde las fuentes originales al nodo de procesamiento, fomentando
la privacidad de los mismos. Ası́, por medio de este enfoque, organizaciones de diversos
tamaños se ven beneficiadas al tener una manera de construir un clasificador más preciso
que el que les permitirı́a obtener su propio conjunto de datos, con la seguridad de no tener
que compartir el total de su información.

XIV
Abstract

A system to operate data mining services on the Web


by

Jorge Omar Jasso Luna


Master of Science in Laboratory of Information Technology
Research Center for Advance Study from the National Polytechnic Institute, 2008
Dr. Vı́ctor Jesús Sosa Sosa, Advisor

Everyday science, industry and business applications, among others, are storing huge
amount of data in an extremely quickly pace. These data sources must be analysed em-
ploying data mining techniques in order to find knowledge such as patterns and tendencies
that help them in the process of making decisions or getting future predictions. However,
there are new or small organizations that still do not have a large enough data source
to detect patterns that let them to build reliable predictions. These kind of organizations
could be favoured if other organizations, having large similar data source, share their data.
Unfortunately, the organizations with large data source have policies of privacy against
were sharing their information. This situation is because of the fact that in these tools to
get a data mining technique such as decision trees, involves transfering of the complete
data source to the processing node and they do not offer a way of building just one classi-
fier from a set of homogeneous data sources. This feature occurs because the main focus
of these tools is to distribute and execute some data mining tasks to get benefits of all
Grid computing resources.

The main objective of this research work is to present a solution for these problems.
This approach aims to build global information classifiers from a set of local nodes. These

XV
local nodes have a component that can access to local data, sharing just metadata with a
Central Computing Node. In this way the process of transfering whole data from original
source to the processing node is avoided, helping to preserve the privacy of data. Through
this approach, diverse organizations of different size could be favoured by having a way
to build a more precise classifier than the one they could build employing just their own
data set.

XVI
Introducción
1
En este capı́tulo se presenta el contexto en el que se ubica este proyecto de tesis, el
problema que se aborda, las razones que lo motivaron y se definen también sus objetivos
y alcances.

1.1 Introducción

El gran desarrollo de las computadoras en las últimas décadas y el bajo costo del hard-
ware ha potenciado el almacenamiento de grandes cantidades de datos. En la actualidad
aplicaciones cientı́ficas, industriales, de negocios, dedicadas al cuidado de la salud entre
otras operan con grandes volúmenes de información requiriendo almacenar una gran can-
tidad de datos cada dı́a a un ritmo incremental. Para almacenar estos datos, en la mayorı́a
de los casos, estas organizaciones tienden a construir conjuntos de datos centralizados o
almacenes de datos (Data warehouse) que reúnen toda la información de sus filiales dis-
persas geográficamente. Si se desea obtener un mejor provecho de los datos, estos deben

1
2 1.1. Introducción

ser analizados con la finalidad de descubrir tendencias o patrones los cuales representan
conocimiento. Dicho conocimiento es un importante valor para cualquier organización. Es
ası́ que esta situación ha fomentado el desarrollo de herramientas para el tratamiento de la
información, dando lugar a una disciplina conocida como Minerı́a de Datos o data mining.
Esta puede ser definida como el conjunto de técnicas y herramientas aplicadas al proceso
de extraer y presentar conocimiento implı́cito, previamente desconocido, potencialmente
útil y humanamente comprensible, a partir de grandes volúmenes de datos con la finalidad
de predecir tendencias y comportamientos.
Con este objetivo, muchas de estas organizaciones llevan a cabo el análisis de información
empleando técnicas de minerı́a de datos (MD). Existen hoy en dı́a algunas herramientas
que implementan las técnicas de MD. Una de ellas es Weka[34], la cual es una herramien-
ta de MD ampliamente usada que contiene una gran colección del estado del arte de los
algoritmos de aprendizaje máquina escritos en Java. Sin embargo, realizar el minado de
grandes cantidades de datos en un enfoque centralizado requiere de equipo muy poderoso
trabajando con recursos de cómputo de alto rendimiento. Posteriormente y debido a este
problema, la minerı́a distribuida de datos (MDD) apareció y es considerada una estrate-
gia factible. Las herramientas actuales de MDD utilizadas con algoritmos orientados a la
clasificación presentan la necesidad de transferir en su totalidad los datos almacenados
en las fuentes de datos distribuidas, situación que para algunas instituciones no es viable
por el riesgo a la invasión de la privacidad de los mismos. Esta situación motivó a que
en el presente trabajo de investigación se desarrolle una técnica de MDD la cual se basa
especialmente en algoritmos clásicos de clasificación adaptados a un ámbito distribuido y
que evitan la transferencia total de datos al momento de crear un clasificador.
1. Introducción 3

1.2 Definición del problema

Aún cuando hoy en dı́a existen herramientas que presentan una solución a los problemas
de minerı́a de datos complejos y difı́ciles de resolver, mediante enfoque para la minerı́a de
datos distribuida, la mayorı́a de estas tienen como propósito el distribuir diversas tareas
de minerı́a de datos para ser ejecutadas sobre nodos remotos. El objetivo principal es
aprovechar todos los recursos de cómputo globales que en un determinado momento les
puede ofrecer el cómputo Grid. Sin embargo, para que lo anterior sea posible, es necesario
que los datos a ser minados sean transferidos a los nodos de procesamiento remoto,
lo que implica la generación de réplicas abriendo una puerta a la posible invasión a la
privacidad de los mismos. Como un escenario real se plantea el hecho de que existen
pequeñas organizaciones, como las dedicadas al cuidado de la salud, que son nuevas y no
cuentan con repositorio de datos lo suficientemente grande. Hacer el análisis de datos de
un banco de datos pequeño no arrojará buenos resultados que les ayuden en un proceso
de toma de decisiones. Esta situación pudiera mejorar si estas organizaciones pudieran
utilizar fuentes de datos históricas de otras organizaciones más grandes. Sin embargo,
en muchos de los casos esto no es posible debido a polı́ticas de privacidad. De ahı́ la
importancia de diseñar mecanismos de minerı́a de datos que puedan crearse a partir de
fuentes de datos distribuidas y donde sea factible el compartir solo metainformación sin
necesidad de transferir la información original de manera ı́ntegra.

1.3 Motivación

Las herramientas de minerı́a de datos distribuidas que emplean tecnologı́as como el


procesamiento Grid han hecho posible la distribución de tareas de minerı́a de datos sobre
nodos remotos aprovechando todos los recursos disponibles. Su principal enfoque, como
4 1.4. Objetivos

ya se mencionó, es ejecutar diversas tareas en forma paralela ejecutándolas sobre diversos


nodos. Sin embargo, estas herramientas adolecen de una manera de obtener un clasifica-
dor global sin transferir el total de datos que se encuentran distribuidos en nodos remotos.
En el enfoque presentado en estas herramientas es necesario transferir el total de datos a
analizar a un nodo que se encarga de la construcción de un clasificador, lo que desmotiva
el compartir datos en algunas instituciones.
La principal motivación de este trabajo es presentar un herramienta que permita, a partir
de conjuntos de datos homogéneos y distribuidos, la construcción de un clasificador con
conocimiento global, a partir de fuentes de datos distribuidos, empleando solo metainfor-
mación o resúmenes de los datos originales, protegiendo la privacidad de los mismos.

1.4 Objetivos

Objetivo general

Diseñar e implementar una arquitectura de software que permita la construcción de


clasificadores que integran conocimiento global de diferentes fuentes de datos distribuidas
manteniendo la privacidad de los mismos.

Objetivos especı́ficos

Diseñar la arquitectura para soportar la construcción de un clasificador global

Desarrollar un prototipo que implementa esta arquitectura empleando tecnologı́as


Web y RMI
1. Introducción 5

1.5 Alcances y limitaciones

El presente trabajo se enfoca en la construcción de un clasificador global a partir de


conjuntos de datos distribuidos. Toma como premisa que los datos están limpios y que
son homogéneos. Se ofrece un grado de privacidad a las fuentes de datos originales al
proveerlas con mecanismos que sólo generen metainformación. La aspectos de seguridad
en la comunicación de los datos recaen en los mecanismos de seguridad propios de Java.

1.6 Organización del documento

El resto del presente documento se encuentra organizado en 5 capı́tulos, los cuales


presentan la siguiente información:

El capı́tulo 2, Marco teórico, contiene información sobre algunos conceptos sobre


tecnologı́as distribuidas ası́ como minerı́a de datos. Además presenta algunos de los
algoritmos de minerı́a de datos utilizados en esta tesis.

En el capı́tulo 3, Estado del arte, se hace un breve recorrido sobre la historia de las
herramientas de minerı́a de datos más conocidas.

El capı́tulo 4, Diseño e implementación del sistema, contiene el diseño del modelo


del sistema y la descripción de los componentes que lo conforman. Presenta el
proceso para la construcción de un clasificador con información global, ası́ como la
implementación del mismo a través de interfaces para interactuar con el usuario.

El capı́tulo 5, Pruebas, presenta el plan de pruebas implementado para verificar la


funcionalidad y factibilidad del sistema, describe las pruebas empleadas y muestra
los resultados obtenidos.
6 1.6. Organización del documento

El capı́tulo 6, Conclusiones, aportaciones y trabajo futuro, presenta las conclusiones


sobre la funcionalidad y factibilidad del sistema, ası́ como las aportaciones hechas al
área y puntos de vista sobre el posible trabajo futuro que podrı́a mejorar el sistema
para hacerlo más robusto.
Marco teórico
2
El presente capı́tulo ofrece una breve descripción de los conceptos teóricos sobre mi-
nerı́a de datos y tecnologı́as distribuidas, ası́ como los algoritmos relacionados con el
trabajo de tesis.

2.1 Minerı́a de datos

La minerı́a de datos puede ser definida como el conjunto de técnicas, herramientas y


métodos estadı́sticos aplicados al proceso de extraer y presentar conocimiento implı́cito,
previamente desconocido, potencialmente útil y humanamente comprensible, a partir de
grandes volúmenes de datos con la finalidad de predecir tendencias y comportamientos.
Ésta tiene sus bases en varias áreas de las ciencias entre las que destacan la inteligencia
artificial y la estadı́stica. Mediante los modelos extraı́dos, utilizando técnicas de minerı́a
de datos, es posible abordar la solución a problemas de predicción, clasificación y segmen-
tación

7
8 2.1. Minerı́a de datos

2.1.1 La minerı́a de datos en el proceso de descubrimiento de


conocimiento

La minerı́a de datos puede ser vista como una de las etapas o pasos más importante
dentro del proceso de descubrimiento de conocimiento. El descubrimiento de conocimiento
consiste en una secuencia iterativa de los siguientes pasos (Figura 2.1) [9]:

1. Limpieza de los datos. Remueve el ruido y los datos inconsistentes.

2. Integración de los datos. Combina múltiples fuentes de datos.

3. Selección de los datos. Obtiene de la fuente de datos los datos que son más rele-
vantes para las tareas de análisis de datos

4. Minerı́a de datos. Proceso esencial donde métodos inteligentes son aplicados para
extraer patrones de datos.

5. Evaluación de patrones. Identifica los patrones verdaderamente interesantes que


representan el conocimiento basado en algunas medidas de interés.

6. Representación del conocimiento. Presenta el conocimiento minado al usuario apoyándo-


se en técnicas de representación de conocimiento y visualización.

2.1.2 Tareas de la minerı́a de datos

Apoyada en los métodos que la conforman, la minerı́a de datos puede llevar a cabo un
conjunto de tareas para realizar el análisis de los datos desde distintas técnicas buscando
encontrar la más adecuada para el conjunto de datos en cuestión. Entre estas tareas están:

Clasificación/Predicción. Es el proceso de encontrar un modelo que describe y dis-


tingue las clases de datos o conceptos con el propósito de usarlos para clasificar
nuevas instancias.
2. Marco teórico 9

Conocimiento
Evaluación y 
presentación

12

10
Columna 
8 1
6 Columna 
Minería de  2
4
datos 2
Columna 
3
0
Fila 1 Fila 2 Fila 3 Fila 4

Patrones
Selección y 
transformación

Data Warehouse

Limpieza e 
integración de datos

Bases de datos

Figura 2.1: Minerı́a de datos como un paso del proceso de descubrimiento de conocimiento

Agrupamiento (clustering ). Contrario a la clasificación/predicción, el agrupamiento


o clustering analiza objetos de datos sin consultar una clase conocida. En general las
clases no son conocidas en el conjunto de entrenamiento, el objetivo es encontrarlas
formando grupos con base en la similaridad de los ejemplos de entrenamiento.

Reglas de clasificación. Son una alternativa para los árboles de decisión. Formadas
por un antecedente o precondición, el cual es una serie de pruebas similares a las
pruebas de cada nodo en los árboles de decisión. El consecuente o conclusión da
la clase o clases que aplican a las instancias cubiertas por la regla. Generalmente
todas las precondiciones están unidas por conjunciones o cláusulas AND.

Reglas de asociación. A diferencia de las reglas de clasificación, las reglas de aso-


ciación pueden predecir cualquier atributo, no solo la clase. También es factible
predecir combinaciones de atributos
10 2.2. Clasificación y predicción

2.2 Clasificación y predicción

La clasificación y la predicción son dos formas de análisis de datos que pueden ser
usadas para extraer modelos que describen importantes clases de datos o predicen ten-
dencias futuras de los datos. Este análisis permite tener un mejor entendimiento de los
datos a gran escala. En la clasificación es construido un modelo o “clasificador” para
predecir clases categóricas. Algunos ejemplos son lo “seguro” o “riesgoso” que es hacer
un préstamo a un cliente para una aplicación bancaria; el predecir “si” un cliente com-
prará cierto producto o “no” de acuerdo a su historial en una tienda departamental; el
aplicar el “tratamiento A”, “tratamiento B” o “tratamiento C” para un aplicación médica
de acuerdo al historial clı́nico de un paciente. Contrario a la clasificación categórica en la
predicción se construye un “predictor” cuyo modelo busca predecir una función de valor
continuo. Un ejemplo de esto serı́a el predecir cuanto dinero se gastará un cliente en la
tienda departamental[9]. La clasificación y predicción numérica son los dos tipos princi-
pales de problemas de predicción.
Dado que el presente trabajo de investigación se enfoca en tareas de clasificación, a con-
tinuación se presentan algunos conceptos relacionados con este tema.

Conjunto de entrenamiento. El conjunto de entrenamiento es el grupo de instan-


cias, tuplas, casos o registros históricos de una fuente de datos los cuales cuentan
con una clase definida y son usados para construir un clasificador a partir del análisis
de los mismos.

Conjunto de prueba. Es el conjunto de instancias, tuplas, casos o registros históri-


cos de una fuente de datos que cuentan con una clase definida y son seleccionados
de manera aleatoria del conjunto de datos general. Este conjunto de prueba es
independiente del conjunto de entrenamiento, de manera que no participan en la
2. Marco teórico 11

construcción del clasificador. Es usado para medir la exactitud del clasificador ge-
nerado.

Atributo clase o clase objetivo. Es un valor discreto y sin orden que identifica o
etiqueta a un conjunto de registros o casos históricos.

Exactitud de un clasificador. La exactitud de un clasificador sobre un conjunto


de prueba es el porcentaje de instancias o tuplas que son correctamente clasificadas
por el clasificador.

Aprendizaje supervisado. Es una técnica de aprendizaje máquina para aprender


una función a partir de un conjunto de entrenamiento dado[17]. Este conjunto de
entrenamiento consiste en parejas de entradas de objetos y salidas deseadas. La
salida de la función puede ser un valor continuo (regresión) o puede predecir una
clase de un objeto de entrada (clasificación). La tarea del aprendiz supervisado es
predecir el valor de dicha función para cualquier objeto de entrada válido después de
haber examinado un conjunto de instancias de entrenamiento (instancias de ejemplo
con una clase dada).

2.2.1 Clasificación Bayesiana

Los clasificadores bayesianos son clasificadores estadı́sticos. Basados en el teorema de


Bayes, estos pueden predecir la probabilidad de que una instancia dada pertenezca a una
clase en particular. Uno de los clasificadores bayesianos que presentan un mejor desempeño
es el clasificador bayesiano naive.

Clasificador naive

El clasificador naive Bayes es considerado como parte de los clasificadores proba-


bilı́sticos, los cuales se basan en la suposición que las cantidades de interés se rigen por
12 2.2. Clasificación y predicción

distribuciones de probabilidad, y que la decisión óptima puede tomarse por medio de ra-
zonar acerca de esas probabilidades junto con los datos observados[17]. Este algoritmo,
descrito a continuación, se encuentra entre los más utilizados para tareas de clasificación
de textos.

El clasificador es construido usando D (conjunto de entrenamiento) para estimar la


probabilidad de cada clase. Entonces cuando una nueva instancia ij es presentada, el
clasificador le asigna la categorı́a c ∈ C más probable para aplicar la regla:

c = argmaxci ∈C P (ci |ij ) (2.1)

empleando el teorema de Bayes para estimar la probabilidad tenemos

P (ij |ci )P (ci )


c = argmaxci ∈C (2.2)
P (ij )

el denominador en la ecuación anterior no difiere entre categorı́as y puede omitirse

c = argmaxci ∈C P (ij |ci )P (ci ) (2.3)

tomando en cuenta que el esquema es llamado “naive” debido al supuesto de indepen-


dencia entre atributos, por ejemplo se asume que las caracterı́sticas son condicionalmente
independientes dada las clases. Esto simplifica los cálculos produciendo

c = argmaxci ∈C P (ci )Πnk=1 P (akj |ci ) (2.4)

donde P (ci ) es la fracción de ejemplos en D que pertenecen a la clase ci , y P (akj |ci )


es calculado de acuerdo al teorema de Bayes. En resumen, la tarea de aprendizaje en
el clasificador naive Bayes consiste en construir una hipótesis por medio de estimar las
diferentes probabilidades P (ci ) y P (akj |ci ) en términos de sus frecuencias sobre D.
2. Marco teórico 13

2.2.2 k-Vecinos Más Cercanos

k-Vecinos más cercanos (kNN por sus siglas en inglés) es uno de los métodos de
aprendizaje basados en instancias más básicos. Este algoritmo no tiene una fase de entre-
namiento fuera de lı́nea, por lo tanto, el principal cálculo se da en lı́nea cuando se localizan
los k vecinos más cercanos. La idea en el algoritmo es almacenar el conjunto de entre-
namiento, de modo tal que para clasificar una nueva instancia, se busca en los ejemplos
almacenados casos similares y se les asigna la clase más probable en éstos [9, 35].
En este algoritmo, una manera común de encontrar los k ejemplos más cercanos a la
instancia iq es por medio de la distancia Euclidiana, donde la distancia entre las instancias
ij e iq es definida por la siguiente ecuación:

v
u |A|
uX
d(ij , iq ) ≡ t (akj − akq )2 (2.5)
k=1

El algoritmo kNN es resumido a continuación:

Entrenamiento:

Para cada ejemplo en D, agregar el ejemplo a la lista ejemplos entrenamiento

Clasificación:

Dada una instancia de prueba iq a ser clasificada,

Sean i1 , . . . , ik los k ejemplos de la lista entrenamiento que son más cercanos a iq

Regresar

k
X
c = argmaxci ∈C δ(ci , cij ) (2.6)
j=1

donde δ(a, b) = 1 si a = b y δ(a, b) = 0 en otro caso.


14 2.2. Clasificación y predicción

Figura 2.2: Problema de clasificación linealmente separable

2.2.3 Máquinas de Vectores de Soporte

En términos geométricos las máquinas de vectores de soporte (SVM, por sus siglas en
inglés) pueden ser vistas como el intento de encontrar una superficie (σi ) que separe a los
ejemplos positivos de los negativos por el margen más amplio posible [10]. La búsqueda
de σi que cumple que la distancia mı́nima entre él y un ejemplo de entrenamiento sea
máxima, se realiza a través de todas las superficies σ1 , σ2 , . . . en el espacio |A|-dimensional
que separan a los ejemplos positivos de los negativos en el conjunto de entrenamiento
(conocidas como superficies de decisión). Para entender mejor la idea detrás del algoritmo
SVM tomaremos el caso en el que los ejemplos positivos y negativos son linealmente
separables, por lo tanto las superficies de decisión son (|A|-1)-hiperplanos. Por ejemplo,
en el caso de dos dimensiones varias lineas pueden ser tomadas como superficies de decisión
(figura 2.2), entonces el método SVM elige el elemento medio del conjunto más ancho de
lineas paralelas, por ejemplo, desde el conjunto en el que la distancia máxima entre dos de
sus elementos es la mayor. Cabe resaltar que la mejor superficie de decisión es determinada
únicamente por un conjunto pequeño de ejemplos de entrenamiento, llamados vectores
de soporte (en la figura 2.2 los cuadros distinguen los vectores de soporte).

Una ventaja importante de esta técnica es que permite construir clasificadores no


lineales, por ejemplo, el algoritmo representa datos de entrenamiento no lineales en un
2. Marco teórico 15

espacio de alta dimensionalidad (llamado el espacio de caracterı́sticas), y construye el


hiperplano que tiene el margen máximo (ver figura 2.3). Además, debido al uso de una
función kernel para realizar el mapeo, es posible calcular el hiperplano sin representar
explı́citamente el espacio de caracterı́sticas.

Figura 2.3: Mapeo de datos no lineales a un espacio de mayor dimensionalidad

2.2.4 Clasificación por arboles de decisión

Un árbol de decisión (Figura 2.4) es una estructura de flujo de trabajo similar a un


árbol, donde cada nodo interno (nodo no hoja) representa una prueba sobre un atributo,
cada rama representa un resultado de la prueba, y cada nodo hoja (nodo terminal) contiene
una etiqueta clase y el nodo de más alto nivel representa el nodo raı́z.
A finales de 1970 e inicios de 1980 J. Ross Quinlan, un investigador en aprendizaje
máquina desarrolló un algoritmo de árbol de decisión llamado ID3[25] (Iterative Dichoto-
miser). Tiempo después Quinlan presentó el algoritmo C4.5[26] (sucesor de ID3), el cual
llegó a ser un benchmark sobre el cual nuevos algoritmos de aprendizaje supervisado son
frecuentemente comparados. En 1984 un grupo de estadı́sticos (L. Breiman, J. Friedman,
R. Olshen y C. Stone) publicaron el libro Classification and Regression Trees (CART) [4]
el cual describió la generación de árboles de decisión binarios. El ID3 y el CART fueron
inventados independientemente uno del otro al mismo tiempo, siguiendo un enfoque si-
milar para aprender árboles de decisión de instancias o tuplas de entrenamiento.
16 2.2. Clasificación y predicción

Figura 2.4: Árbol de decisión para el concepto de aplicar fármaco, indicando si es adecuado
suministrarle un fármaco a un paciente.

Los algoritmos ID3, C4.5 y CART adoptaron un enfoque voraz bajo el cual los árboles
de decisión son construidos en un enfoque descendente y bajo la filosofı́a de “divide y
vencerás”. La mayorı́a de los algoritmos para inducción de árboles de decisión siguen un
enfoque descendente, el cual inicia con un conjunto de entrenamiento que cuenta con sus
etiquetas de clases. Después el conjunto de entrenamiento es particionado en pequeños
subconjuntos cuando el árbol está siendo construido. El algoritmo 1, es el algoritmo ge-
neral para la construcción de un árbol de decisión.

2.2.4.1. Métodos de selección de atributo de separación

A continuación se presentan los métodos y medidas de selección utilizadas en el proceso


de selección del atributo de separación.

Entropı́a

La entropı́a[28] es la medida del grado de incertidumbre asociado a una distribución


de probabilidad. Está representada por la fórmula:
2. Marco teórico 17

Algoritmo 1 Algoritmo general de árboles de decisión


ENTRADA: D ←− conjunto de entrenamiento
ENTRADA: R ←− atributos no clasif icadores
ENTRADA: metodo seleccion atributo
SALIDA: Árbol de decisión
Genera arbol decision(D,R,metodo seleccion atributo)
1: crea un nodo N
2: SI las tuplas en D son todas de una misma clase de C ENTONCES
3: REGRESA N como un nodo hoja etiquetado con la clase C
4: FIN SI
5: SI R es vacı́o ENTONCES
6: REGRESA N como un nodo hoja etiquetado con la clase mayoritaria en D
7: SINO
8: sea A el atributo de separación
9: aplica metodo seleccion atributo(D,R) para encontrar A
10: asigna A al nodo N
11: sean aj |j = 1, 2, ..., m los valores de A
12: PARA CADA resultado j de particionar D respecto a A HACER
13: Sea Dj el conjunto de instancias en D que satisfacen a aj
14: agrega al nodo N el nodo devuelto por Genera arbol decision (Dj − A,R −
A,metodo seleccion atributo)
15: FIN PARA
16: REGRESA N
17: FIN SI

H(D) = −Σm
i=1 pi log2 pi (2.7)

donde D es el conjunto de entrenamiento, pi es la probabilidad de que una instancia


arbitraria pertenezca a la clase Ci y es estimada por |Ci,D |/|D| y m es el número de clases
posibles. Una función logarı́tmica es usada dado que la información es codificada en bits.
18 2.2. Clasificación y predicción

Ganancia de información

Es la medida que indica la cantidad de información que una variable aleatoria X (atri-
buto de un ejemplo dado) aporta al momento de determinar el valor de otra variable Y
(clase a la que pertenece el ejemplo). Esta dada por la formula:

|Dj |
G(D, A) = H(D) − ΣjA H(Dj ) (2.8)
|D|

donde D es el conjunto de entrenamiento, A es cada uno de los atributos no clasificador


y Dj es cada uno de los subconjuntos generados de particionar D respecto a A.

Proporción de ganancia

La proporción de ganancia (GR) es una extensión del método de selección ganancia de


información. Intenta resolver la parcialidad que la ganancia de información presenta sobre
los atributos que cuentan con un gran número de posibles valores. Para llevar a cabo esta
mejora, aplica una cierta normalización de la ganancia de la información. La proporción
de ganancia para un atributo A en D está representada por la fórmula 2.9

G(D, A)
GR(D, A) = (2.9)
SI(D, A)

donde, SI(D, A) es un valor de “separación de la información” definido de manera


análoga a la entropı́a H(D) por la fórmula 2.10

|Dj | |Dj |
SI(D, A) = −Σm
j=1 × log2 (2.10)
|D| |D|
2. Marco teórico 19

2.2.4.2. Algoritmo ID3

Introducido por Quinlan en 1986, el algoritmo ID3 genera árboles de decisión a partir
de un conjunto de entrenamiento. La terminologı́a usada en este contexto para denominar
a la cantidad de información mutua es la de la ganancia de la información.
El algoritmo ID3 se muestra en Algoritmo 2:

Algoritmo 2 Algoritmo ID3


ENTRADA: D ←− conjunto de entrenamiento
ENTRADA: C ←− atributo clasif icador
ENTRADA: R ←− atributos no clasif icadores
SALIDA: Árbol de decisión
ID3(R, C, D)
1: sea N un nuevo nodo
2: SI |D| = 0 ENTONCES
3: REGRESA Error
4: FIN SI
5: SI |C| ∈ D = 1 ENTONCES
6: REGRESA N ← Ci
7: FIN SI
8: SI |R| = 0 ENTONCES
9: REGRESA N ← Ci mayoritaria en D
10: SINO
11: A ← atributo con mayor Ganancia(R, D)
12: N ←A
13: sean aj |j = 1, 2, ..., m los valores del atributo A
14: sean Dj |j = 1, 2, ..., m los subconjuntos de D correspondientes a valores de aj
15: N ← N + ID3(R − A,C,D1 ),ID3(R − A,C,D2 ),...,ID3(R − A,C,Dm )
16: REGRESA N
17: FIN SI

El algoritmo ID3 efectúa los siguientes pasos:

1. Seleccionar el atributo Ai que maximice la ganancia, es decir el que tenga menor


entropı́a.
20 2.2. Clasificación y predicción

2. Crear un nodo para ese atributo, con tantos sucesores como valores tenga.

3. Introducir los ejemplos en los sucesores según el valor que tenga el atributo Ai .

4. Por cada sucesor:


SI solo hay ejemplos de una clase Ck ENTONCES etiquetarlo con Ck
SINO llamar al ID3 con una tabla formada por los ejemplos de ese nodo eliminando
la columna del atributo Ai

ID3 intenta encontrar el árbol más sencillo que separa mejor los ejemplos. Para ello
utiliza la entropı́a para elegir o tomar decisiones.

Ejemplo

Para ejemplificar el funcionamiento del algoritmo ID3 usaremos el conjunto de datos


de la Tabla 2.1 como conjunto de entrenamiento D. Este conjunto de datos cuenta con
14 instancias. Su atributo clasificador C es el atributo Administrar fármaco el cual cuenta
con dos posibles clases si y no. Su conjunto de atributos no clasificadores R está formado
por los cinco atributos restantes.
Al iniciar, dado que el conjunto de entrenamiento D no es vacı́o, el atributo clasificador C
cuenta con más de una clase y R no es vacı́o se procede a buscar cuál de los atributos en
R ofrece mayor ganancia. Para calcular la ganancia de cada atributo, primero se calcula
la entropı́a general del conjunto de datos empleando la ecuación 2.7.

10 10 4 4
H(D) = − log2 ( ) − log2 ( )
14 14 14 14
H(D) = 0,8631

Para calcular la entropı́a se considera la probabilidad de que una instancia pertenezca a la


2. Marco teórico 21

Presión ar- Azúcar en Alergia a Otras aler- Administrar


terial la sangre Índice de antibióticos gias fármaco
colesterol
alta alto alto no no si
alta alto alto si no si
baja alto bajo no no si
media alto alto no si no
media bajo alto si si no
baja bajo alto si si si
alta bajo alto si no si
alta bajo bajo no si si
alta alto bajo si si no
baja bajo alto si si si
media bajo bajo si si si
alta bajo alto si si no
baja alto alto si si si
baja alto bajo no no si

Tabla 2.1: Conjunto de datos para decidir el aplicar un fármaco

clase si (10/14) o a la clase no (4/14). Enseguida se obtiene la ganancia de cada atributo en


R empleando la ecuación 2.8:

Como se muestra en la Tabla 2.2, el atributo que ofrece mayor ganancia es el atributo presión
arterial, por lo que se convierte en el atributo separador y raı́z del árbol de decisión (Figura 2.5).
Note que para obtener la ganancia de cada atributo no clasificador, se calcula la entropı́a para
cada valor que puede tomar el atributo.
Tomando el atributo presión arterial como atributo separador obtenemos ahora tres subconjuntos
o particiones a partir del conjunto de entrenamiento inicial (Tabla 2.3, Tabla 2.4 y Tabla 2.5).
Estos subconjuntos corresponden a cada uno de los tres valores posibles del atributo presión
arterial.

Hasta este paso ya se tiene un nodo raı́z con tres ramas (Figura 2.5). A continuación se
toma alguno de los subconjuntos de datos. Para este ejemplo tomaremos el subconjunto de
datos de la Tabla 2.3 y ahora pasará a ser nuestro nuevo conjunto de entrenamiento D. De
manera iterativa se vuelve a repetir el proceso anterior. Primero obtenemos la entropı́a general:
22 2.2. Clasificación y predicción

6
G(D, Rpresion ) = 0,8631 − [ 14 × (− 64 log2 ( 64 ) − 26 log2 ( 62 )) (alta)
3
14
× (− 31 log2 ( 13 ) − 23 log2 ( 32 )) (media)
5
14
× (− 55 log2 ( 55 ) − 05 log2 ( 50 ))] (baja)
G(D, Rpresion ) = 0.27

7
G(D, Razucar ) = 0,8631 − [ 14 × (− 75 log2 ( 75 ) − 27 log2 ( 72 )) (alto)
7
14
× (− 75 log2 ( 57 ) − 27 log2 ( 72 ))] (bajo)
G(D, Razucar ) = 0

9
G(D, Rcolesterol ) = 0,8631 − [ 14 × (− 96 log2 ( 96 ) − 39 log2 ( 93 )) (alto)
5
14
× (− 54 log2 ( 45 ) − 15 log2 ( 51 ))] (bajo)
G(D, Rcolesterol ) = 0,01

9
G(D, Rantibioticos ) = 0,8631 − [ 14 × (− 96 log2 ( 96 ) − 39 log2 ( 93 )) (si)
5
14
× (− 54 log2 ( 45 ) − 15 log2 ( 51 ))] (no)
G(D, Rantibioticos ) = 0,01

9
G(D, Rotras ) = 0,8631 − [ 14 × (− 95 log2 ( 95 ) − 49 log2 ( 94 )) (si)
5
14
× (− 55 log2 ( 55 ) − 05 log2 ( 50 ))] (no)
G(D, Rotras ) = 0,23
Tabla 2.2: Cálculo de la ganancia de información para seleccionar atributo separador.

4 4 2 2
H(D) = − log2 ( ) − log2 ( )
6 6 6 6
H(D) = 0,9182

y enseguida la ganancia de información de los atributos no clasificadores (Tabla 2.6):

Ahora con base en los resultados de la Tabla 2.6 vemos que el atributo otras alergias es

Figura 2.5: Construcción del árbol. Paso 1


2. Marco teórico 23

Azúcar en Alergia a Otras aler- Administrar


la sangre Índice de antibióticos gias fármaco
colesterol
alto alto no no si
alto alto si no si
bajo alto si no si
bajo bajo no si si
alto bajo si si no
bajo alto si si no

Tabla 2.3: Subconjunto de datos para presión arterial alta.

Azúcar en Alergia a Otras aler- Administrar


la sangre Índice de antibióticos gias fármaco
colesterol
alto alto no si no
bajo alto si si no
bajo bajo si si si

Tabla 2.4: Subconjunto de datos para presión arterial media.

Azúcar en Alergia a Otras aler- Administrar


la sangre Índice de antibióticos gias fármaco
colesterol
alto bajo no no si
bajo alto si si si
bajo alto si si si
alto alto si si si
alto bajo no no si

Tabla 2.5: Subconjunto de datos para presión arterial baja.


24 2.2. Clasificación y predicción

G(D, Razucar ) = 0,9182 − [ 36 × (− 23 log2 ( 32 ) − 13 log2 ( 13 )) (alto)


3
6
× (− 32 log2 ( 23 ) − 13 log2 ( 31 ))] (bajo)
G(D, Razucar ) = 0

G(D, Rcolesterol ) = 0,9182 − [ 46 × (− 34 log2 ( 43 ) − 14 log2 ( 14 )) (alto)


2
6
× (− 21 log2 ( 12 ) − 12 log2 ( 21 ))] (bajo)
G(D, Rcolesterol ) = 0,04

G(D, Rantibioticos ) = 0,9182 − [ 64 × (− 22 log2 ( 22 ) − 22 log2 ( 22 )) (si)


2
6
× (− 22 log2 ( 22 ) − 02 log2 ( 20 ))] (no)
G(D, Rantibioticos ) = 0,25

G(D, Rotras ) = 0,9182 − [ 63 × (− 13 log2 ( 31 ) − 23 log2 ( 23 )) (si)


3
6
× (− 33 log2 ( 33 ) − 03 log2 ( 30 ))] (no)
G(D, Rotras ) = 0.46
Tabla 2.6: Cálculo de la ganancia de información para subconjunto Presión arterial alta

Figura 2.6: Construcción del árbol. Paso 2

el que ofrece mayor ganancia de información. Debido a esto se convierte en nodo hijo de la
rama alta de presión arterial (Figura 2.6). Ahora este atributo pasa a ser el atributo separador
formándose los subconjuntos de las Tablas 2.7 y 2.8:

Ahora tomamos el subconjunto de datos de la Tabla 2.7. Este subconjunto se convierte en


el nuevo conjunto de entrenamiento D y se vuelve a repetir el proceso de forma iterativa:
2. Marco teórico 25

Azúcar en Alergia a Administrar


la sangre Índice de antibióticos fármaco
colesterol
bajo bajo no si
alto bajo si no
bajo alto si no

Tabla 2.7: Subconjunto de datos para otras alergias si

Azúcar en Alergia a Administrar


la sangre Índice de antibióticos fármaco
colesterol
alto alto no si
alto alto si si
bajo alto si si

Tabla 2.8: Subconjunto de datos para otras alergias no

1 1 2 2
H(D) = − log2 ( ) − log2 ( )
3 3 3 3
H(D) = 0,9182

se obtiene la entropı́a general para el nuevo conjunto y después la ganancia de información


(Tabla 2.9).

Ahora el atributo que ofrece mayor ganancia conforme la Tabla 2.9 es el atributo alergia a
antibióticos. Este se convierte en el atributo separador y se agrega como nuevo nodo a la rama
presión arterial=alta, otras alergias=si (Figura 2.7). Ahora obtenemos los subconjuntos de las
Tablas 2.10 y 2.11.

A continuación tomamos el subconjunto de la Tabla 2.10 como nuevo conjunto de entre-


namiento D y repetimos el proceso. Sin embargo como este nuevo conjunto de entrenamiento
sólo tiene un solo valor diferente en su atributo clasificador C aplicar fármaco se devuelve un
nuevo nodo con ese valor. Se ha alcanzado un hoja (Figura 2.8).

Como se ha llegado al fin de una rama, subimos un nivel y ahora tomamos el subconjunto
26 2.2. Clasificación y predicción

Figura 2.7: Construcción del árbol. Paso 3

Figura 2.8: Construcción del árbol. Paso 4


2. Marco teórico 27

G(D, Razucar ) = 0,9182 − [ 13 × (− 10 log2 ( 10 ) − 11 log2 ( 11 )) (alto)


2
3
× (− 12 log2 ( 12 ) − 21 log2 ( 12 ))] (bajo)
G(D, Razucar ) = 0,25

G(D, Rcolesterol ) = 0,9182 − [ 13 × (− 10 log2 ( 10 ) − 11 log2 ( 11 )) (alto)


2
3
× (− 12 log2 ( 12 ) − 21 log2 ( 12 ))] (bajo)
G(D, Rcolesterol ) = 0,25

G(D, Rantibioticos ) = 0,9182 − [ 23 × (− 20 log2 ( 20 ) − 22 log2 ( 22 )) (si)


1
3
× (− 11 log2 ( 11 ) − 20 log2 ( 02 ))] (no)
G(D, Rantibioticos ) = 0.9182

Tabla 2.9: Cálculo de la ganancia de información para el subconjunto otras alergias si.

Azúcar en Administrar
la sangre Índice de fármaco
colesterol
alto bajo no
bajo alto no

Tabla 2.10: Subconjunto de datos para alergia a antibióticos si

de la Tabla 2.11 como nuevo conjunto de entrenamiento D. Al igual que en el paso anterior,
este nuevo conjunto sólo cuenta con un único valor diferente en su atributo clasificador. Por lo
tanto, se crea un nuevo nodo hoja con el valor de esa clase (Figura 2.9).

Como el nodo alergia a antibióticos ya no cuenta con más ramas se ha terminado de


expandirlo. Ahora regresamos al nodo otras alergias y tomamos el subconjunto de la Tabla 2.8
como nuevo conjunto de entrenamiento D.
Este proceso se repite de manera iterativa realizando una búsqueda primero en profundidad por
cada rama hasta obtener el árbol ilustrado en la figura 2.10.

Azúcar en Administrar
la sangre Índice de fármaco
colesterol
bajo bajo si

Tabla 2.11: Subconjunto de datos para otras alergias no


28 2.2. Clasificación y predicción

Figura 2.9: Construcción del árbol. Paso 5

Figura 2.10: Árbol final


2. Marco teórico 29

2.2.4.3. Algoritmo C4.5

Es una mejora del ID3. Se basa en la utilización del criterio proporción de ganancia. De esta
manera se consigue evitar que las variables con mayor número de posibles valores salgan bene-
ficiadas en la selección. Además el algoritmo C4.5 incorpora una poda del árbol de clasificación
una vez que este se ha inducido. La poda está basada en un test de hipótesis que trata de
responder a la pregunta de si merece la pena expandir o no una determinada rama. El algoritmo
C4.5 se presenta en el algoritmo 3.

Algoritmo 3 Algoritmo C4.5


ENTRADA: D ←− conjunto de entrenamiento
ENTRADA: C ←− atributo clasif icador
ENTRADA: R ←− atributos no clasif icadores
SALIDA: Árbol de decisión
C4.5(R, C, D)
1: sea N un nuevo nodo
2: SI |D| = 0 ENTONCES
3: REGRESA Error
4: FIN SI
5: SI |C| ∈ D = 1 ENTONCES
6: REGRESA N ← Ci
7: FIN SI
8: SI |R| = 0 ENTONCES
9: REGRESA N ← Ci mayoritaria en D
10: SINO
11: A ← atributo con mayor Proporción de Ganancia(R, D)
12: N ←A
13: sean aj |j = 1, 2, ..., m los valores del atributo A
14: sean Dj |j = 1, 2, ..., m los subconjuntos de D correspondientes a valores de aj
15: N ← N + C4.5(R − A,C,D1 ),C4.5(R − A,C,D2 ),...,C4.5(R − A,C,Dm )
16: REGRESA N
17: FIN SI
30 2.2. Clasificación y predicción

Ejemplo algoritmo C4.5

Como un ejemplo de la construcción de un árbol de decisión con el algoritmo C4.5 tomaremos


de nueva cuenta el conjunto de datos de la Tabla 2.1. A diferencia del algoritmo ID3, el C4.5
usa la proporción de ganancia (Ecuaciones 2.9 y 2.10) como método de selección del atributo
separador. Con base en este método obtenemos las proporciones de ganancia para los atributos
no clasificadores R (Tabla 2.12).

6 6 3 3 5 5
GR(D, Rpresion ) = 0,27 / [− 14 log2 ( 14 )− 14
log2 ( 14 ) − 14
log2 ( 14 )]
GR(D, Rpresion ) = 0,17

7 7 7 7
GR(D, Razucar ) = 0 / [− 14 log2 ( 14 )− 14
log2 ( 14 )]
GR(D, Razucar ) = 0

9 9 5 5
GR(D, Rcolesterol ) = 0,01 / [− 14 log2 ( 14 )− 14
log2 ( 14 )]
GR(D, Rcolesterol ) = 0,01

9 9 5 5
GR(D, Rantibioticos ) = 0,01 / [− 14 log2 ( 14 )− 14
log2 ( 14 )]
GR(D, Rantibioticos ) = 0,01

9 9 5 5
GR(D, Rotras ) = 0,23 / [− 14 log2 ( 14 )− 14
log2 ( 14 )]
GR(D, Rotras ) = 0.24

Tabla 2.12: Cálculo de la proporción de ganancia. Conjunto de datos de entrada

Como se aprecia en la Tabla 2.12, el atributo que ofrece mayor proporción de ganancia es
el atributo otras alergias. A diferencia del algoritmo ID3 donde el atributo presión arterial era el
nodo raı́z, con base en el algoritmo C4.5 ahora el atributo otras alergias se convierte en el nodo
raı́z con dos ramas (Figura 2.11). Al separar el conjunto de datos de entrada con base en este
atributo obtenemos los subconjuntos de las Tablas 2.13 y 2.14.
Tomando el subconjunto de la Tabla 2.13 se obtienen las proporciones de ganancia de la
Tabla 2.15
Los resultados de la Tabla 2.15 muestran que el atributo con mayor proporción de ganancia
es presión arterial por lo que se convierte en el nodo hijo de la rama otras alergias si (Figura
2. Marco teórico 31

Figura 2.11: Árbol de decisión C4.5 paso 1

Presión ar- Azúcar en Alergia a Administrar


terial la sangre Índice de antibióticos fármaco
colesterol
media alto alto no no
media bajo alto si no
baja bajo alto si si
alta bajo bajo no si
alta alto bajo si no
baja bajo alto si si
media bajo bajo si si
alta bajo alto si no
baja alto alto si si

Tabla 2.13: Conjunto de datos para otras alergias si

Presión ar- Azúcar en Alergia a Administrar


terial la sangre Índice de antibióticos fármaco
colesterol
alta alto alto no si
alta alto alto si si
baja alto bajo no si
alta bajo alto si si
baja alto bajo no si

Tabla 2.14: Conjunto de datos para otras alergias no


32 2.2. Clasificación y predicción

GR(D, Rpresion ) = 0,37 / [− 39 log2 ( 39 ) − 39 log2 ( 93 ) − 39 log2 ( 39 )]


GR(D, Rpresion ) = 0.24

GR(D, Razucar ) = 0,07 / [− 93 log2 ( 39 ) − 69 log2 ( 96 )]


GR(D, Razucar ) = 0,07

GR(D, Rcolesterol ) = 0,01 / [− 69 log2 ( 69 ) − 39 log2 ( 93 )]


GR(D, Rcolesterol ) = 0,01

GR(D, Rantibioticos ) = 0 / [− 79 log2 ( 79 ) − 29 log2 ( 92 )]


GR(D, Rantibioticos ) = 0

Tabla 2.15: Cálculo de la proporción de ganancia para subconjunto de datos otras alergias
si

Figura 2.12: Árbol de decisión C4.5 paso 2

2.12).
El proceso continua de manera iterativa al igual que el ID3 hasta obtener el árbol de la figura
2.13

Como se muestra en los ejemplos anteriores, es posible ver que el algoritmo C4.5 obtiene
un árbol de clasificación más eficiente, dado que construye un árbol más pequeño con lo cual
se puede acortar el tiempo del proceso de clasificar nuevas instancias.

Dado que la finalidad de este trabajo de investigación es presentar un enfoque distribuido


para la generación de clasificadores con información global se decidió trabajar con los algoritmos
ID3 y C4.5 debido a su fácilidad de implementación para este enfoque y a que son dos de los
2. Marco teórico 33

Figura 2.13: Árbol de decisión final empleando el algoritmo C4.5

algoritmos clasicos para clasificación.

2.3 Tecnologı́as distribuidas para aplicaciones de


minerı́a de datos
Como una manera de adaptarse a la estructura del funcionamiento real de las organizaciones
actuales muchas aplicaciones de software han tendido a ser implementadas de manera distribuida.
Una aplicación distribuida generalmente ejecuta diversas partes de la misma en máquinas que se
encuentran conectadas a través de una red de computadoras. Las aplicaciones para minerı́a de
datos no han quedado exentas de esta evolución y es por eso que a continuación se introducen
algunas tecnologı́as relevantes para el desarrollo de minerı́a de datos distribuida.

2.3.1 Modelo cliente-servidor

La arquitectura cliente/servidor es un modelo para el desarrollo de sistemas de información


en el que las transacciones se dividen en procesos independientes que cooperan entre sı́ para
intercambiar información, servicios o recursos. Se denomina cliente al proceso que inicia el
diálogo o solicita los recursos y servidor al proceso que responde a las solicitudes.
En este modelo las aplicaciones se dividen de forma que el servidor contiene la parte que debe
ser compartida por varios usuarios, y en el cliente permanece sólo lo particular de cada usuario.
34 2.3. Tecnologı́as distribuidas para aplicaciones de minerı́a de datos

Los clientes generalmente realizan funciones como:

Manejo de la interfaz de usuario.

Captura y validación de los datos de entrada.

Generación de consultas e informes sobre las bases de datos.

Por su parte los servidores realizan, entre otras, las siguientes funciones:

Gestión de periféricos compartidos.

Control de accesos concurrentes a bases de datos compartidas.

Enlaces de comunicaciones con otras redes de área local o extensa.

Siempre que un cliente requiere un servicio lo solicita al servidor correspondiente y éste le


responde proporcionándolo. Normalmente el cliente y el servidor están ubicados en distintos pro-
cesadores. Los clientes se suelen situar en computadoras personales y/o estaciones de trabajo y
los servidores en procesadores departamentales o de grupo.

Entre las principales caracterı́sticas de la arquitectura cliente/servidor se pueden destacar las


siguientes:

El servidor presenta a todos sus clientes una interfaz única y bien definida.

El cliente no necesita conocer la lógica del servidor, sólo su interfaz externa.

El cliente no depende de la ubicación fı́sica del servidor, ni del tipo de equipo fı́sico en el
que se encuentra, ni de su sistema operativo.

Los cambios en el servidor implican pocos o ningún cambio en el cliente.


2. Marco teórico 35

2.3.2 Servicios Web

Un servicio Web (Web service) es un sistema de software diseñado para soportar la inter-
operabilidad máquina-máquina sobre una red [18]. Tiene una interfaz descrita en un formato
procesable por una computadora (WSDL). Distintas aplicaciones de software desarrolladas en
lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma, pueden utilizar
los servicios Web para intercambiar datos en redes como Internet. La interoperabilidad se con-
sigue mediante la adopción de estándares abiertos. Otros sistemas pueden interactuar con los
servicios Web a través de mensajes SOAP transportados usando HTTP y serializados empleando
XML en conjunción con otros estándares relativos a la Web. Las organizaciones OASIS y W3C
[5] son los comités responsables de la arquitectura y reglamentación de los servicios Web. Para
mejorar la interoperabilidad entre distintas implementaciones de servicios Web se ha creado
el organismo WS-I [22], encargado de desarrollar diversos perfiles para definir de manera más
exhaustiva estos estándares.

Ventajas de los servicios Web

Aportan interoperabilidad entre aplicaciones de software independientemente de sus pro-


piedades o de las plataformas sobre las que se instalen.

Los servicios Web fomentan los estándares y protocolos basados en texto, que hacen más
fácil acceder a su contenido y entender su funcionamiento.

Al apoyarse en HTTP, los servicios Web pueden aprovecharse de los sistemas de seguridad
firewall sin necesidad de cambiar las reglas de filtrado.

Permiten que servicios y software de diferentes compañı́as ubicadas en diferentes lugares


geográficos puedan ser combinados fácilmente para proveer servicios integrados.

Permiten la interoperabilidad entre plataformas de distintos fabricantes por medio de


protocolos estándar y abiertos. Las especificaciones son gestionadas por una organización
36 2.3. Tecnologı́as distribuidas para aplicaciones de minerı́a de datos

abierta, la W3C, por tanto no hay secretismos por intereses particulares de fabricantes
concretos y se garantiza la plena interoperabilidad entre aplicaciones.

2.3.3 RMI
RMI es un mecanismo diseñado por Java para soportar llamadas a procedimientos remotos
entre objetos que se ejecutan sobre Máquinas Virtuales Java (JVM). Al ser RMI parte estándar
del entorno de ejecución Java, usarlo provee un mecanismo simple en una aplicación distribuida
que solamente necesita comunicar servidores codificados para Java. Se trata de una implemen-
tación independiente de la plataforma, lo que permite que tanto los objetos remotos como las
aplicaciones cliente, residan en sistemas heterogéneos. Sin embargo no es independiente del
lenguaje, tanto el objeto servidor Java/RMI como el objeto cliente tienen que ser escritos en
Java. Por medio de RMI, un programa Java puede exportar un objeto. A partir de esa operación
este objeto está disponible en la red, esperando conexiones en un puerto TCP. Un cliente puede
entonces conectarse e invocar métodos. La invocación consiste en el “marshalling” o empaque-
tado de los parámetros (utilizando la funcionalidad de serialización que provee Java), luego se
sigue con la invocación del método. Mientras esto sucede el cliente se queda esperando por
una respuesta. Una vez que termina la ejecución el valor de retorno (si lo hay) es serializado y
enviado al cliente. El código cliente recibe este valor como si la invocación hubiera sido local.
Para que un cliente localice un objeto servidor RMI necesita un mecanismo de nombramiento
RMIRegistry que se encuentra en el servidor y mantiene la información sobre los objetos servi-
dores disponibles. Los objetos estarán accesibles para los clientes en forma de URL. El acceso a
un objeto distribuido se realiza mediante una interfaz remota.
Herramientas para minerı́a de datos
3
En este capı́tulo se describe la evolución de las herramientas de minerı́a de datos a través
de varias etapas. Se presentan también algunos desarrollos relevantes que se ubican en alguna
de las etapas de esta evolución.

La minerı́a de datos puede ser vista como una infraestructura que usa una selección de
diferentes algoritmos y métodos estadı́sticos para encontrar patrones y tendencias interesantes
y novedosas en grandes bases de datos. A lo largo de la historia de las herramientas de minerı́a
de datos, podrı́an apreciarse tres fases o etapas de su evolución[27].

3.1 Herramientas de la primera generación

Las herramientas de la primera etapa ofrecen tı́picamente a los usuarios un simple algorit-
mo de minerı́a de datos que opera sobre un conjunto de datos almacenados de manera local.
Algunos ejemplos incluyen el uso de algoritmos de clasificación como el C4.5[26], algoritmos

37
38 3.2. Herramientas de la segunda generación

de agrupamiento como el K-means[15] y otros algoritmos basados en reglas de asociación. Ta-


les herramientas fueron presentadas como programas independientes, obteniendo sus datos de
entrada desde la lı́nea de comandos o vı́a un archivo de configuración.

3.2 Herramientas de la segunda generación


Las herramientas de la segunda etapa combinan una colección de diferentes algoritmos de
minerı́a de datos sobre un marco de trabajo común, y permiten a los usuarios proveer datos de
entrada de varias fuentes de datos. A continuación se describen algunas de estas herramientas:

Weka[34], desarrollado por la Universidad de Waikato en Nueva Zelanda, es un sistema escrito


en Java y distribuido bajo los términos de la licencia pública GNU. Contiene una colección del
estado del arte de los algoritmos de aprendizaje máquina y herramientas de preprocesamien-
to1 de datos escritos en Java. Provee un soporte extenso para el proceso completo de minerı́a
de datos, incluyendo la preparación de los datos de entrada, la evaluación de los esquemas de
aprendizaje, la visualización2 de los datos de entrada y de los resultados del aprendizaje. Esta
herramienta es accedida comúnmente a través de una interfaz común(Figura 3.1) para que sus
usuarios puedan comparar diferentes métodos e identificar esos que sean más apropiados para el
problema a tratar. Puede ser ejecutado desde casi cualquier plataforma y ha sido probado sobre
los sistemas operativos Windows, Linux y Macintosh. En Weka, todo el proceso de minerı́a de
datos se realiza en una sola computadora, dado que los algoritmos pueden ser ejecutados sólo
localmente.
El objetivo principal de Weka son los algoritmos de clasificación, los cuales mapean un conjunto
de instancias con base en un conjunto finito de clases. Cada instancia de los datos es descrita
por los valores de sus atributos. Por ejemplo, predecir si va a llover basado en la observación
1
Comúnmente usada como una etapa preliminar de minerı́a de datos, el preprocesamiento transforma
los datos crudos a un formato en el cual serán más fácil y efectivamente procesados para el propósito
que el usuario desee. El preprocesamiento de los datos comprende la limpieza, integración, reducción y
normalización de los datos.
2
Técnicas para convertir los datos en información imitando la capacidad del cerebro humano para
reconocer visualmente patrones y tendencias.
3. Herramientas para minerı́a de datos 39

Figura 3.1: Explorador de Weka

del cielo, la temperatura del aire, la humedad y el viento puede ser visto como una tarea de
clasificación. La meta del proceso de obtención de un clasificador, es derivar un clasificador de
un conjunto etiquetado de datos (un conjunto de instancias de datos que tienen asignada su
clase correspondiente). La idea es que un clasificador obtenido del conjunto de datos etiquetados
pueda ser usado para predecir las clases de instancias de datos futuras.

IlliMine[19] es otra herramienta de minerı́a de datos la cual es un paquete libre, implementado


en C++ y desarrollada por el Departamento de Ciencias Computacionales de la Universidad
de Illinois en conjunto con el Data Mining Research Group y el DAIS (Data And Information
Systems) Research Laboratory. IlliMine incluye algoritmos de data cubing3 , asociación, minerı́a
de patrones secuenciales4 , minerı́a de patrones gráficos5 y clasificación.

Rattle[33] (the R Analytical Tool To Learn Easily) es una herramienta libre de minerı́a de datos
3
Técnica de manipulación de datos usando estructuras de matrices multidimensionales.
4
Técnica de extracción de patrones en eventos o sucesos secuenciales donde el factor tiempo juega
un papel principal
5
Técnica de extracción de patrones de datos representados a través de grafos
40 3.2. Herramientas de la segunda generación

usada para analizar colecciones de datos muy grandes. Rattle presenta resúmenes estadı́sticos y
visuales de datos, transforma los datos en formas que pueden ser fácilmente modeladas, cons-
truye modelos supervisados y no supervisados a partir de los datos, presenta el rendimiento de
los modelos gráficamente y da una puntuación a los conjuntos de datos nuevos.
A través de una interfaz de usuario simple y lógica basada en Gnome puede ser usado para
realizar proyectos de minerı́a de datos. Es posible también realizar proyectos de minerı́a de datos
más sofisticados haciendo uso del lenguaje estadı́stico de licencia libre R[20].
Rattle puede ser ejecutado sobre plataformas GNU/Linux, Macintosh OS/X y Windows. Su
objetivo es proveer una interfaz intuitiva que lleve al usuario a través de los pasos básicos de
la minerı́a de datos, al igual que ilustrar el código R usado para lograr esto. también provee un
punto de apoyo para el procesamiento y modelado más sofisticado en lenguaje R puro, ası́ como
para minerı́a de datos avanzada y sin restricciones.

Rapid Miner (más formalmente conocido como YALE[21, 16]) es una de las principales herra-
mientas para prototipeo y minerı́a de datos a nivel mundial de licencia pública. Desarrollado
puramente en Java, contiene una API para su fácil uso desde programas de terceros. Ofrece una
amplia variedad de diferentes algoritmos y métodos los cuales pueden ser combinados de manera
flexible y anidados arbitrariamente. Yale abstrae sus métodos bajo el concepto de operadores
contando con más de 400 y ofreciendo un enfoque de combinación de operadores como un grafo
dirigido para representar el proceso de descubrimiento de conocimiento (Knowledge Discovery).
En este enfoque cada vértice del árbol corresponde a un operador sencillo, permitiendo a los
usuarios la fácil incorporación de ciclos dentro de sus experimentos. Los ciclos son esenciales para
muchas tareas como optimización de parámetros, selección de caracterı́sticas o la aplicación de
métodos de aprendizaje iterativos. Yale provee un sistema interno de administración de datos,
permitiendo vistas arbitrarias de los datos sin la necesidad de duplicarlos. Esto es esencial para
construcciones a gran escala o para la simulación de minerı́a de datos distribuida. Esta adminis-
tración de los datos también hace posible manejar los datos tan transparente como sea posible
ante los usuarios y desarrolladores. Finalmente YALE es fácil de extender dado que muchos plu-
gins que enriquecen su funcionalidad base ya existen. Estos plugins actualmente cubren texto,
3. Herramientas para minerı́a de datos 41

audio, series de tiempo, procesamiento multimedia, simulación de flujo de datos, agrupamiento


y minerı́a de datos distribuida.

Knime[6] es una plataforma modular de datos que permite al usuario crear visualmente flujos
de datos. Permite ejecutar selectivamente algunas o todas los pasos del análisis para posterior-
mente consultar los resultados a través de vistas interactivas sobre datos y modelos. La versión
base de Knime incorpora ya más de 100 nodos de procesamiento para entrada/salida de datos,
preprocesamiento y limpieza, modelado, análisis y minerı́a de datos entre otras cosas. Incluye
todos los módulos de análisis de Weka y plugins adicionales que permiten que scripts en R
sean ejecutados, ofreciendo vasto acceso a bibliotecas de rutinas estadı́sticas. Está basado en la
plataforma Eclipse[8] y brinda una fácil extensibilidad con ayuda de su API modular.

3.3 Herramientas de la tercera generación

Subsecuentemente, aparecieron las herramientas de la tercera etapa, que se enfocan en re-


solver las limitantes de trabajar sobre un modelo cerrado, esto es localmente, como lo hacen las
herramientas de la segunda generación. Algunos ejemplos de herramientas de la tercera genera-
ción son los siguientes:

Grid Weka[14] es una herramienta desarrollada en la Universidad de Dublı́n que modifica Weka
para permitir el uso de múltiples recursos computacionales mientras ejecutamos análisis de da-
tos. En este sistema, un conjunto de tareas de minerı́a de datos pueden ser distribuidas a través
de muchas computadoras en un ambiente ad-hoc o cerrado. Las tareas que pueden ser ejecu-
tadas usando Grid Weka incluyen: construir un clasificador en una máquina remota, clasificar
un conjunto de datos empleando un clasificador previamente construido, probar un clasificador
con un conjunto de datos o empleando validación cruzada6 , etc. Esta constituido de dos com-
ponentes principales: Weka Server y Weka Client. El servidor está basado en el Weka original.
6
Técnica en la que un conjunto de datos es particionado en n grupos, por lo que n iteraciones de
entrenamiento y prueba son ejecutadas. En cada iteración, un grupo es utilizado como conjunto de prueba
y el resto de los datos es usado como conjunto de entrenamiento
42 3.3. Herramientas de la tercera generación

Figura 3.2: Grid Weka, escenario de usos

Cada máquina que participa en un Weka Grid es ejecutado en el servidor. El cliente Weka es
el responsable de aceptar una tarea de aprendizaje y los datos de entrada de los usuarios para
distribuir el trabajo sobre el Grid. A la vez, el cliente implementa la funcionalidad necesaria
para el balanceo de carga y el monitoreo de fallas. El servidor traduce las peticiones del cliente
en llamadas a las funciones Weka correspondientes. También ofrece funcionalidades adicionales
como la recuperación de fuentes de datos del servidor de almacenamiento local después de una
falla. La figura 3.2 ilustra un escenario de usos.
Aún cuando el Grid Weka provee una manera de usar múltiples recursos para ejecutar tareas de
minerı́a de datos de manera distribuida, éste fue diseñado para trabajar dentro de un ambiente
ad-hoc, el cual no constituye un Grid por sı́ mismo. De manera particular, la invocación de los
recursos remotos en Grid Weka no está orientada a servicios y hace uso de soluciones especı́ficas
que no toman en consideración los aspectos fundamentales del Grid, como la interoperabilidad,
seguridad, etc.

En [32] Curcin et al proponen una arquitectura para construir un sistema colaborativo y dis-
tribuido de descubrimiento de conocimiento dentro de un ambiente de cómputo basado en el
Grid. Este es un enfoque genérico originado de la necesidad de procesos de descubrimiento de
3. Herramientas para minerı́a de datos 43

Figura 3.3: Componentes de Discovery Net

conocimiento en la industria bioinformática, donde procesos complicados de análisis de datos


son construidos usando un enfoque en pipeline7 . A su vez ellos proponen la implementación de
su arquitectura. Discovery Net es una herramienta que provee un modelo de cómputo orientado
a servicios, permitiendo a los usuarios conectarse y hacer uso del software de análisis de datos
al igual que las fuentes de datos que son hechas disponibles en lı́nea por terceras personas.
Está basado en una visión amplia que se enfoca en soportar el proceso cientı́fico completo,
desde la captura hasta la visualización. Sin embargo, Discovery Net no está pensado como una
herramienta de uso directo de cientı́ficos, sino que necesita del trabajo conjunto de desarrolla-
dores y cientı́ficos para dirigir el proceso del descubrimiento cientı́fico. La Figura 3.3 muestra
los componentes de la arquitectura.

De igual manera en [23] Brezany et al presentan una arquitectura de software basada en servicio
para minerı́a de datos distribuida y de alto rendimiento en ambientes Grid y su implementación
llamada GridMiner. En este trabajo presentan dos modelos de ejecución para el servicio de mi-
nerı́a de datos. El primero es una adaptación al Grid de la herramienta Weka al que llamaron
Minerı́a de datos centralizada y el segundo es una versión distribuida del mismo que hace uso
7
Conjunto de procesos encadenados por su flujo estándar, donde la salida de cada proceso alimenta
directamente la entrada del siguiente
44 3.3. Herramientas de la tercera generación

Figura 3.4: Componentes de GridMiner

de los recursos de hardware y software distribuidos unificados dentro del Grid.


Para este trabajo desarrollaron un mecanismo basado en XML, llamado GM-JSL, que permite
a los usuarios especificar el proceso completo de descubrimiento de conocimiento. Su prototipo
del servicio de minerı́a de datos centralizado basado en Globus Toolkit 3 se compone del cliente
que es una aplicación Java, el módulo de Servicio Centralizado de Minerı́a de Datos(CDMS),
un módulo de registro(DMS-R), un módulo Factoria(DMS-F) que es un GridService implemen-
tando el portType Factory y un mediador(Figura 3.4). El mediador es un servicio middleware el
cual conecta los fuentes de datos participantes, las integra lógicamente en una fuente de datos
virtual(VDS)8 , envı́a las consultas a esta, y devuelve los resultados de una manera flexible.

WekaG[24] es otra adaptación de la herramienta Weka a un ambiente de Grid basándose en una


arquitectura cliente/servidor. El lado del servidor define un conjunto de servicios Grid que imple-
mentan las funcionalidades de los diferentes algoritmos y fases del proceso de minerı́a de datos.
Un cliente WekaG es responsable de la comunicación con los servicios Grid y ofrece una interfaz
a los usuarios. Ha sido desarrollado un prototipo que implementa las funcionalidad del algoritmo
Apriori[1] usando Globus Toolkit 3[7]. Para el desarrollo de esta funcionalidad el módulo cliente
8
Una federación de datos que presenta múltiples colecciones de datos como una colección de datos
organizada uniformemente
3. Herramientas para minerı́a de datos 45

Figura 3.5: FAHEIM. Flujo de trabajo de Minerı́a de datos

debe enviar los datos encapsulados al módulo servidor. Esta información corresponde a los ob-
jetos de datos necesarios para ejecutar algoritmos de minerı́a de datos. En el caso del algoritmo
Apriori, es necesario enviar los parámetros requeridos para construir las reglas de asociación. En
esta implementación fue usada la serialización de objetos para almacenar y recuperar el estado
de los objetos requeridos. En este prototipo un servicio Apriori Grid ha sido desarrollado para
producir reglas de asociación de un conjunto de datos, mientras GridFTP[2] es usado para la
extracción de los archivos en el nodo del Servicio Grid. Aunque constituye una herramienta
útil para minerı́a de datos, su principal propósito es extender esta funcionalidad para muchas
bibliotecas y nuevos algoritmos. WekaG es una implementación particular de una arquitectura
mas general conocida como DMGA (Data Mining Grid Architecture)

FAEHIM[27] (Federated Analysis Environment for Heterogeneous Intelligent Mining) es una


herramienta basada en Servicios Web para la minerı́a de datos distribuidos. Esta herramienta
consiste en un conjunto de Servicios Web para minerı́a de datos accedidos mediante una API,
un conjunto de herramientas para interactuar con los Servicios Web y un sistema de flujo de
46 3.3. Herramientas de la tercera generación

trabajo usado para ensamblar estos servicios y herramientas para poder construir una solución
a un problema. El sistema de flujo de trabajo usado para ensamblar los componentes es Triana
Solver[31](Figura 3.5), un ambiente para solucionar problemas libre desarrollado como parte del
proyecto European GridLab. Los servicios de minerı́a de datos son presentados como Servicios
Web para permitir una fácil integración con servicios de terceros, permitiendo a los algoritmos
de minerı́a de datos ser embebidos dentro de aplicaciones existentes. La mayorı́a de los Servi-
cios Web en FAEHIM son derivados de la biblioteca Weka. Todos los algoritmos de minerı́a de
datos disponibles en Weka fueron convertidos en un conjunto de Servicios Web. En particular,
un “Servicio Web clasificador”ha sido implementado para encapsular el conjunto completo de
clasificadores de Weka, un “Servicio Web de agrupamiento”ha sido usado para agrupar una
variedad de algoritmos de agrupamiento, entre otros.

Weka4WS[29], es un marco de trabajo que extiende la funcionalidad de Weka para soportar


minerı́a de datos distribuido sobre ambientes Grid. La meta de Weka4WS es extender Weka
para soportar la ejecución remota de los algoritmos de minerı́a de datos, de tal forma que las
tareas distribuidas de minerı́a de datos pueden ser ejecutadas sobre nodos descentralizados del
Grid, explotando la distribución de los datos e incrementando el rendimiento de la aplicación.
En Weka4WS, las fases de preprocesamiento de datos y visualización son ejecutadas localmente,
mientras que los algoritmos de minerı́a de datos para clasificación, agrupamiento y reglas de
asociación pueden ser ejecutadas sobre el Grid. Para hacer posible la invocación remota, cada
algoritmo de minerı́a de datos proveı́do por la biblioteca Weka es presentado como un Servicio
Web, el cual puede ser fácilmente implementado en los nodos disponibles del Grid. De esta
manera, Weka4WS extiende la GUI de Weka para permitir la invocación de los algoritmos de
minerı́a de datos que son presentados como Servicios Web sobre computadoras remotas. Ha sido
diseñado y desarrollado usando la tecnologı́a Web Services Resource Framework (WSRF)[30],
para alcanzar la integración y la interoperabilidad con el ambiente Grid estándar. Dicha tecno-
logı́a le permite importantes beneficios como servicio de descubrimiento y composición dinámico,
soporte estándar para autorización y criptografı́a, entre otros.
Weka4WS está compuesto de 3 clases de nodos(Figura 3.6): nodos de almacenamiento, que
3. Herramientas para minerı́a de datos 47

Figura 3.6: Arquitectura Weka4WS

almacenan el conjunto de datos a ser minado; nodos de procesamiento, sobre los cuales se eje-
cutan las tareas remotas de minerı́a de datos; nodos usuario, que son las máquinas locales de
los usuarios.
Los nodos usuario incluyen tres componentes: la Interfaz Gráfica de Usuarios(GUI), el Módulo
Cliente(CM) y la biblioteca Weka(WL). La GUI(Figura 3.7) es un ambiente que extiende el
Explorador de Weka para soportar la ejecución de manera local y remota de tareas de minerı́a
de datos. Las tareas locales son ejecutadas a través del CM, el cual opera como un intermediario
entre la GUI y los Servicios Web residentes en nodos de cómputo remotos.
Los nodos de cómputo incluyen dos componentes: un Servicio Web(WS) y la biblioteca We-
ka(WL). El componente llamado Servicio Web presenta los algoritmos de minerı́a de datos
proveı́dos por la biblioteca Weka vı́a un servicio Web, por lo tanto, las peticiones hechas al WS
son ejecutadas invocando los algoritmos WL correspondientes (Tabla 3.1).
Finalmente, los nodos de almacenamiento proveen acceso a los datos a ser minados. Las fuentes
de datos a ser minadas pueden estar disponibles en un nodo de cómputo, o ser descargadas a
uno de ellos, en respuesta a una solicitud del WS correspondiente.

La tabla 3.2 resume algunas de las principales caracterı́sticas de las herramientas de minerı́a
de datos
48 3.3. Herramientas de la tercera generación

Figura 3.7: Interfaz Clasificación Weka4WS

Operación Descripción
createResource Crea un nuevo recurso
suscribe Hace subscripción de las notificaciones de las
cambios de las propiedades del recurso
destroy Solicita la destrucción de un recurso
classification Invoca la ejecución de una tarea de clasificación
clustering Invoca la ejecución de una tarea de agrupa-
miento
associationRules Invoca la ejecución de una tarea de reglas de
asociación

Tabla 3.1: Weka4Ws, operaciones proveı́das por cada Servicio Web


3. Herramientas para minerı́a de datos 49

Clasificación/Predicción

Patrones secuenciales
Preprocesamiento

Patrones gráficos
Modelos visuales

Es distribuido
Data Cubing
Evaluación
Asociación

Usabilidad
Clustering
Herramienta
Grid Weka x x x x x - - - - fácil si
Discovery Net x x x x x - - - - regular si
Grid Miner x x x x x - - - - fácil si
WekaG x - - x x - - - - fácil si
FAEHIM x x x - x x - - - fácil si
Weka4WS x x x x x x - - - fácil si
Rattle x x x x x x - - - fácil no
Weka x x x x x x - - - fácil no
Yale x x x x x x - - - fácil no
Knime x x - - x x x x x fácil no

Tabla 3.2: Caracterı́sticas de las herramientas de minerı́a de datos

3.4 Limitantes

Aún cuando las herramientas de la tercera generación presentan un enfoque para la minerı́a
de datos distribuida, la mayorı́a de éstas tienen como propósito el distribuir diversas tareas
de minerı́a de datos para ser ejecutadas sobre nodos remotos. Como principal objetivo buscan
aprovechar todos los recursos de cómputo globales que en un determinado momento les puede
ofrecer el cómputo Grid. Sin embargo, es necesario que las fuentes de datos a ser minadas sean
transferidas a los nodos de procesamiento remotos lo que implica una replicación de los datos
que se traduce en una invasión en la privacidad de las fuentes de datos que se requieren minar.
A diferencia de estas complejas arquitecturas de minerı́a de datos distribuida, el presente trabajo
se enfoca en la obtención de clasificadores que utilizan información global a través de un conjunto
de componentes Java remotos. Estos componentes hacen la función de intermediarios entre un
Nodo Central de Cómputo y las fuentes de datos remotas. Su principal tarea es acceder a su
fuente de datos local y enviar un resumen de la información (metadatos) necesaria para que el
Nodo Central construya el clasificador.
50 3.4. Limitantes

La razón de ser del presente trabajo es ofrecer a diversas organizaciones, como las enfocadas al
cuidado de la salud, una solución para compartir su información confidencial(como la del registro
del historial de pacientes) sin la necesidad de tener que transferir sus registros de manera ı́ntegra.
Con la transmisión de los resúmenes de información tomados de las diferentes fuentes de datos
es posible construir un clasificador a partir de conocimiento global que apoye de manera más
exacta en el proceso de toma de decisiones. Este objetivo es e buscado en la arquitectura que
se propone en esta tesis.
Diseño e implementación del sistema
4
En el presente capı́tulo se describe la arquitectura e implementación del sistema ası́ como
los diagramas de clases

4.1 Arquitectura del enfoque propuesto

La arquitectura propuesta, la cual fue presentada en [12, 11, 13] se enfoca en la obtención
de un clasificador con conocimiento global a través de conjuntos de datos de estructura similar.
Para llevar a cabo este enfoque, se ha usado un conjunto de componentes Java que son eje-
cutados sobre máquinas remotas y los cuales intercambian metadatos con un Nodo Central de
Cómputo (NCC).
Para llevar a cabo esta comunicación la aplicación hace uso de la tecnologı́a RMI. Para esto es
necesario que el Nodo Central y cada nodo local perteneciente a un grupo sean registrados en
un servicio de nombres mejor conocido como RMIRegistry. Una vez que han sido registrados la
aplicación cliente Weka Team Miner solicitará la referencia al Nodo central. El servicio de nom-

51
52 4.1. Arquitectura del enfoque propuesto

Figura 4.1: Arquitectura

bres le devolverá una referencia al objeto que está solicitando y a través del Stub o representante
del Nodo Central el cliente invoca un procedimiento remoto que devuelve un clasificador. Para
que el nodo central pueda construir el clasificador necesita invocar un procedimiento remoto de
cada nodo local que le devuelve un grupo de metadatos. Para realizar esta invocación el Nodo
Central solicita al servicio de nombres una referencia a cada uno de los nodos locales registrados.
Cuando esta ha sido devuelta el nodo central a través del stub invoca el procedimiento remoto
(figura 4.2)
Este enfoque evita el acceso total a los datos originales por medio del intercambio de metada-
tos ofreciendo de esta manera un nivel de privacidad en los mismos. Este enfoque permite que
tanto instituciones pequeñas como grandes intercambien información entre ellas para construir
un mejor clasificador a partir del conocimiento global contenido en la suma de todas las fuentes
de datos dispersas. Esta arquitectura está compuesta de las siguientes partes: un Nodo Central,
un conjunto de nodos locales y una aplicación Web (Figura 4.1). A continuación se describe de
manera general cada componente.

Nodo Central de Cómputo. Es el componente principal de la arquitectura encargado de


construir el clasificador global. Este componente cuenta con un Módulo Constructor de
4. Diseño e implementación del sistema 53

Figura 4.2: Plataforma rmi

Clasificadores implementado en Java y un Repositorio de Clasificadores Globales (RCG),


cuyo funcionamiento se explica más adelante.

Nodos locales. Los nodos locales representan cada nodo remoto perteneciente a una
institución. Estos nodos cuentan con un intermediario que cuenta con acceso a su conjunto
de datos local. Estos datos pueden estar en archivos en formato arff o almacenados en una
base de datos. Los nodos locales son los encargados de interactuar con el NCC y enviar los
metadatos que les sean requeridos por el mismo. Las instituciones que desean obtener o
participar en la construcción de un clasificador pueden descargar su intermediario a través
de la aplicación Web.

Aplicación Web. Es el medio por el cual se realiza el registro de usuarios y grupos al


sistema. A través de esta aplicación cada usuario puede darse de alta y registrarse para
participar en la construcción de un clasificador relacionado al análisis de una problemáti-
ca. Por medio de esta acción el usuario será considerado al momento de construir un
nuevo clasificador. El NCC podrá solicitarle sus metadatos a través de comunicarse con
el componente local que ha sido descargado.
54 4.1. Arquitectura del enfoque propuesto

Cliente Weka Team Miner. El cliente es el medio por el cual un usuario u organización
perteneciente a un grupo de trabajo o no puede solicitar la generación de un clasificador
global. Para llevar a cabo esta solicitud el cliente debe buscar en el servicio de nombres el
servicio del Nodo Central de Cómputo. Cuando le es devuelta una referencia a este objeto
el cliente puede invocar via RMI y por medio del stub o representante el procedimiento
remoto para obtener el clasificador. Finalmente el Nodo Central de Cómputo envı́a el
clasificador serializado y el cliente al recibirlo lo deserializa y carga el clasificador.

La arquitectura permite a los usuarios registrarse para colaborar en el proceso de construcción


del clasificador global. El proceso consiste en definir grupos de trabajo donde las instituciones
interesadas trabajan juntas para construir dicho clasificador. Esto es llevado a cabo mediante el
intercambio de metadatos entre los nodos previamente registrados como miembros del equipo
en el NCC. El NCC reúne todos los metadatos provenientes de los componentes Java de cada
miembro registrado sin la necesidad de conocer los datos originales. Esta forma de construir
el clasificador evita la invasión en la privacidad en los datos originales y motiva a que las
organizaciones participen en este proceso con el objetivo de construir un mejor clasificador.

4.1.1 Proceso de Construcción del clasificador global

El proceso de la construcción de un clasificador global inicia cuando un nuevo nodo local


es registrado en el NCC y desea obtener un clasificador global. El nodo local registrado solicita
al NCC obtener un clasificador global usando tanto el conjunto de datos local como otros con
estructura similar que se encuentren distribuidos en los demás nodos participantes. Este proceso
sigue los siguientes pasos (Figura 4.3):

1. Un intermediario es registrado para unirse al grupo de estudio o análisis de datos con


estructura similar. Estos conjuntos de datos deben tener el mismo número y tipo de
atributos.
4. Diseño e implementación del sistema 55

Figura 4.3: Proceso de intercambio de metadatos

2. El intermediario solicita al NCC un clasificador global. El NCC ofrece dos opciones: obtener
el último clasificador global almacenado o construir uno nuevo.

3. Si el intermediario escoge construir un nuevo clasificador entonces el NCC inicia un ciclo


de iteraciones con todos los componentes Java registrados solicitando los metadatos (La
estructura de los metadatos se describe en la sección 4.1.2).

4. Los metadatos son enviados al NCC que interactúa con todos los nodos locales solicitando
sus metadatos. Este proceso interactivo permite al NCC construir el clasificador global.

5. Una vez que el NCC ha construido el clasificador global, éste es almacenado y enviado al
intermediario remoto que lo solicitó

4.1.2 Estructura de los metadatos

Los metadatos son un resumen de los datos originales. Son recibidos por el NCC en estruc-
turas de vectores anidados. El vector de metadatos contiene un vector por cada atributo de
la fuente original. A su vez cada vector de atributo almacena un vector por cada posible valor
que dicho atributo puede tomar. Finalmente, cada vector de valor conserva para cada valor del
atributo clase la suma de las instancias que están relacionadas. La estructura básica es ilustrada
56 4.1. Arquitectura del enfoque propuesto

Figura 4.4: Estructura de los metadatos

Figura 4.5: Ejemplo de valores en los metadatos

en la figura 4.4. Esta estructura de metadatos se define como sigue:


A1 {a1 {|c1 |, |c2 |, . . . , |cp |}, a2 {|c1 |, |c2 |, . . . , |cp |}, . . . , an {|c1 |, |c2 |, . . . , |cp |}},
A2 {a1 {|c1 |, |c2 |, . . . , |cp |}, a2 {|c1 |, |c2 |, . . . , |cp |}, . . . , an {|c1 |, |c2 |, . . . , |cp |}},
..
.
Am {a1 {|c1 |, |c2 |, . . . , |cp |}, a2 {|c1 |, |c2 |, . . . , |cp |}, . . . , an {|c1 |, |c2 |, . . . , |cp |}}

donde A1 . . . Am representa los atributos del conjunto de entrenamiento, a1 . . . an los valores


de cada atributo y |c1 | . . . |cp | el número de instancias por cada clase con respecto al valor de
cada atributo.

La figura 4.5 ilustra un ejemplo de valores que se pueden registrar como metadatos, donde
4. Diseño e implementación del sistema 57

Presión ar- Azúcar en Alergia a Otras aler- Administrar


terial la sangre Índice de antibióticos gias fármaco
colesterol
alta alto alto no no si
alta alto alto si no si
baja alto bajo no no si
media alto alto no si no
media bajo alto si si no
baja bajo alto si si si
alta bajo alto si no si
alta bajo bajo no si si

Tabla 4.1: Conjunto de datos nodo A

Presión ar- Azúcar en Alergia a Otras aler- Administrar


terial la sangre Índice de antibióticos gias fármaco
colesterol
alta alto bajo si si no
baja bajo alto si si si
media bajo bajo si si si
alta bajo alto si si no
baja alto alto si si si
baja alto bajo no no si

Tabla 4.2: Conjunto de datos nodo B

el atributo clasificador o clase objetivo es determinar si se debe aplicar un fármaco o no a


un paciente. Los posibles valores para el atributo clasificador son dos, sı́ o no. Las cantidades
mostradas en la parte inferior de la figura 4.5 representan la cantidad de instancias o ejemplos
que pertenecen a cada valor de la clase objetivo, para cada valor de un atributo.
Las tablas 4.1 y 4.2 consideran un escenario donde el conjunto de entrenamiento de la tabla 2.1
(ver marco teórico) se encuentra distribuido entre los nodos A y B. Cada una de ellas es ahora
el conjunto de entrenamiento local de cada nodo. Con base en estas tablas, ahora tendrı́amos
los metadatos del nodo A y B como se ilustran en las figuras 4.6 y 4.7.
58 4.1. Arquitectura del enfoque propuesto

Figura 4.6: Metadatos del conjunto de entrenamiento del nodo A

Figura 4.7: Metadatos del conjunto de entrenamiento del nodo B


4. Diseño e implementación del sistema 59

4.2 Implementación
A continuación se describen las clases que componen cada elemento de la arquitectura
descrita en la sección 4.1

4.2.1 Diagrama de clases

La figura 4.8 presenta el diagrama de clases del sistema que implementa la arquitectura
propuesta. La clase DistributedPanel es una ventana modificada de la Herramienta Weka para
emplearse como cliente, la clase ClassifierBuilder implementa a la clase ClassifierBuilder Interface
y es registrada en el espacio de nombres por la clase CentralNode. La clase ID3 implementa
al algoritmo de igual nombre para trabajar en un enfoque distribuido. Para la construcción del
clasificador la clase ID3 se comunica con cada componente local implementado por la clase
Component. Esta clase implementa la clase Component Interface y es registrada en el espacio
de nombres por la clase Server

4.2.2 Nodo Central de Cómputo

El Nodo Central de Cómputo es el componente encargado de construir el clasificador global.


La clase Central Node implementa este componente y se encarga de publicar e instanciar el
módulo constructor de clasificadores vı́a RMI. Sus componentes son descritos a continuación.

Módulo Constructor de clasificadores

Este módulo es el responsable de procesar la petición de un nodo remoto para construir un


clasificador global. Cuando un clasificador es solicitado, este módulo es el encargado de requerir
a cada nodo del equipo participante una serie de metadatos para construir el clasificador. Este
módulo emplea una interfaz remota para realizar la comunicación entre él y los nodos remotos.
Esta interfaz cuenta con un método que devuelve como parámetro de salida el clasificador en
forma de un objeto. La interfaz que define este módulo es la siguiente:
60 4.2. Implementación

Figura 4.8: Diagrama de clases


4. Diseño e implementación del sistema 61

public interface ClassifierBuilder_Interface extends Remote{

public Nodo getClassifier(int classIndex) throws RemoteException;


public int getNumInstances() throws RemoteException;

Además de la interfaz remota este módulo cuenta con las siguientes clases:

ClassifierBuilder
Esta clase es la encargada de instanciar la clase que implementa el algoritmo ID3. Cuenta
con dos métodos públicos: getClassifier y getNumInstances.

• getClassifier
Este método recibe como parámetros classIndex que es el ı́ndice del atributo clase
e idGroup que representa el identificador del grupo de trabajo con el cual colabora.
Por medio de la instancia de la clase ID3 este método obtiene el clasificador y lo
devuelve como parámetro de salida como un objeto de la clase Node.

• getNumInstances
Este método devuelve el número de instancias contenido en el grupo global de datos.

MyConnection
Esta clase es la encargada de realizar la conexión a la base de datos y de guardar y cargar
los clasificadores construidos. Cuenta con los siguientes métodos públicos:

• MyConnection(Constructor)
Recibe como parámetros el usuario, contraseña, url del servidor de base datos y el
driver. Abre la conexión con la base de datos.

• getConnection
Regresa un objeto de tipo Connection, el cual apunta a la fuente de datos.
62 4.2. Implementación

• closeConnection
Cierra la conexión

• executeQuery
Recibe como parámetro una consulta SQL, la procesa y devuelve el resultado por
medio de un objeto ResultSet.

• saveClassifier
Este método es el encargado de guardar el clasificador que se ha construido. Recibe
como parámetro el clasificador y el identificador del grupo al que pertenece. Para
guardar el clasificador lo serializa y guarda en un campo de tipo Byte en la base de
datos.

• loadClassifier
Este método carga el clasificador más actual del grupo de trabajo especificado.
Recibe como parámetro el identificador del grupo. Lo devuelve por medio de un
objeto clasificador

ID3
Esta clase es la implementación del algoritmo ID3 de la herramienta Weka, modificada
para trabajar de manera distribuida. Uno de sus constructores fue modificado para que
reciba como parámetros un vector con las URLs de los nodos remotos que son integrantes
del grupo de trabajo. Además recibe como parámetro el atributo clase. En este constructor,
la clase instancia vı́a RMI cada uno de los nodos remotos para interactuar con ellos.

Repositorio de Clasificadores Globales

El Repositorio de Clasificadores Globales almacena los clasificadores construidos en formato


de bytes. Estos clasificadores son almacenados en la tabla Classifiers de la base de datos em-
pleada, en la cual también se registran los usuarios y grupos de la aplicación. La base de datos
cuenta con el esquema ilustrado en la figura 4.9.
4. Diseño e implementación del sistema 63

Figura 4.9: Diagrama de la base de datos del sistema

4.2.3 Nodos Locales


Las clases que lo componen son las siguientes:

Server
Esta clase es la encargada de registrar e instanciar vı́a RMI la clase Agent, que es el
intermediario local que tendrá acceso a los datos locales. Para llevar a cabo esto se debe
ejecutar el servicio del RMIRegistry, la cual es una herramienta del JDK que sirve como
directorio para encontrar y asociar objetos remotos.

AgentInterface
Esta interfaz es empleada para implementar y definir los métodos de la clase Agent de
manera remota. Es empleada para representar la clase Agent del lado del cliente.

public interface AgentInterface extends Remote{

public int loadData(int classIndex) throws RemoteException;


64 4.2. Implementación

public FastVector getAttributes() throws RemoteException;


public Vector getMetadata() throws RemoteException;
public Vector getMetadata(int index, String val,int leafs, boolean
root) throws RemoteException;
}

Agent
La clase Agent implementa la clase AgentInterface y es la encargada de acceder a los
datos locales y de enviar solamente metadatos al NCC. Para realizar este paso encapsula
los metadatos en una estructura Vector. Cuenta con los siguientes métodos públicos:

• loadData
Este método carga la fuente de datos a minar. Recibe como parámetro el ı́ndice del
atributo clase para asignarlo después de cargar la información. Devuelve el número
de instancias cargadas.

• getAttributes
Devuelve los atributos encontrados en la fuente de datos local

• getMetadata
Este método es sobrecargado en dos formas. En una de ellas no recibe parámetros
y devuelve un vector con los metadatos correspondientes al conjunto original de los
datos cargados. En la segunda opción recibe una serie de parámetros como lo es
el ı́ndice del atributo seleccionado, su valor y dos parámetros más que funcionan
como banderas para indicar un recorrido en profundidad. Esta segunda sobrecarga
del método es empleada cuando el conjunto original de los datos es seccionado o
dividido a partir de la selección de un atributo como el de mayor contribución para
el proceso de construcción del clasificador. Devuelve un vector con los metadatos
del subgrupo correspondiente al valor indicado del atributo.
4. Diseño e implementación del sistema 65

Figura 4.10: Interfaz para registro de grupos

4.2.4 Aplicación Web para el registro de participantes

Para el control de usuarios y grupos en el sistema, se creó una interfaz Web en la cual de
manera sencilla es posible crear y registrar usuarios en grupos de interés afı́n. Para crear un
nuevo grupo sólo basta ir a la página de grupos (Fig. 4.10) e introducir tanto el nombre como
la descripción del nuevo grupo. Una vez hecho esto, es posible agregar nuevos miembros a este
grupo. Para realizarlo sólo es necesario visitar la página de registro de miembros (Fig. 4.11),
seleccionar el grupo deseado e introducir su URL.

4.2.5 Cliente Weka Team Miner

En esta tesis se decidió adaptar la aplicación Weka para que funcione como un cliente de
nuestro sistema. La nueva versión de Weka es capaz de conectarse a nuestro nodo central
para solicitar un clasificador que se construya a partir de información proveniente de distintas
fuentes de datos distribuidas. La figura 4.12 muestra la nueva interfaz de Weka que le permite
conectarse al NCC. Gracias a esta modificación se puede especificar en esta interfaz la URL
donde se encuentra el NCC. También es requerido que se suministre el conjunto de datos con
el que se probará el clasificador construido. A su vez, otro dato importante es seleccionar el
66 4.2. Implementación

Figura 4.11: Interfaz para registro de nuevos miembros

atributo clase del conjunto de datos a analizar(Fig.4.13). Una vez que se ha proporcionado estos
datos con el botón de start se solicita la construcción del clasificador global. Una vez que se ha
construido, éste es visualizado en modo texto junto con sus estadı́sticas en la ventana del lado
derecho(Fig.4.14).

4.2.6 Pseudocódigo Clasificador global ID3

La aplicación Web Team Miner ha sido desarrollada con el fin de implementar la arquitec-
tura antes descrita e incluye dos algoritmos de clasificación para obtener árboles de decisión.
Los algoritmos ID3[25] y C4.5 han sido adaptado para esta arquitectura. Se ha elegido este
algoritmo ya que su formar de trabajo se ajusta para usar sólo metadatos, lo cual es una de las
caracterı́sticas de nuestra arquitectura. Fue implementado usando tecnologı́as RMI y Web. Las
adaptaciones a estos algoritmos se presentan a continuación:

El algoritmo C4.5 solamente difiere del ID3 en la medida de selección del atributo clasificador
pues este emplea la proporción de ganancia a diferencia del ID3 que emplea la ganancia de
información.

Es importante señalar que el Nodo Central de Cómputo (NCC) sólo se encarga de integrar
la información obtenida por los nodos locales. El proceso de integración global de este algoritmo
4. Diseño e implementación del sistema 67

Figura 4.12: Interfaz cliente Weka

Figura 4.13: Panel de selección de propiedades

Figura 4.14: Salida de un clasificador (árbol de decisión)


68 4.2. Implementación

Algoritmo 4 Pseudocódigo algoritmo


SALIDA: Árbol de decisión
1: El constructor del clasificador obtiene metadatos de cada nodo local
2: Construye una estructura de metadatos global a partir de metadatos recibidos
3: Invoca al método buildTree enviando metadatos globales
4: El método buildTree recibe los metadatos
5: Crea un nuevo nodo
6: Calcula ganancia de información de cada atributo
7: Asigna atributo con mayor ganancia al nodo creado
8: SI ganancia máxima igual a 0 ENTONCES
9: Obtiene distribución de valores del atributo clasificador
10: Normaliza la distribución
11: Asigna al nodo valor correspondiente de la clase
12: SINO
13: Particiona conjunto de entrenamiento en base a atributo seleccionado
14: PARA CADA subconjunto derivado de la partición HACER
15: Solicita metadatos asociados con cada partición
16: Crea nuevo grupo global de metadatos
17: Agrega al nodo el resultado de llamarse recursivamente con el nuevo conjunto
de metadatos
18: FIN PARA
19: FIN SI
20: Regresa el nodo
21: Finalmente devuelve el árbol de decisión

se lleva a cabo en el NCC a partir de los metadatos que cada componente local le envı́a.

4.2.7 Algoritmo para construcción de clasificador

El algoritmo para la construcción del clasificador inicia cuando un usuario miembro de un


grupo de interés (intermediario en un nodo local) solicita la construcción de un clasificador. En
ese momento el NCC recolecta los metadatos, solicitados a todos los componentes Java remotos,
agrupándolos dentro de un conjunto de metadatos globales. Enseguida llama al Constructor del
clasificador (Classifier Builder) pasándole este conjunto de datos globales. El constructor del
clasificador inicia este proceso obteniendo los atributos más significantes a su vez que solicita
mas metadatos. Finalmente, cuando obtiene el clasificador global, el NCC lo envı́a al nodo local
4. Diseño e implementación del sistema 69

Figura 4.15: Metadatos obtenidos por el conjunto de entrenamiento del nodo A

que lo solicitó, a su vez que lo almacena en su repositorio global. Los algoritmos encargados de
este proceso se presentan en los algoritmos 5.y 6.

Algoritmo 5 Algoritmo Classifier Builder


Classifier Builder
SALIDA: Árbol de decisión
1: PARA CADA intermediario HACER
2: obtiene metadatos
3: FIN PARA
4: forma conjunto Metadatos Globales
5: árbol ← buildTree(Metadatos Globales)
6: REGRESA árbol

Retomando el ejemplo de la sección 2.2.4.2 y el escenario distribuido planteado en la sección


4.1.2 en el cual el conjunto de entrenamiento se encuentra distribuido entre los nodos A y
B (tablas 4.1 y 4.2) el algoritmo 5 solicitarı́a los metadatos correspondientes a cada nodo
remoto. Estos devolverı́an un conjunto de metadatos almacenados en una estructura de vectores
anidados. Estos vectores son ilustrados en las figuras 4.15 y 4.16. Posteriormente el algoritmo
crea una estructura de metadatos globales (Figura 4.17), la cual es enviada al algoritmo 6 como
parámetro.
A continuación la operación del algoritmo 6 será similar a el algoritmo ID3. El algoritmo
recibe el conjunto de metadatos globales, obtiene la ganancia de información, encuentra que el
atributo que ofrece mayor ganancia es el atributo presión arterial y lo selecciona como atributo
raı́z. Enseguida procede a solicitar, para cada valor del atributo seleccionado, el conjunto de
metadatos que corresponde a dicho valor de cada nodo remoto. Estos serán devueltos de la
70 4.2. Implementación

Algoritmo 6 Algoritmo buildTree


ENTRADA: Metadatos Globales
SALIDA: Árbol de decisión
buildTree(Metadatos Globales)
1: crea nuevo nodo
2: calcula ganancia de atributos
3: nodo ← atributo con mejor ganancia
4: SI máxima ganancia =0 ENTONCES
5: calcula la distribución de los valores de la clase objetivo
6: normaliza la distribución
7: asigna una clase a la nueva hoja
8: SINO
9: PARA CADA valor en A HACER
10: PARA CADA intermediario HACER
11: obtiene metadatos
12: FIN PARA
13: forma nevo conjunto Metadatos Globales
14: nodo ← buildTree(nuevos Metadatos Globales)
15: FIN PARA
16: FIN SI
17: REGRESA Nodo

forma mostrada en las figuras 4.15 y 4.16, y posteriormente agrupados en un conjunto global.
Después el algoritmo se invocará recursivamente con el nuevo conjunto global de datos.

Figura 4.16: Metadatos obtenidos por el conjunto de entrenamiento del nodo B


4. Diseño e implementación del sistema 71

Figura 4.17: Metadatos globales formados a través de los metadatos de los nodos A y B

4.3 Herramientas de software


Para la implementación del presente trabajo se emplearon las siguientes herramientas de
software:

Java/JDK 1.6.0
Esta implementación fue hecha empleando la versión del JDK 1.6.0 la cual permite las
llamadas a procedimientos vı́a RMI y ofrece la herramienta RMIRegistry para el registro
de los métodos remotos en un espacio de nombres.

MySQL
Se utilizó el manejador de base datos MySQL para el registro de grupos de trabajo y sus
miembros, ası́ como para almacenar los clasificadores construidos.

API mysql-connector
API necesaria para realizar la conexión entre la aplicación y la base de datos.

Servidor Web Apache-Tomcat


Servidor Web empleado para almacenar la página de registro de usuarios colaboradores.

Weka
Herramienta de minerı́a de datos de la cual se adaptó el algoritmo ID3 y que fue modificada
para trabajar también como cliente de nuestro sistema.
Evaluación del sistema
5
El presente capı́tulo describe las pruebas realizadas a la aplicación que implementa nuestra
arquitectura. Dichas pruebas sustentan el funcionamiento de nuestra aplicación. Se realizó un
conjunto de casos de prueba con nodos operando en distintos sistemas operativos con el fin de
validar el aspecto multiplataforma y aproximar el escenario a un caso real.

5.1 Objetivo

El conjunto de pruebas tiene como principal objetivo mostrar la factibilidad de nuestra


arquitectura propuesta para obtener un clasificador con información global a partir de conjuntos
de datos distribuidos evitando la transferencia de los datos de manera completa. La funcionalidad
de la arquitectura se demuestra a través de nuestra aplicación Team Miner, la cual implementa
nuestra arquitectura y le da un enfoque a problemas del mundo real. El contexto de las pruebas
emula a un grupo de personas en distintas instituciones que intenta minar datos buscando
intereses afines. El proceso inicia cuando una institución representada por un usuario del sistema

73
74 5.2. Requerimientos

se registra en la aplicación Team Miner indicando su interés por un clasificador de datos de un


tema en particular. Si el tema de interés no existe, el usuario crea dicho tema, en el cual futuros
usuarios se puedan integrar para compartir la información. Una vez que un usuario solicita un
clasificador global a partir de fuentes de datos que se hayan registrado a un tema de interés
común, se empezará el proceso de la construcción del clasificador global que posteriormente
será descargado en los nodos locales que lo aplicarán a sus datos de prueba.
Con base en el contexto definido anteriormente, los casos de prueba son:

Crear un grupo de trabajo para trabajar con un tema especı́fico

Registrar un nuevo nodo local asociado a un tema determinado

Construir un clasificador a partir de información global relacionada con un tema en par-


ticular

Utilizar el clasificador con los datos de prueba locales para cada institución participante

Comparar clasificadores creados a partir de datos locales contra clasificadores creados a


partir de información global

5.2 Requerimientos
Para el desarrollo y pruebas de este trabajo se emplearon equipos con las siguientes carac-
terı́sticas:

Computadora de escritorio. Procesador Intel Pentium 4 2.8 GHz, Memoria 494 MB,
Disco duro 120 GB, Sistema operativo Linux-Ubuntu.

Servidor Linux. Sistema Operativo Linux Red Hat 4, Procesador Dual Core AMD Opteron
2210 a 1.8Ghz, Memoria 4 GB, Disco duro 250 GB.

Servidor Solaris. Sistema Operativo Solaris 10, Procesador Dual Core AMD Opteron
2210 a 1.8Ghz, Memoria 4 GB, Disco duro 250 GB.
5. Evaluación del sistema 75

Figura 5.1: Escenario de prueba

Servidor Windows. Sistema Operativo Microsoft Windows Server 2003, Procesador Dual
Core AMD Opteron 2210 a 1.8Ghz, Memoria 4 GB, Disco duro 250 GB.

Red. Red LAN Ethernet 100 Mbps, Switch Foundry Networks Gigabit Ethernet 10/100/1000
Mbps 24 port

5.3 Escenario de prueba

Se asume que los equipos se encuentran en diferentes instituciones conectadas bajo una
misma infraestructura de red de comunicaciones. Para la implementación de la aplicación Team
Miner su utilizó la red de trabajo institucional. La figura 5.1 ilustra el escenario de prueba sobre
el cual se trabajó.

5.4 Casos de prueba

A continuación se definen diversos casos de prueba que buscan validar los objetivos mencio-
nados en el punto 5.1.
76 5.4. Casos de prueba

(a) Interfaz Web (b) Interfaz lista de grupos

Figura 5.2: Interfaz Web de la aplicación Team Miner para crear un nuevo grupo de trabajo

5.4.1 Crear un nuevo grupo de trabajo

En este caso de prueba se presenta el proceso para crear un nuevo grupo de trabajo por
medio de la aplicación Team Miner donde se define un tema de interés para el minado. En este
proceso el resultado que se espera es el registro y habilitación del nuevo grupo de trabajo con un
tema asignado para que nodos usuarios puedan ser integrados a él. La figura 5.2(a) muestra el
formulario Web que podrá ser utilizado por los usuarios para crear un nuevo grupo de trabajo y
en el cual se introduce como información básica el nombre del grupo ası́ como una descripción.
En el ejemplo mostrado en la figura 5.2(a) el usuario crea el grupo de trabajo “Estudio cáncer
de pecho” al que posteriormente serán agregados nodos locales que compartirán sus fuentes de
datos. Una vez que este grupo ha sido registrado aparece listado en la lista de grupos 5.2(b).

5.4.2 Registrar un nuevo nodo local

En este caso de prueba se muestra la manera de registrar un nuevo nodo local en la aplicación
Team Miner y agregarlo a un grupo de trabajo existente. El resultado esperado en este proceso es
5. Evaluación del sistema 77

Figura 5.3: Agregando un nuevo miembro al grupo

que el nuevo nodo local sea dado de alta y anexado al grupo de trabajo, para que posteriormente
sea descargado el componente de software local que hará la tarea de intermediario entre la fuente
de datos local y el Nodo Central de Cómputo(NCC). La figura 5.3 muestra la interfaz donde
el usuario puede registrar su nodo para participar en el grupo de trabajo. En dicha interfaz se
introduce su dirección IP y el grupo de trabajo en el que desea participar. En este ejemplo el
usuario agrega el nodo con la dirección IP “148.247.199.133” al grupo de trabajo “Estudio cáncer
de pecho”. A continuación un intermediario es descargado a la máquina que le corresponde el
IP señalado. El usuario deberá autorizar la ejecución de dicho componente en su máquina con
el fin de iniciar el proceso de obtención del clasificador

5.4.3 Construir un clasificador con información global

Este caso de prueba se enfoca en la obtención de un clasificador con información global. Para
esto se emplea la interfaz cliente que ha sido adaptada de la herramienta Weka para que trabaje
siguiendo el enfoque propuesto en este proyecto de investigación. Esta versión de la herramienta
Weka ha sido modificada para utilizar el componente de software antes mencionado. En esta
interfaz el usuario introduce la dirección IP donde se encuentra localizado el NCC, además de
seleccionar el grupo de trabajo que participa en este proceso y el atributo clase de este conjunto
de datos . Para llevar a cabo la prueba del clasificador obtenido, el usuario debe suministrar un
conjunto de prueba que contiene una serie de instancias históricas que cuentan ya con una clase
y que no han participado en el proceso de construcción del clasificador. En el ejemplo, el usuario
78 5.4. Casos de prueba

Figura 5.4: Interfaz del cliente Weka que permite solicitar clasificadores con información
global

solicita al NCC, que se encuentra en la dirección IP 148.247.199.129, la construcción de un


clasificador global para el problema de la aplicación de un fármaco a un paciente. Se selecciona
el grupo de trabajo “Estudio cáncer de pecho” y se asigna el atributo que definirá la clase,
para este ejemplo el atributo fármaco (Figura 5.4). Posteriormente, se selecciona el archivo
de prueba que servirá para evaluar el clasificador global que se obtenga y de esta manera el
sistema se encuentra listo para iniciar la construcción del clasificador. Es importante señalar que
si el nodo local pretende aportar su resumen de datos históricos para que sean utilizados como
entrenamiento en el proceso de construcción del clasificador, se debe preconfigurar la ubicación
del mismo en el intermediario local que se descargó del Team Miner. Una vez que el NCC lo
ha construido a través de interactuar con los nodos locales participantes, lo envı́a al cliente que
lo despliega en su ventana de resultados (Figura 5.5) junto con los resultados de su evaluación
con el conjunto de datos de prueba que se asigna para esta labor. Los datos resultantes de esta
evaluación se comentan en la siguiente sección.
5. Evaluación del sistema 79

Figura 5.5: Interfaz del cliente Weka aplicando el clasificador obtenido del NCC

5.4.4 Construcción de clasificadores locales, global y su


comparación

En este caso de prueba se busca validar la eficacia de los clasificadores creados a partir de
la información local, es decir, información que almacena un solo nodo participante en un tema
registrado, comparado con la eficiencia de un clasificador global creado a partir de resúmenes de
datos que provienen de distintos nodos interesados en un tema afı́n. El objetivo de la prueba es
analizar los diferentes clasificadores que se construyen a partir de distintas fuentes de datos en
distintos temas. Las fuentes de datos emulan tanto a instituciones que cuentan con un monto
limitado de información histórica (pocas instancias) como aquellas que cuentan con una cantidad
considerable de datos históricos (muchas instancias).

Experimento 1

De este conjunto de pruebas el experimento más grande fue hecho accediendo a tres grupos
homogéneos de datos de diferentes tamaños que se ubicaban cada uno en un nodo remoto
80 5.4. Casos de prueba

(Servidores Linux, Windows y Solaris). El primero de ellos está formado por 200 000 instancias,
el segundo contiene 300 000 y el tercero alcanza las 500 000 instancias, lo que globalmente
representarı́a un conjunto de datos de un millón de instancias. Estos tres grupos de datos con-
tienen 10 atributos y el atributo que define su clase. Se construyeron clasificadores locales sólo
con el conjunto de datos propio de cada nodo y posteriormente se construyó un clasificador
global a fin de obtener una comparativa empleando los algoritmos ID3 y una versión del C4.5
que no implementa la poda del árbol de decisión. Para validar la exactitud, tanto de los cla-
sificadores locales como del global se utilizaron distintos conjuntos de datos de 3751, 6377, y
14882 instancias como datos de prueba. Estos conjuntos de datos no tuvieron participación en
el proceso de construcción de ninguno de los clasificadores. Posteriormente los clasificadores
globales ID3 y C4.5 fueron evaluados con cada conjunto de prueba local para determinar su
desempeño en comparación con los clasificadores locales. De este experimento se derivaron los
siguientes resultados:

Porcentaje de instancias
Tipo Entrenamiento Prueba Correctas Incorrectas Sin clasificar
Local Global Local Global Local Global
Local(Linux) 200000 3751 56.01 88.72 17.78 1.25 26.21 10.03
Local(Solaris) 300000 6377 59.89 88.77 11.75 0.85 28.36 10.38
Local(Windows) 500000 14882 73.99 88.81 3.92 1.00 22.09 10.19
Global(propuesta) 1000000 25010 88.78 1.00 10.21

Tabla 5.1: Resultados algoritmo ID3 para el experimento 1

Porcentaje de instancias
Tipo Entrenamiento Prueba Correctas Incorrectas Sin clasificar
Local Global Local Global Local Global
Local(Linux) 200000 3751 57.26 89.02 13.84 0.88 28.9 10.1
Local(Solaris) 300000 6377 61.74 89.04 6.12 0.49 32.14 10.47
Local(Windows) 500000 14882 75.49 89.24 1.55 0.57 22.96 10.19
Global(propuesta) 1000000 25010 89.16 0.6 10.24

Tabla 5.2: Resultados algoritmo C4.5 para el experimento 1


5. Evaluación del sistema 81

Instancias clasificadas incorrectamente (%)


Instancias clasificadas correctamente (%) Clasificador Local ID3 Clasificador Local ID3
Clasificador Global ID3 Clasificador Global ID3
Clasificador Local C4.5 Clasificador Local C4.5
Clasificador Global C4.5 Clasificador Global C4.5

90 18
85 16
14
80 12
75 10
70 8
65 6
4
60 a 2 a
55 16000 eb 0 16000 eb
14000 pru 14000 pru
12000 de 12000 de
10000 to 10000 to
8000 un 8000 un
200000 250000 6000 nj 200000 250000 6000 nj
300000 350000 4000 co 300000 350000 4000 co
400000 450000 o 400000 450000 o
5000002000 an 5000002000 an
m m
Ta Ta
Tamano conjunto de entrenamiento Tamano conjunto de entrenamiento

(a) Exactitud de clasificador (b) Porcentaje de instancias incorrectas

Clasificador Local ID3


Clasificador Global ID3
Clasificador Local C4.5
Clasificador Global C4.5

35
Instancias no clasificadas (%)

30
25
20
15
a
10 16000 eb
14000 pru
12000 de
10000 to
8000 un
200000 250000 6000 nj
300000 350000 4000 co
400000 450000 o
5000002000 an
m
Ta
Tamano conjunto de entrenamiento

(c) Instancias no clasificadas

Figura 5.6: Gráfica de comportamiento de los clasificadores ID3y C4.5 experimento 1

De las tablas de datos 5.1 y 5.2 la primera columna presenta el tipo de clasificador que
se está utilizando (local o global) y el servidor que lo ejecuta. Es importante recordar que un
clasificador local sólo se construye con datos que se obtienen del mismo servidor participante.
La versión global implica el uso de resúmenes emitidos por nodos registrados en un tema afı́n.
82 5.4. Casos de prueba

Existe la posibilidad de que un servidor se registre en un tema sin contar con datos históricos, lo
que le hace imposible construir un clasificador local. Es este caso siempre se buscará una opción
global. La segunda columna muestra el tamaño del conjunto de entrenamiento empleado; cabe
señalar que la última fila representa los datos correspondientes al clasificador global, el cual fue
construido a partir de los metadatos de los tres conjuntos de datos locales y que representa,
para este ejemplo, la suma de un millón de instancias. La tercera columna muestra el tamaño
del grupo de prueba. Por último las columnas de la cuarta a la novena indican los porcentajes de
instancias del conjunto de prueba que fueron correctamente, incorrectamente y no clasificadas
respectivamente para la versión local y global del clasificador.

Como se observa en la tablas 5.1, 5.2 y en la figura 5.6 al fusionar o emplear los 3 fuentes
de datos y crear a partir de ellas un clasificador se obtiene como resultado una mayor precisión
en este último. También se reduce el porcentaje de las instancias incorrectamente clasificadas
y no clasificadas en comparación con los clasificadores construidos de manera local. Se puede
apreciar que mientras más grande es el conjunto de entrenamiento se obtiene un clasificador
más exacto y que este beneficia en mayor porcentaje a el nodo que cuenta con un conjunto de
datos más chico obteniendo una ganancia de alrededor del 30 por ciento en exactitud.

El conjunto de prueba usado en este experimento llamado Poker Hand, el cual suma un total
de un millón de instancias, fue obtenido del sitio Web UCI Machine Learning Repository[3]. En
este conjunto de datos cada instancia es un ejemplo de una mano de poker de una baraja
estándar de 52 y tiene como propósito predecir manos de poker considerando 5 jugadores. Cada
carta es descrita usando dos atributos, (palo y rango) para un total de 10 atributos predictivos.
Tiene además un atributo clase que describe la mano de poker y el cual cuenta con 10 posibles
clases. El orden de las cartas es importante lo cual se debe a que hay 480 flores imperiales
posibles. A continuación se listan los atributos que forman este conjunto de datos ası́ como sus
posibles valores:

1. S1 Palo de la carta 1 Ordinal (1-4) representando Corazones, Espadas, Diamantes, Picas


5. Evaluación del sistema 83

2. C1 Rango de la carta 1 Numérico (1-13) representando (As, 2, 3, ... , Reina, Rey)

3. S2 Palo de la carta 2 Ordinal (1-4) representando Corazones, Espadas, Diamantes, Picas

4. C2 Rango de la carta 2 Numérico (1-13) representando (As, 2, 3, ... , Reina, Rey)

5. S3 Palo de la carta 3 Ordinal (1-4) representando Corazones, Espadas, Diamantes, Picas

6. C3 Rango de la carta 3 Numérico (1-13) representando (As, 2, 3, ... , Reina, Rey)

7. S4 Palo de la carta 4 Ordinal (1-4) representando Corazones, Espadas, Diamantes, Picas

8. C4 Rango de la carta 4 Numérico (1-13) representando (As, 2, 3, ... , Reina, Rey)

9. S5 Palo de la carta 5 Ordinal (1-4) representando Corazones, Espadas, Diamantes, Picas

10. C5 Rango de la carta 5 Numérico (1-13) representando (As, 2, 3, ... , Reina, Rey)

11. Mano de poker Ordinal (0-9) (Clase)

0: Nada en mano;

1: Un par;

2: Dos pares;

3: Tercia;

4: Escalera;

5: Color;

6: Full;

7: Poker;

8: Flor corrida;

9: Flor imperial;
84 5.4. Casos de prueba

Experimento 2

El siguiente experimento fue llevado a cabo empleando fuentes de datos ahora de tamaño
de 8 000, 16 672 y 20 000 instancias respectivamente, las cuales cuentan con 14 atributos y
el atributo clase. Con estas fuentes de datos se construyeron de manera independiente clasifi-
cadores locales ID3 y C.45. Posteriormente, utilizando la información global de las 3 fuentes,
se obtuvieron los clasificadores globales a partir de resúmenes con los mismos algoritmos. Para
evaluar los clasificadores locales se usaron grupos de prueba conteniendo 610, 1038 y 2422 ins-
tancias, mismos que se emplearon para evaluar los clasificadores globales. De este experimento
se derivaron los siguientes resultados(tablas 5.3 y 5.4):

Porcentaje de instancias
Tipo Entrenamiento Prueba Correctas Incorrectas Sin clasificar
Local Global Local Global Local Global
Local(Linux) 8000 610 74.43 75.74 17.87 20.16 7.7 4.1
Local(Solaris) 16672 1038 75.72 76.01 18.5 18.25 5.78 5.74
Local(Windows) 20000 2422 73.82 76.55 19.08 17.96 7.1 5.49
Global(propuesta) 44672 4070 76.95 17.94 5.11

Tabla 5.3: Resultados algoritmo ID3 para el experimento 2

Porcentaje de instancias
Tipo Entrenamiento Prueba Correctas Incorrectas Sin clasificar
Local Global Local Global Local Global
Local(Linux) 8000 610 75.74 75.9 17.38 19.67 6.88 4.43
Local(Solaris) 16672 1038 75.24 76.3 19.27 18.11 5.49 5.59
Local(Windows) 20000 2422 74.85 77.01 19.12 17.75 6.03 5.24
Global(propuesta) 44672 4070 77.99 16.8 5.21

Tabla 5.4: Resultados algoritmo C4.5 para el experimento 2

Las tablas 5.3 y 5.4 presentan una estructura igual a la que se define en las tablas 5.1, 5.2.
5. Evaluación del sistema 85

Instancias clasificadas incorrectamente(%)


Clasificador Local ID3 Clasificador Local ID3
Instancias clasificadas correctamente (%)

Clasificador Global ID3 Clasificador Global ID3


Clasificador Local C4.5 Clasificador Local C4.5
Clasificador Global C4.5 Clasificador Global C4.5

77.5 20.5
77 20
76.5 19.5
76 19
75.5
75 18.5
74.5 18
74 a 17.5 a
73.5 2600 b 17 2600 b
2400 ue 2400 ue
2200 pr 2200 pr
2000 d e 2000 d e
1800 o 1800 o
1600
1400 nt 1600
1400 nt
8000 10000 1200 n ju 8000 10000 1200 n ju
12000 14000 1000 co 12000 14000 1000 co
16000 18000 800 o 16000 18000 800 o
20000600 an 20000600 an
m m
Ta Ta
Tamano conjunto de entrenamiento Tamano conjunto de entrenamiento

(a) Exactitud del clasificador (b) Porcentaje de instancias incorrectas

Clasificador Local ID3


Clasificador Global ID3
Clasificador Local C4.5
Clasificador Global C4.5
Instancias no clasificadas (%)

8
7.5
7
6.5
6
5.5
5
4.5 a
4 2600 b
2400 ue
2200 pr
2000 d e
1800
1600 to
1400 j un
8000 10000 1200 n
12000 14000 1000 co
16000 18000 800 o
20000600 an
m
Ta
Tamano conjunto de entrenamiento

(c) Porcentaje de instancias no clasificadas

Figura 5.7: Gráfica de comportamiento de los clasificadores ID3 y C4.5 para el experimento
2

Como se puede apreciar en las tablas 5.3, 5.4 y en la figura 5.7 los clasificadores construidos
sobre el conjunto de datos global obtuvo mejores resultados comparados con los clasificadores
locales.
86 5.4. Casos de prueba

Un aspecto a notar son los resultados del clasificador local del nodo Solaris, el cual a pesar
de tener alrededor de 3 000 instancias menos que el nodo Windows obtuvo un porcentaje de
instancias correctamente clasificadas ligeramente mayor al de este último que contaba con 20
000 instancias en los dos clasificadores construidos. Lo anterior puede derivarse del hecho que
la fuente de datos en Solaris tenga una mayor representatividad de todos los posibles casos.

El conjunto de prueba empleado en este experimento Adult o Census Income, fue obtenido
del sitio Web UCI Machine Learning Repository[3] y tiene como propósito determinar si una
persona tendrá un ingreso de 50 000 al año a aprtir de una seria de atributos. Tiene un total
de 48842 instancias y 14 atributos. Cuenta con un atributo clase con 2 posibles clases. Los
atributos que forman este conjunto de datos son:

1. class: >50K, ≤50K.

2. age: continuous

3. workclass: Private, Self-emp-not-inc, Self-emp-inc, Federal-gov, Local-gov, State-gov, Without-


pay, Never-worked.

4. fnlwgt: continuous.

5. education: Bachelors, Some-college, 11th, HS-grad, Prof-school, Assoc-acdm, Assoc-voc,


9th, 7th-8th, 12th, Masters,

6. 1st-4th, 10th, Doctorate, 5th-6th, Preschool.

7. education-num: continuous.

8. marital-status: Married-civ-spouse, Divorced, Never-married, Separated, Widowed, Married-


spouse-absent, Married-AF-spouse.

9. occupation: Tech-support, Craft-repair, Other-service, Sales, Exec-managerial, Prof-specialty,


Handlers - cleaners, Machine-op-inspct, Adm-clerical, Farming-fishing, Transport-moving,
Priv-house-serv, Protective-serv, Armed-Forces.
5. Evaluación del sistema 87

10. relationship: Wife, Own-child, Husband, Not-in-family, Other-relative, Unmarried.

11. race: White, Asian-Pac-Islander, Amer-Indian-Eskimo, Other, Black.

12. sex: Female, Male.

13. capital-gain: continuous.

14. capital-loss: continuous.

15. hours-per-week: continuous.

16. native-country: United-States, Cambodia, England, Puerto-Rico, Canada, Germany, Outl-


ying - US( Guam - USVI-etc), India, Japan, Greece, South, China, Cuba, Iran, Hon-
duras, Philippines, Italy, Poland, Jamaica, Vietnam, Mexico, Portugal, Ireland, France,
Dominican-Republic, Laos,Ecuador, Taiwan, Haiti, Columbia, Hungary, Guatemala, Ni-
caragua, Scotland, Thailand, Yugoslavia, El-Salvador, Trinadad y Tobago, Peru, Hong,
Holand-Netherlands.

Experimento 3

El siguiente experimento fue realizado empleando 3 fuentes de datos distintas con tamaños de
116, 186 y 279 instancias respectivamente. Estas fuentes de datos contaban con 35 atributos y el
atributo clase. Se construyó un clasificador ID3 y C4.5 con cada fuente de datos y posteriormente
se obtuvieron los clasificadores globales. Para evaluar estos clasificadores se usaron grupos de
prueba conteniendo de 15, 26 y 61 instancias. De este experimento se derivaron los siguientes
resultados(tablas 5.5 y 5.6):

Los resultados que se aprecian en las tablas 5.5 y 5.6 al igual que en las evaluaciones
anteriores muestran una continuidad en las ventajas que ofrece el clasificador global. La idea de
esta prueba fue verificar si el incremento en el número de atributos podı́a tener alguna impacto
importante en los resultados de los clasificadores, situación que para esta prueba no ocurrió.
88 5.4. Casos de prueba

Porcentaje de instancias
Tipo Entrenamiento Prueba Correctas Incorrectas Sin clasificar
Local Global Local Global Local Global
Local(Linux) 116 15 66.67 86.67 33.33 13.33 0 0
Local(Solaris) 186 26 69.23 92.31 26.92 7.69 3.85 0
Local(Windows) 279 61 75.41 88.52 19.67 8.2 4.92 3.28
Global(propuesta) 581 102 89.22 8.82 1.96

Tabla 5.5: Resultados algoritmo ID3 para el experimento 3


Porcentaje de instancias
Tipo Entrenamiento Prueba Correctas Incorrectas Sin clasificar
Local Global Local Global Local Global
Local(Linux) 116 15 86.67 86.67 0 13.33 13.33 0
Local(Solaris) 186 26 80.77 88.46 15.38 7.69 3.85 3.85
Local(Windows) 279 61 90.16 91.8 8.2 6.56 1.64 1.64
Global(propuesta) 581 102 90.2 7.84 1.96

Tabla 5.6: Resultados algoritmo C4.5 para el experimento 3

En este experimento se usó el conjunto de datos Soybean disponible en el sitio Web UCI
Machine Learning Repository[3]. Este conjunto de datos es un estudio de la plaga de la semilla
de soya. Tiene un total de 683 instancias, 35 atributos discretos y su atributo clase el cual cuenta
con 19 posibles clases. A continuación se presentan los atributos:

1. date: april,may,june,july,august,september,october,?.

2. plant-stand: normal,lt-normal,?.

3. precip: lt-norm,norm,gt-norm,?.

4. temp: lt-norm,norm,gt-norm,?.

5. hail: yes,no,?.

6. crop-hist: diff-lst-year,same-lst-yr,same-lst-two-yrs,same-lst-sev-yrs,?.

7. area-damaged: scattered,low-areas,upper-areas,whole-field,?.

8. severity: minor,pot-severe,severe,?.

9. seed-tmt: none,fungicide,other,?.
5. Evaluación del sistema 89

10. germination: 90-100,80-89,lt-80,?.

11. plant-growth: norm,abnorm,?.

12. leaves: norm,abnorm.

13. leafspots-halo: absent,yellow-halos,no-yellow-halos,?.

14. leafspots-marg: w-s-marg,no-w-s-marg,dna,?.

15. leafspot-size: lt-1/8,gt-1/8,dna,?.

16. leaf-shread: absent,present,?.

17. leaf-malf: absent,present,?.

18. leaf-mild: absent,upper-surf,lower-surf,?.

19. stem: norm,abnorm,?.

20. lodging: yes,no,?.

21. stem-cankers: absent,below-soil,above-soil,above-sec-nde,?.

22. canker-lesion: dna,brown,dk-brown-blk,tan,?.

23. fruiting-bodies: absent,present,?.

24. external decay: absent,firm-and-dry,watery,?.

25. mycelium: absent,present,?.

26. int-discolor: none,brown,black,?.

27. sclerotia: absent,present,?.

28. fruit-pods: norm,diseased,few-present,dna,?.

29. fruit spots: absent,colored,brown-w/blk-specks,distort,dna,?.


90 5.4. Casos de prueba

30. seed: norm,abnorm,?.

31. mold-growth: absent,present,?.

32. seed-discolor: absent,present,?.

33. seed-size: norm,lt-norm,?.

34. shriveling: absent,present,?.

35. roots: norm,rotted,galls-cysts,?.

36. class diaporthe-stem-canker, charcoal-rot, rhizoctonia-root-rot, phytophthora-rot, brown-


stem-rot, powdery-mildew, downy-mildew, brown-spot, bacterial-blight, bacterial-pustule,
purple-seed-stain, anthracnose, phyllosticta-leaf-spot, alternarialeaf-spot, frog-eye-leaf-spot,
diaporthe-pod-&-stem-blight, cyst-nematode, 2-4-d-injury, herbicide-injury
5. Evaluación del sistema 91

Instancias clasificadas incorrectamente(%)


Clasificador Local ID3 Clasificador Local ID3
Instancias clasificadas correctamente (%)

Clasificador Global ID3 Clasificador Global ID3


Clasificador Local C4.5 Clasificador Local C4.5
Clasificador Global C4.5 Clasificador Global C4.5

95 35
90 30
85 25
20
80
15
75 10
70 5
b a ba
65 65 0 65
60 ue 60 ue
55 pr 55 pr
50 d e 50 d e
45 o 45 o
40
35 nt 40
35 nt
100 120 30 n ju 100 120 30 n ju
140 160
180 200 25 co 140 160
180 200 25 co
220 240 20 o 220 240 20 o
260 280 15 an 260 280 15 an
m m
Ta Ta
Tamano conjunto de entrenamiento Tamano conjunto de entrenamiento

(a) Exactitud del clasificador (b) Porcentaje de instancias incorrectas

Clasificador Local ID3


Clasificador Global ID3
Clasificador Local C4.5
Clasificador Global C4.5
Instancias no clasificadas (%)

14
12
10
8
6
4
2 a
0 65 b
60 ue
55 pr
50 d e
45
40 to
35 j un
100 120 30 n
140 160
180 200 25 co
220 240 20 o
260 280 15 an
m
Ta
Tamano conjunto de entrenamiento

(c) Porcentaje de instancias no clasificadas

Figura 5.8: Gráfica de comportamiento de los clasificadores ID3 y C4.5 para el experimento
3

A través de estos experimentos se pudo confirmar que conforme se obtiene una mayor
92 5.4. Casos de prueba

información histórica, la probabilidad de crear un clasificador más eficiente aumenta. También


es posible la obtención de un clasificador con información global, que se obtiene a partir de una
serie de nodos remotos que comparten metadatos con un nodo central. De esta manera se evita
que se transfiera la información en su totalidad otorgando un cierto grado de confidencialidad
y creando un escenario óptimo para que organizaciones puedan compartir sus fuentes de datos
entre sı́ con la finalidad de obtener un clasificador más exacto.
También se pudo apreciar con base en algunos clasificadores locales que el hecho de que una
fuente de datos sea de menor tamaño que otra no implica que siempre obtendrá resultados
inferiores. Si esta fuente de datos representa de una manera más amplia todos los posibles
casos referente al tema de estudio o problema que un momento dado se pueden presentar, ésta
obtendrá buenos o mejores resultados. El clasificador obtenido con información global es más
rico en este sentido al considerar todos los posibles casos presentados en todas las fuentes de
datos que participan en su construcción. Fue notorio el hecho de que en la mayorı́a de los casos
los nodos que cuentan con una fuente de datos más pequeña resultaron ser los más beneficiados
con el uso del clasificador global en comparación con los nodos que cuentan con una fuente de
datos más grande. No obstante en todos los casos también estos nodos con fuentes grandes
obtuvieron alrededor de un 10 % de ganancia con la obtención del clasificador global.
Conclusiones
6
Este capı́tulo presenta las conclusiones y comentarios finales del presente trabajo de inves-
tigación. Discute brevemente las principales aportaciones, ventajas, ası́ como desventajas del
enfoque propuesto. Por último ofrece un panorama del posible trabajo que pudiera seguir este
proyecto en el futuro.

6.1 Conclusiones

Como se apreció en el capı́tulo 3, existen hoy en dı́a diversas herramientas que soportan la
minerı́a de datos distribuida. La mayorı́a de ellos tienen como enfoque central la distribución
y ejecución de distintas tareas de minerı́a de datos sobre nodos Grid. Esto es, que ofrecen la
capacidad de ejecutar varias tareas a la vez tomando ventajas de todos los recursos que les
ofrece el cómputo Grid. Sin embargo, no considera la posibilidad de obtener un único clasifica-
dor a partir de varias fuentes de datos sin transferir la información completa desde cada nodo
participante, lo que abrirı́a una puerta a la invasión de la privacidad de estos datos. Es por eso

93
94 6.2. Aportaciones

que el objetivo principal de este trabajo de investigación es la obtención de un clasificador con


información global a partir de utilizar sólo metainformación. Con base en el trabajo desarrollado
y a las pruebas realizadas a la implementación de la arquitectura, se demostró que es posible la
construcción de clasificadores ID3 y C4.5 con metainformación global a través de una serie de
componentes distribuidos.

Este enfoque alienta a que diversas organizaciones que tienen la necesidad de analizar sus
datos los compartan con otras organizaciones que cuentan con fuentes de datos similares y más
robustas, beneficiando con esto a las pequeñas organizaciones. Para fomentar esta compartición
de datos el enfoque evita la transferencia total de cada fuente local de datos al nodo de proce-
samiento. En lugar de esta opción, la aplicación solicita una serie de metadatos que resumen a
cada fuente de datos siendo esto sólo la información necesaria para la construcción del clasifi-
cador. De esta manera preserva en cierta medida la privacidad de los datos.

Gracias al clasificador global, las organizaciones pequeñas se ven beneficiadas con un cla-
sificador más exacto que el que pudieran generar sólo con sus propias fuentes de datos. Esto
debido a que se obtiene un clasificador más exacto cuando el conjunto de datos, del cual se
obtiene, representa de manera más amplia los posibles casos del problema en cuestión.

6.2 Aportaciones
Una de las aportaciones que el presente trabajo ofrece es la arquitectura que soporta la
herramienta Team Miner. Esta arquitectura hace posible la construcción del clasificador con
información global de varias fuentes de datos distribuidas utilizando algoritmos bien aceptados
como ID3 y C4.5, lo que favorece a pequeñas organizaciones.
La otra de las aportaciones es la implementación de la arquitectura, la herramienta Team Miner.
Esta herramienta hace posible la colaboración de diversas organizaciones a través de la creación
6. Conclusiones 95

de grupos de trabajo a los cuales se pueden incorporar diversos usuarios. Estos usuarios repre-
sentan a organizaciones que cuentan con fuentes de datos con una estructura en común y las
cuales pueden ser compartidas a través de una serie de metadatos.

6.3 Ventajas
Dentro de las ventajas que el presente trabajo ofrece se encuentran las siguientes:

Hace posible la creación de un clasificador con información global a diferencia de las


herramientas que soportan la minerı́a distribuida de datos.

La obtención de este clasificador a través de metadatos originados a partir de la informa-


ción original hace posible la compartición de información entre distintas instituciones y
organizaciones que cuentan con un objetivo en común.

Al emplear sólo metadatos ayuda a preservar la privacidad de las fuentes de datos de cada
organización.

6.4 Desventajas
El trabajo actual presenta las siguientes desventajas:

A pesar de que las fuentes de datos son distribuidas, el centro de la arquitectura es un


Nodo Central de Cómputo, lo que representa un enfoque centralizado, significando que la
implementación recae en el continuo y buen funcionamiento de este componente central.
Si este no está activo no es posible la generación de nuevos clasificadores globales.

La pronta respuesta de este enfoque está supeditada a la velocidad de la red y medios de


comunicación, por lo que el tiempo de obtención de clasificadores para fuentes de datos
grandes puede ser elevado.
96 6.5. Trabajo futuro

6.5 Trabajo futuro


Entre los posibles caminos que pudiera seguir este trabajo de investigación en un futuro
están el trabajar en la implementación de un enfoque descentralizado, lo que vendrı́a a solucio-
nar el problema de la caı́da o inactividad del único Nodo Central de Cómputo. Esto ofrecerı́a a
los usuarios una manera de contar con opciones alternas que hagan posible que la herramienta
pueda recuperarse de la caı́da de un servidor ofreciendo siempre su funcionalidad.

Otro posible plan futuro es la adición de nuevas técnicas de minerı́a de datos a esta herra-
mienta. De esta manera se enriquecerı́an los servicios ofrecidos por la herramienta manteniendo
siempre el enfoque de las fuentes de datos distribuidas en diversos nodos que cuentan con un
intermediario. Es importante señalar que el diseño de la aplicación Team Miner permitirı́a la
incorporación de estos nuevos servicios de manera sencilla.
A
Códigos

Este apéndice contiene algunas de las funciones más importantes de los componentes de la
aplicación

A.1 Nodo Central de Cómputo


Función main del Nodo Central de Cómputo que inicia y registra el servicio en el directorio
RMIRegistry

public static void main(String[] args){

if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}

97
98 A.1. Nodo Central de Cómputo

InetAddress localhost = null;


try {
localhost = InetAddress.getLocalHost();
System.err.println("Host name : "+localhost.getHostName());
} catch (Exception ex) {
ex.printStackTrace();
}
String name;
if (localhost != null) {
name = "//"+localhost.getHostName()+"/ID3";
} else {
name = "//localhost/ID3";
}

try{
ClassifierBuilder cb = new ClassifierBuilder();
Naming.rebind(name,cb);
System.out.println("Central Node bound in RMI registry");
} catch (Exception e) {
System.err.println("Central Node exception: " + e.getMessage());

try {
System.err.println("Attempting to start rmi registry...");
java.rmi.registry.LocateRegistry.createRegistry(1099);
ClassifierBuilder cb = new ClassifierBuilder();
Naming.rebind(name, cb);
System.out.println("Central Node bound in RMI registry");
A. Códigos 99

} catch (Exception ex) {


ex.printStackTrace();
}
}

A.2 ClassifierBuilder
La función getClassifer del módulo Constructor del clasificador es la encargada de instanciar
la clase que implementa el algoritmo ID3.

public Nodo getClassifier(int classIndex, int idGroup, boolean ban)


throws RemoteException{
Vector servers=null;
Id3 id3=null;

System.out.println("Construyendo clasificador\nIdGroup: " + idGroup);


System.out.println("Index class: " + classIndex);
try{
servers=loadServers(idGroup);
System.out.println("Servidores cargados");
id3 =new Id3(servers,classIndex,ban);
}catch(Exception ex){
System.out.println(ex.toString());
}
id3.buildClassifier();
numInstances=id3.getNumInstances();
100 A.3. Clase Id3

System.out.println("Clasificador construido");

try{
MyConnection conn=new MyConnection(server,user,passwd,driver);
conn.saveClassifier(id3,idGroup);
conn.closeConnection();
}catch(Exception ex){
System.out.println(ex.toString());
}
Nodo node=id3.getTree();
return node;
}

A.3 Clase Id3


A continuación se presenta la función makeTree, función principal encargada de construir el
clasificador. Esta función recibe un vector con el resumen global inicial de datos, para después
invocarse a sı́ misma de manera recurrente a medida se construye el clasificador o árbol de
decisión.

private void makeTree(Vector data) throws Exception {


int i,i_attr;
i=i_attr=0;

if (numInstances((Vector)data.get(clase)) == 0) {
m_Attribute = null;
m_ClassValue = Instance.missingValue();
m_Distribution = new double[((Attribute)Atributos.elementAt(clase))
A. Códigos 101

.numValues()];
raiz=true;
return;
}

double[] infoGains = new double[data.size()];


Enumeration attEnum = data.elements();
double tot_inst=numInstances((Vector)data.get(clase));
double ent_gral = computeEntropy((Vector)data.get(clase));

while (attEnum.hasMoreElements()) {
Vector att = (Vector) attEnum.nextElement();
if(i!=clase){
try {
infoGains[i] = computeInfoGain(ent_gral,tot_inst,att);
} catch (Exception ex) {
ex.printStackTrace();
}
}
i++;
}

i_attr=Utils.maxIndex(infoGains);
m_Attribute = (Attribute)Atributos.elementAt(i_attr);

if (Utils.eq(infoGains[m_Attribute.index()], 0)) {
m_Attribute = null;
102 A.3. Clase Id3

m_Distribution = new double[((Attribute)Atributos.elementAt(clase)).numValues()];


for(int j=0;j<((Attribute)Atributos.elementAt(clase)).numValues();j++){
m_Distribution[j]=((Integer)((Vector)data.get(clase)).get(j)).intValue();
}
Utils.normalize(m_Distribution);
m_ClassValue = Utils.maxIndex(m_Distribution);
m_ClassAttribute = (Attribute)Atributos.elementAt(clase);
raiz=true;
}else{

Enumeration enVal=m_Attribute.enumerateValues();
m_Successors = new Id3[m_Attribute.numValues()];
int j=0;
while(enVal.hasMoreElements()){
String cad=(String)enVal.nextElement();
Vector nueva=tabla_global(agents,i_attr,cad,fin_nodo,raiz);
fin_nodo=0;
raiz=false;
m_Successors[j] = new Id3();
asigna_valores_variables(m_Successors[j]);
m_Successors[j].makeTree(nueva);
j++;
}
fin_nodo++;
}
}
Bibliografı́a

[1] Rakesh Agrawal and Ramakrishnan Srikant. Fast algorithms for mining association rules.
In Jorge B. Bocca, Matthias Jarke, and Carlo Zaniolo, editors, Proc. 20th Int. Conf. Very
Large Data Bases, VLDB, pages 487–499. Morgan Kaufmann, 12–15 1994.

[2] B. Allcock, J. Bresnahan, R. Kettimuthu, M. Link, C. Dumitrescu, I. Raicu, and I. Foster.


The Globus Striped GridFTP Framework and Server. In Conf. on Supercomputing (SC’05),
2005.

[3] A. Asuncion and D.J. Newman. UCI machine learning repository.


http://www.ics.uci.edu/∼mlearn/MLRepository.html, 2007.

[4] Leo Breiman, Jerome Friedman, Richard Olshen, and Charles Stone. Classification and
Regression Trees. Wadsworth International Group, 1984.

[5] World Wide Web Consortium. W3c. http://www.w3.org/, 2008.

[6] Chair for Bioinformatics and Information Mining at the University of Konstanz Germany.
Knime 1.3.1. http://www.knime.org, 2007.

[7] I. Foster. Network and Parallel Computing, volume 3779 of LNCS, chapter Globus Toolkit
Version 4: Software for Service-Oriented Systems, pages 2–13. Springer, 2005.

[8] Eclipse Foundation. Eclipse project. http://www.eclipse.org/, 2007.

[9] Jiawei Han and Micheline Kamber. Data Mining: Concepts and Techniques. Morgan
Kaufmann Publishers, San Francisco, 2000.

[10] M Hearst, B. Schölkopf, S. Dumais, E. Osuna, and J. Platt. Trends and controversies -
support vector machine. pages 18–28. IEEE, Intelligent systems, 1998.

103
104 BIBLIOGRAFÍA

[11] Omar Jasso-Luna, Vı́ctor Sosa-Sosa, and Iván Lopez-Arevalo. An approach to building
a distributed id3 classifier. In Advances in Soft Computing, volume 50, pages 385–394.
Springer, 2008.

[12] Omar Jasso-Luna, Vı́ctor Sosa-Sosa, and Iván Lopez-Arevalo. Global classifier for confiden-
tial data in distributed datasets. In Lectures Notes in Computer Science, pages 315–324.
Springer, 2008.

[13] Omar Jasso-Luna, Vı́ctor Sosa-Sosa, and Iván Lopez-Arevalo. Towards a distributed data-
sets classifier. Polish Journal of Environmental Studies, 2008.

[14] R. Khoussainov, X. Zuo, and N. Kushmerick. Grid-enabled weka: A toolkit for machine
learning on the grid. ERCIM News, (59):47–48, October 2004.

[15] J. McQueen. Some methods for classification and analysis of multivariations. In Proc. 5th
Berkeley Symposium on Mathematical Statistics and Probability, pages 281–2297, 1967.

[16] Ingo Mierswa, Martin Scholz, and Michael Wurst. Yale: Rapid prototyping for complex
data mining tasks. In In Proceedings of the 12th ACM SIGKDD International PONZETTO
AND STRUBE Conference on Knowledge Discovery and Data Mining, pages 935–940.
ACM Press, 2006.

[17] Tom Mitchell. Machine Learning. McGraw-Hill, 1997.

[18] W3C Working Group Note. Web service glossary. http://www.w3.org/TR/ws-gloss/, 2008.

[19] University of Illinois, Data Mining Research Group, and DAIS Research Laboratory. Illimine
1.1.0. http://illimine.cs.uiuc.edu/, 2006.

[20] Statistics Department of the University of Auckland. R project 2.6.1. http://www.r-


project.org/, 2007.

[21] Artificial Intelligence Unit of University of Dortmund. Yale 4.0. http://rapid-i.com/, 2007.

[22] Web Services Interoperability Organization. Ws-i. http://www.ws-i.org/, 2008.


BIBLIOGRAFÍA 105

[23] A. M. Tjoa P. Brezany, J. Hofer and A. Woehrer. Towards an open service architecture for
data mining on the grid. In Conference on Database and Expert Systems. IEEE, 2003.

[24] M. S. Pérez, A. Sánchez, P. Herrero, V. Robles, Peña, and J. M. Advances in Web


Intelligence, volume 3528/2005 of Lecture Notes in Computer Science, chapter Adapting
the Weka Data Mining Toolkit to a Grid based environment, pages 492–497. Springer,
2005.

[25] J. R. Quinlan. Induction of decision trees. In Machine Learning, pages 81–106, 1986.

[26] J. Ross Quinlan. C4.5: programs for machine learning. Morgan Kaufmann, San Francisco,
CA, 1993.

[27] A. Shaikh Ali, O. F. Rana, and I. J. Taylor. Web services composition for distributed data
mining. In International Conference Workshop on Parallel Processing, pages 11–18. IEEE,
2005.

[28] C. Shannon. A mathematical theory of communication. The Bell System Technical, 27:379–
423,623–656, 1948.

[29] Domenico Talia, Paolo Trunfio, and Oreste Verta. Knowledge Discovery in Databases:
PKDD 2005, volume 3721/2005 of Lecture notes in Computer Science, chapter Weka4WS:
A WSRF-Enabled Weka Toolkit for Distributed Data Mining on Grids, pages 309–320.
Springer, 2005.

[30] Domenico Talia, Paolo Trunfio, and Oreste Verta. Computational Science and Its Appli-
cations - ICCSA 2006, volume 3980/2006 of Lecture Notes in Computer Science, chapter
WSRF Services for Composing Distributed Data Mining Applications on Grid: Functionality
and Performance, pages 1080–1089. Springer, 2006.

[31] Cardiff University. The triana project 3.2.3. http://www.trianacode.org/.


106 BIBLIOGRAFÍA

[32] Y. Guo M. Kohler A. Rowe J. Syed V. Curcin, M. Ghanem and P. Wendel. Discovery net:
Towards a grid of knowledge discovery. In The 8th ACM SIGKDD International Conference
on Knowledge Discovery and Data Mining. ACM, 2002.

[33] G. Williams. Rattle 2.2.74. http://rattle.togaware.com/, 2007.

[34] H. Witten and Eibe Frank. Data Mining: Practical machine learning tools and techniques.
2005.

[35] Y. Yang and J Pedersen. A comparative study on feature selection in text categorization. In
In Proceedings of the 14th International Conference on Machine Learning, pages 412–420,
1997.

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