Академический Документы
Профессиональный Документы
Культура Документы
Maestro en Ciencias
en Computación
Director de la Tesis:
Dr. Vı́ctor Jesús Sosa Sosa
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:
A mi asesor, Dr. Vı́ctor Sosa, por brindarme su apoyo y directriz para llevar a cabo
este proyecto.
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 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
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
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
VI
Índice de Tablas
VII
Índice de Algoritmos
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. 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
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
XIV
Abstract
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
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
1.4 Objetivos
Objetivo general
Objetivos especı́ficos
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.
7
8 2.1. Minerı́a de datos
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]:
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.
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:
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
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.
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.
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.
Clasificador naive
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.
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
Entrenamiento:
Clasificación:
Regresar
k
X
c = argmaxci ∈C δ(ci , cij ) (2.6)
j=1
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).
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.
Entropı́a
H(D) = −Σm
i=1 pi log2 pi (2.7)
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|
Proporción de ganancia
G(D, A)
GR(D, A) = (2.9)
SI(D, A)
|Dj | |Dj |
SI(D, A) = −Σm
j=1 × log2 (2.10)
|D| |D|
2. Marco teórico 19
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:
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 .
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
10 10 4 4
H(D) = − log2 ( ) − log2 ( )
14 14 14 14
H(D) = 0,8631
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
Ahora con base en los resultados de la Tabla 2.6 vemos que el atributo otras alergias es
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:
1 1 2 2
H(D) = − log2 ( ) − log2 ( )
3 3 3 3
H(D) = 0,9182
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.
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
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
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).
Azúcar en Administrar
la sangre Índice de fármaco
colesterol
bajo bajo si
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.
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
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
Tabla 2.15: Cálculo de la proporción de ganancia para subconjunto de datos otras alergias
si
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.
Por su parte los servidores realizan, entre otras, las siguientes funciones:
El servidor presenta a todos sus clientes una interfaz única y bien definida.
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.
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.
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.
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].
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
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.
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
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.
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
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
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
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)
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.
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
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
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
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
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
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.
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.
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.
2. El intermediario solicita al NCC un clasificador global. El NCC ofrece dos opciones: obtener
el último clasificador global almacenado o construir uno nuevo.
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ó
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
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
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
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
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.
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.
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
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.
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
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).
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
se lleva a cabo en el NCC a partir de los metadatos que cada componente local le envı́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.
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.17: Metadatos globales formados a través de los metadatos de los nodos A y B
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.
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
73
74 5.2. Requerimientos
Utilizar el clasificador con los datos de prueba locales para cada institución participante
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
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
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ó.
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
Figura 5.2: Interfaz Web de la aplicación Team Miner para 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).
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
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
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
Figura 5.5: Interfaz del cliente Weka aplicando el clasificador obtenido del NCC
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
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
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
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
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:
10. C5 Rango de la carta 5 Numérico (1-13) representando (As, 2, 3, ... , Reina, Rey)
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
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
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
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
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
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:
2. age: continuous
4. fnlwgt: continuous.
7. education-num: continuous.
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
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
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
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
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
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
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:
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:
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
if (System.getSecurityManager() == null) {
System.setSecurityManager(new RMISecurityManager());
}
97
98 A.1. Nodo Central de Cómputo
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
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.
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;
}
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;
}
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
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.
[4] Leo Breiman, Jerome Friedman, Richard Olshen, and Charles Stone. Classification and
Regression Trees. Wadsworth International Group, 1984.
[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.
[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.
[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.
[21] Artificial Intelligence Unit of University of Dortmund. Yale 4.0. http://rapid-i.com/, 2007.
[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.
[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.
[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.
[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.