1
______________________________________________________________________________
_____________________________________________________________________________
COMPARACIÓN DEL FUNCIONAMIENTO DEL ALGORITMO C4.5 EN
UN MODELO DE PERSISITENCIA RELACIONAL CONTRA UN
MODELO NO RELACIONAL
Nicolás Lagos Ruiz
_____________________
Facultad de Ingeniería, Proyecto Curricular de Ingeniería de Sistemas
Bogotá D.C., Colombia
2016
2
______________________________________________________________________________
COMPARACIÓN DEL FUNCIONAMIENTO DEL ALGORITMO C4.5 EN
UN MODELO DE PERSISITENCIA RELACIONAL CONTRA UN
MODELO NO RELACIONAL
Nicolás Lagos Ruiz
Trabajo de grado presentado como requisito para optar al
Título de:
Ingeniero de Sistemas
Director:
M.Sc. NANCY GELVEZ GARCÍA
Codirector:
ESP. JOHN FREDDY PARRA PEÑA
Línea de Investigación:
Ingeniería de Software
Universidad Distrital Francisco José de Caldas
Facultad de Ingeniería
Bogotá D.C, Colombia
2016
3
______________________________________________________________________________
Nota de aceptación:
________________________________
________________________________
________________________________
________________________________
________________________________
_______________
Firma del Director del Trabajo de Grado
_________________________________
Firma del jurado
_________________________________
Bogotá, 2016
4
______________________________________________________________________________
Dedicatoria
A mis padres y mis hermanos del alma por estar siempre.
Por su apoyo incondicional, su ayuda y amor
Nicolás Lagos Ruiz
5
______________________________________________________________________________
Agradecimientos
A Dios por darme la oportunidad de concretar este importante proyecto y paso en mi vida.
A mis padres por su paciencia, acompañamiento, consejo, compresión, amor y guía infinitos.
A mi hermano Andrés por el acompañamiento y ayuda durante el proceso de elaboración.
A mi directora de Tesis el M.Sc. Nancy Gelvez Garcia y mi codirector ESP. John Freddy Parra
Peña por sus enseñanzas y su acompañamiento.
A Andrés Hamir Cobos Prada por su asesoría técnica y acompañamiento.
A Daniel Felipe Garzón Triana por su ayuda en la redacción.
A mis hermanos del alma por su apoyo incondicional.
A la universidad Distrital Francisco José de Caldas por la educación y formación recibidas a lo
largo de mi carrera.
Quiero darles mis más sinceros agradecimientos.
6
______________________________________________________________________________
Resumen
La minería de datos ha tomado relevancia en los últimos años, lejos de ser un tema nuevo,
es un tema que gana popularidad por ciertos periodos de tiempo, haciéndose evidente la necesidad
que tienen las organizaciones por convertir en información útil la gran cantidad de datos que
reciben en la actualidad.
Dentro de las herramientas existentes en el espectro de la minería de datos existe un
enfoque llamado árboles de decisión, usado para construir un árbol de relaciones entre diferentes
conjuntos de datos de manera probabilística, y haciendo uso de la entropía de la información y
otras técnicas.
En este documento se implementa un algoritmo generador de árboles de decisión,
utilizando dos enfoques similares pero con distinto propósito; modelos de persistencia relacional
y no relacional, ambos modelos considerados dentro de un ambiente clusterizado.
Dentro de la implementación del algoritmo C4.5, algoritmo generador, se construyó un
modelo de persistencia relacional utilizando PostgreSQL como motor de base de datos y Pgpool
como gestor del clúster. En contraparte, la implementación del modelo de persistencia no
relacional se construyó utilizando Hadoop, solución clusterizada por definición y su sistema de
archivos HDFS.
Finalmente, se ejecutan ambas implementaciones sobre un conjunto de datos de control y
un conjunto de datos “real”, comparando sus resultados por medio de una métrica, mostrándolos
y proponiendo posibles trabajos futuros.
Palabras clave: Minería de datos, Arboles de decisión, Persistencia, C4.5, Hadoop, HDFS,
PostgreSQL, Pgpool, Clúster.
7
______________________________________________________________________________
Abstract
Data mining has been a trending topic in recent years, but far from being a new trend, it
gains some popularity by time to time, making evident that data analytics’ and data storage is a
must today for every organization.
There are a lot of tools for data mining. One of them is decision trees, used to make a
relationship tree among different data sets in a probabilistic way and making use of entropy of
information and another informatics tools.
This document shows two different approaches of decision tree, using the relational model
and the non-relational model; both of them using a clustered environment.
Using C4.5 as the algorithm to make the decision tree, PostgreSQL, a free source database,
was selected as the relational solution, and Pgpool as cluster manager. On the other hand, Hadoop
was used as non-relational solution, clustered by default and its powerful data processor HDFS as
storage technique.
Finally, the results of running both implementations, using a test set and another with “real
life data”, making a comparison by the use of a metric were shown, besides future works.
Key words: Data mining, Decision tree, Data storage, C4.5, Hadoop, HDFS, PostgreSQL,
Pgpool, Cluster.
8
______________________________________________________________________________
Tabla de contenido Introducción .................................................................................................................................. 13
Formulación del Problema ........................................................................................................ 14
Justificación ............................................................................................................................... 15
Objetivos ................................................................................................................................... 16
Objetivo General.................................................................................................................... 16
Objetivos Específicos ............................................................................................................ 16
Estado del arte y marco de referencia ....................................................................................... 16
Bases de datos relacionales.................................................................................................... 16
Comparación de algunas bases de datos relacionales ............................................................ 19
Bases de datos no relacionales............................................................................................... 19
Comparación de algunas bases de datos no relacionales ....................................................... 20
Comparación bases de datos relacionales contra bases de datos no relacionales .................. 21
Hadoop................................................................................................................................... 22
MapReduce ............................................................................................................................ 23
PgPool II ................................................................................................................................ 25
Algoritmo C4.5 ...................................................................................................................... 26
Implementación C4.5 .................................................................................................................... 31
Precondiciones y Postcondiciones ............................................................................................ 31
Procesamiento Hadoop .............................................................................................................. 32
Procesamiento PostgreSQL ....................................................................................................... 34
Cálculo entropía y llamado recursivo........................................................................................ 35
Diagrama de clases algoritmo C4.5........................................................................................... 37
Universidad.distrital.c45 ........................................................................................................ 38
Universidad.distrital.c45.estructura ....................................................................................... 38
Universidad.distrital.c45.mapper ........................................................................................... 39
Universidad.distrital.c45.reducer ........................................................................................... 39
Universidad.distrital.c45.sql .................................................................................................. 39
Elaboración Clúster ....................................................................................................................... 39
Clúster Hadoop .......................................................................................................................... 40
Core-site................................................................................................................................. 41
Hdfs-site................................................................................................................................. 41
9
______________________________________________________________________________
Mapred-site ............................................................................................................................ 42
Yarn-site ................................................................................................................................ 43
Clúster PostgreSQL ................................................................................................................... 45
Elaboración Conjunto de Datos .................................................................................................... 46
Elaboración Métrica ...................................................................................................................... 49
Pruebas y Resultados .................................................................................................................... 52
Conjunto Depurado ................................................................................................................... 53
Weather ..................................................................................................................................... 57
Conclusiones y Trabajo Futuro ..................................................................................................... 59
Bibliografía ................................................................................................................................... 62
10
______________________________________________________________________________
Lista de Figuras
Figura 1 Esquema MapReduce. Fuente: elaboración propia ........................................................ 24
Figura 2 Estructura MapReduce. Fuente: elaboración propia ...................................................... 24
Figura 3 Algoritmo C4.5. Fuente: elaboración propia .................................................................. 27
Figura 4 Diagrama MapReduce operación inicial. Fuente: elaboración propia ........................... 33
Figura 5 Diagrama MapReduce operación final. Fuente: elaboración propia .............................. 34
Figura 6 Estructura datos C4.5 Fuente: elaboración propia .......................................................... 36
Figura 7 Diagrama de clases implementación Hadoop. Fuente: elaboración propia .................... 38
Figura 8 Diagrama de clases implementación PostgreSQL. Fuente: elaboración propia ............. 38
Figura 9 Configuración core-site.xml. Fuente: elaboración propia .............................................. 41
Figura 10 Configuración hdfs-site.xml Fuente: elaboración propia ............................................ 42
Figura 11 Configuración mapred-site.xml Fuente: elaboración propia ....................................... 42
Figura 12 Configuración yarn-site.xml Fuente: elaboración propia ............................................ 43
Figura 13 Archivo de configuración Hosts. Fuente: Elaboración propia ..................................... 44
Figura 14 Información Nodos. Fuente: Elaboración propia ......................................................... 44
Figura 15 Información Datanode. Fuente: Elaboración propia .................................................... 45
Figura 16 Configuración PgPool. Fuente: Elaboración propia .................................................... 46
Figura 17 Resultado Conjunto Depurado-2, implementación Hadoop. Fuente: Elaboración propia
....................................................................................................................................................... 53
Figura 18 Resultado Conjunto Depurado-2, implementación Pgpool. Fuente: Elaboración propia
....................................................................................................................................................... 54
Figura 19 Resultado Conjunto Depurado-2, Hadoop vs Pgpool. Fuente: Elaboración propia ..... 54
Figura 20 Resultado Conjunto Depurado-4, implementación Hadoop. Fuente: Elaboración propia
....................................................................................................................................................... 55
Figura 21 Resultado Conjunto Depurado-4, implementación Pgpool. Fuente: Elaboración propia
....................................................................................................................................................... 56
Figura 22 Resultado Conjunto Depurado-4, Hadoop vs Pgpool. Fuente: Elaboración propia ..... 57
Figura 23 Resultado Conjunto Weather, implementación Hadoop. Fuente: Elaboración propia . 57
Figura 24 Resultado Conjunto Weather, implementación Pgpool. Fuente: Elaboración propia .. 58
Figura 25 Resultado Conjunto Weather, Hadoop vs Pgpool. Fuente: Elaboración propia ........... 59
11
______________________________________________________________________________
Lista de ecuaciones
Ecuación 1 Entropía ...................................................................................................................... 28
Ecuación 2 Ganancia..................................................................................................................... 28
12
______________________________________________________________________________
Lista de tablas
Tabla 1 Comparación de bases de datos relacionales. Fuente: elaboración propia ...................... 19
Tabla 2 Comparación bases de datos no relacionales. Fuente: elaboración propia ...................... 21
Tabla 3 Bases relacionales VS No relacionales, tomada de mongoDB.com adaptada por el autor
....................................................................................................................................................... 22
Tabla 4 Ejemplo archivo de entrada. Fuente: elaboración propia ................................................ 32
Tabla 5 Ejemplo tabla Atributos PostgreSQL. Fuente: elaboración propia.................................. 35
Tabla 6 Características clúster. Fuente: elaboración propia ......................................................... 40
Tabla 7 Atributos conjunto de datos. Fuente: Elaboración propia................................................ 47
Tabla 8 Conjunto de datos depurado. Fuente: Elaboración propia ............................................... 48
Tabla 9 Conjunto de datos Weather. Fuente: http://storm.cis.fordham.edu/~gweiss/data-
mining/weka-data/weather.nominal.arff ....................................................................................... 49
Tabla 10 Tamaños muestras. Fuente: Elaboración propia ............................................................ 50
Tabla 11 Esquema de pruebas a realizar métrica. Fuente: Elaboración propia ............................ 52
13
______________________________________________________________________________
Introducción
Los temas relacionados con las tecnologías de la información están a la orden del día, cuando
se habla de innovación y el mejoramiento de los procesos productivos en ámbitos, tanto
académicos como empresariales, es un tema imperdible, todos quieren sacar provecho de estas
tecnologías y desean tener la vanguardia de las mismas, buscando obtener ventajas estratégicas
sobre sus pares.
De la mano de las tecnologías de la información, necesariamente se trata el tema de la
persistencia, empezando por el ya clásico enfoque relacional hasta llegar a enfoques más recientes
como Big Data, Minería de Datos, bases de datos no relacionales, entre otros.
En lo referente a la persistencia, el solo hecho de guardar datos, mantener su integridad y
seguridad ya no es suficiente. Dentro de estos datos se esconde información valiosa que no se
puede ver “a simple vista” y se hace necesaria la utilización de herramientas para extraer la misma,
recordando que la información es el activo más valioso para cualquier organización. [1]
Gracias al uso de ambas tecnologías de persistencia relacional y no relacional, las
organizaciones cuentan con herramientas para almacenar datos, recopilar información, y tomar
decisiones.
Con este trabajo se pretende mostrar ambos modelos, ofreciendo una comparación en aspectos
muy específicos de tecnologías de persistencia; esperando dar al lector una idea del potencial de
la persistencia relacional y la persistencia no relacional.
14
______________________________________________________________________________
Formulación del Problema Actualmente se generan grandes volúmenes de información de fuentes muy diversas, como
lo son las transacciones de las organizaciones, las redes sociales, los sensores de los diferentes
aparatos electrónicos, el internet de las cosas, entre muchos otros. Estos datos deben ser capturados
y almacenados, dependiendo de su fuente se puede crear su persistencia de diferentes maneras, si
los datos son estructurados, se pueden almacenar fácilmente en un sistema de bases de datos
relacional, pero si por el contrario carecen de estructura, será recomendable usar alguna de las
múltiples tecnologías no relacionales, no solo para reducir los costos de persistencia, sino que
también para no perder información en la restructuración de los datos.
Cuando se trabaja con cualquier modelo, sin duda lo más importante es la información que
se puede adquirir del mismo. Esta información puede ser utilizada de diferentes maneras,
dependiendo la lógica con la que trabaje el negocio. Existen diferentes técnicas para adquirir,
organizar y explotar los datos usando herramientas muy variadas.
Dentro de las técnicas de procesamiento de la información, existe una con el fin de realizar
predicciones, conocida como árboles de decisión. Esta busca, partiendo de un conjunto de datos,
de los cuales se conocen sus entradas y salidas, llamado conjunto de entrenamiento, poder predecir
la salida de otro conjunto de datos de los cuales solo se conoce la entrada. Dentro de esta categoría
existe un algoritmo llamado C4.5 [2].
Al trabajar con el algoritmo C4.5 surge la pregunta ¿en qué modelo de persistencia se
obtendrán mejores resultados para el algoritmo C4.5?, ¿relacional o no relacional?
Este trabajo tiene como objeto verificar el funcionamiento del algoritmo de generación de
árboles de decisión C4.5, tanto para el modelo relacional como el no relacional, sobre un mismo
15
______________________________________________________________________________
conjunto de datos, y bajo una misma implementación, para después, por medio de una métrica
verificar en qué tipo de estructura de datos se obtuvieron los mejores resultados.
Justificación En el contexto de la persistencia es necesario llegar más allá que el simple hecho de capturar
y almacenar datos, aunque con esto se puede llegar a satisfacer las necesidades del negocio, es
necesario aprovechar el potencial de la información, considerado por muchos autores como el
activo más importante con el que cuentan las organizaciones hoy en día [1]. Para esto, además de
la infraestructura para capturar los datos y almacenarlos, es necesario utilizar técnicas que permitan
extraer de los mismos, información que se escape a simple vista o a la lógica del negocio de la
organización. Con esto se busca inferir patrones y comportamientos que escapen a la intuición
humana.
En el caso concreto de esta problemática, se encuentran ejemplos como: realizar
predicciones con datos que permitan facilitar la toma de decisiones, realizar predicciones de
esparcimiento de una epidemia, patrones de comportamiento humano, entre un sinfín más de
aplicaciones que tiene el campo en mención.
Sin embargo, utilizar el algoritmo para operar un conjunto de datos no garantiza su éxito,
es necesario evaluar las características del conjunto de entrada y la forma en la que fueron
indexadas y almacenadas en la tecnología de persistencia que se utilizó para posteriormente
comparar y verificar su efectividad contra un conjunto de prueba, evaluando a su vez que tan
sensible es el proceso con respecto al origen y la forma en la que se almacenaron los datos.
El resultado será comparado para observar el rendimiento de ambos modelos con respecto
a un conjunto de datos, logrando esto por medio de una métrica para homogenizar el problema.
16
______________________________________________________________________________
Finalmente, con los resultados obtenidos y evaluados por medio de la métrica se expondrán
las conclusiones y se harán recomendaciones en lo referente al tema.
Objetivos
Objetivo General
Implementar el algoritmo de clasificación de árboles de decisión C4.5 basado en un modelo
de datos relacional y en uno no relacional en un clúster, para posteriormente, por medio de una
métrica, evaluar su efectividad sobre un conjunto de datos.
Objetivos Específicos
Implementar el algoritmo C4.5 basado en un modelo de persistencia relacional.
Implementar el algoritmo C4.5 basado en un modelo de persistencia no relacional.
Aplicar una métrica para evaluar los resultados en ambos modelos de persistencia.
Estado del arte y marco de referencia El siguiente apartado contiene conceptos y definiciones claves para ayudar al lector a
comprender el contenido de este trabajo.
Bases de datos relacionales
Una base de datos relacional [3] sigue el modelo relacional que tiene su base en el álgebra
de conjuntos y almacena su información en tablas con columnas y filas. Una tabla es una relación
que tiene sentido en las columnas para objetos del mismo tipo, en este caso las filas. Este modelo
cuenta con un alto grado de madurez y es el modelo más popular de persistencia.
Las bases de datos relacionales cumplen con reglas de integridad que hacen la información
precisa y siempre disponible, las filas en una base de datos relacional deben ser únicas, ya que en
caso de existir filas repetidas pueden existir problemas distinguiendo una fila de la otra, la mayoría
de motores de bases de datos no permiten por este motivo la existencia de filas duplicadas. Una
segunda regla de integridad de este modelo impide que las columnas sean repetidas en grupos o
17
______________________________________________________________________________
colecciones de grupo. Una tercera regla de integridad involucra el concepto de valor nulo, el cual
indica que el valor no existe y que es diferente de un valor en blanco o en cero, donde dos valores
nulos no son considerados iguales.
Las reglas de Codd [4] son un conjunto de reglas que, de acuerdo a Edgar Codd, debe
cumplir un sistema de bases de datos relacional para serlo. A continuación las reglas de Codd.
Regla 1 (regla de la información): Toda la información contenida en la base de datos
debe estar almacenada en tablas y filas, tanto la información del usuario como la
meta información del sistema de bases de datos.
Regla 2 (acceso garantizado): Para cada elemento atómico de datos debe ser
garantizado el acceso lógico con una combinación de tabla, llave primaria y nombre
del atributo.
Regla 3 (tratamiento sistemático del valor nulo): Los valores nulos deben recibir un
tratamiento sistemático y uniforme.
Regla 4 (Catalogo activo): La descripción de la estructura de la base de datos debe
estar almacenada en un catálogo conocido como el diccionario de datos, el cual solo
puede ser accedido por usuarios autorizados, los usuarios pueden acceder al
catálogo por un lenguaje de consultas, que se usa para también para acceder a la
base de datos.
Regla 5 (Lenguaje de datos comprensivo): A la base de datos solo se puede acceder
usando un lenguaje con una sintaxis lineal que soporte definición, manipulación y
transacciones de datos, este lenguaje puede ser usado directamente o por alguna
18
______________________________________________________________________________
aplicación, si se accede a la base de datos sin ayuda de este lenguaje se considera
una violación.
Regla 6 (Regla de la actualización): Todas las vistas de la base de datos que puedan
ser actualizadas deben ser actualizables también por el sistema.
Regla 7 (Inserción, actualización y eliminación de alto nivel): El sistema de bases
de datos debe soportar las operaciones de alto nivel y no deben estar limitadas a una
sola fila, deben soportar los operadores de unión, intersección entre otras
operaciones de conjuntos.
Regla 8 (Independencia física de los datos): El almacenamiento de los datos debe
ser independiente del acceso a las aplicaciones, ningún cambio en la estructura
física de la base de datos debe tener efectos en como son accedidos los datos por
aplicaciones externas.
Regla 9 (Independencia lógica de los datos): La composición lógica de los datos
debe ser independiente del punto de vista de la aplicación, cualquier cambio en la
lógica de los datos no debe afectar las aplicaciones que las usan.
Regla 10 (Independencia de la integridad): La base de datos debe ser independiente
de la aplicación que la usa, su estructura debe poder modificarse sin necesidad de
modificar la aplicación.
Regla 11 (Independencia de distribución): Debe ser transparente para el cliente la
distribución física de los datos, para el usuario debe verse como si todo estuviera
ubicado en un solo sitio.
19
______________________________________________________________________________
Regla 12 (No subversiones): No se debe poder modificar el sistema de bases de
datos accediendo con lenguajes de más bajo nivel.
Comparación de algunas bases de datos relacionales
En la tabla 1 se muestra una comparación de las características de algunos motores de bases
de datos relacionales. [5]
Microsoft SQL
Server
PostgreSQL Oracle
Licencia Propietaria Open source Propietaria
Sistema Operativo Windows Windows, OS X,
Linux, BSD, Unix,
Android
Windows, OS X ,
Linux, Unix, Z/OS
Características
relacionadas con el
modelo relacional
ACID, integridad
referencial,
transacciones,
bloqueo de grano fino,
unicode
ACID, integridad
referencial,
transacciones,
bloqueo de grano fino,
unicode
ACID, integridad
referencial,
transacciones (no
DDL), bloqueo de
grano fino, unicode
Acceso GUI, SQL API, GUI, SQL API, GUI, SQL
Tablas y vistas Tablas temporales,
vistas materializadas
Tablas temporales,
vistas materializadas
Tablas temporales,
vistas materializadas
Objetos Cursor, Trigger,
Funciones,
Procedimientos
almacenados
Cursor, Trigger,
Funciones,
Procedimientos
almacenados
Cursor, Trigger,
Funciones,
Procedimientos
almacenados
Tabla 1 Comparación de bases de datos relacionales. Fuente: elaboración propia
Bases de datos no relacionales
Las bases de datos no relacionales [6] hacen referencia a una gran variedad de bases de
datos desarrolladas con el propósito de almacenar una gran cantidad de volumen de datos
relacionados con personas, objetos, productos, mediciones, etc., a los que se necesita acceder con
gran velocidad y frecuencia con la tecnología de procesamiento actual.
20
______________________________________________________________________________
Tipos de bases no relacionales
Documentos: Relaciona cada llave con una compleja estructura de datos conocida
como documento, un documento contiene varias tuplas de llaves que son
almacenadas en documentos.
Almacenamiento en grafos: Son usadas para almacenar información relacionada
con redes, como por ejemplo conexiones sociales o redes de epidemias.
Almacenamiento de llave: Cada tupla tiene una llave asociada, donde el tipo de
valor puede ser de diferente tipo de dato.
Columnas horizontales: Son bases de datos optimizadas para almacenamiento en
grandes conjuntos de datos utilizando columnas en vez de filas.
Tipos de bases no relacionales
Comparadas con las bases de datos relacionales, las bases de datos no relacionales ofrecen
más escalabilidad y tienen un rendimiento mejor, su modelo de datos resuelve problemas que las
bases de datos relacionales no pueden. Permiten almacenar grandes volúmenes de datos
estructurados, semiestructurados y no estructurados, además de iteraciones rápidas, agilidad
superior; programación nativa orientada a objetos flexible y fácil de usar; eficiente, escalamiento
fuera de la arquitectura, haciéndolas más eficientes que el modelo monolítico arquitectural del
modelo relacional.
Comparación de algunas bases de datos no relacionales
Ya que las bases de datos no relacionales no poseen características homogéneas para
comparar directamente, en la tabla 2 se muestra un cuadro con las características principales de
algunas de estas bases. [7]
21
______________________________________________________________________________
Cassandra MongoDB Berkeley DB
-Licencia apache.
-Protocolo CQL3, muy parecido a SQL
pero con algunas limitaciones por
ejemplo sin joins o funciones de
agregado
-Búsqueda por llave o rangos de llave.
-Los datos pueden tener fecha de
vencimiento.
-La escritura es más rápida que la
lectura.
-Es posible hacer Map Reduce con
Hadoop.
-Nodos homogéneos.
-Replicación confiable.
-Es posible escribir triggers en Java.
-Protocolo BSON.
-Replicación del tipo
maestro, esclavo.
-Los queries están
escritos en Javascript.
-Usa archivos
mapeados en memoria
para almacenar.
-Journaling.
-Tan solo 2.5GB en
sistemas de 32 bits.
-Búsqueda por texto.
-Indexado
geoespacial.
-Soporta indicies tanto
primarios como
secundarios.
-Valores de clave
duplicados.
-Integridad referencial.
-Almacenamiento en
memoria o disco duro como
se requiera.
-Función de encriptado.
-Replicación del tipo
maestro, esclavo.
Tabla 2 Comparación bases de datos no relacionales. Fuente: elaboración propia
Comparación bases de datos relacionales contra bases de datos no relacionales
Para entender las características y diferencias entre ambas tecnologías, en la tabla 3 se hace
una comparación de ambas, tomada de mongoDB [6] y adaptada por el autor.
Relacional No relacional
Tipos SQL con pequeñas variaciones. Gran variedad incluyendo bases de
datos documentales, de grafos entre
otras.
Nacimiento En los 70’s para solucionar
problemas del tipo transaccional.
En el 2000 para lidiar con las
limitaciones de las bases de datos
SQL especialmente la escala y el
almacenamiento de datos no
estructurados.
Ejemplo SQL server, Postgres, Oracle. MongoDB, Cassandra, Berkeley.
22
______________________________________________________________________________
Modelo de
almacenamiento
Registros individuales,
almacenados como filas en tablas,
almacenando información
específica del registro, es necesario
cruzar las diferentes tablas del
modelo por medio de operaciones
para acceder a la información
completa.
Varía dependiendo el tipo de base
de datos, por ejemplo las bases de
datos orientadas a documentos
almacenan los registros en una
estructura llamada documento en
formatos como JSON o XML.
Escalamiento Vertical, cada servidor debe ser
bastante potente para lidiar con la
demanda creciente, se pueden crear
bases de datos distribuidas pero el
costo aumenta de manera
significativa.
Horizontal, para aumentar la
potencia tan solo es necesario añadir
más nodos, la base de datos
automáticamente se encarga del
resto.
Esquemas Cuenta con un esquema fijo, para
almacenar nueva información en
necesario modificar el esquema.
Generalmente es dinámico, puede
añadirse nueva información en
caliente, a diferencia de las bases de
datos SQL.
Soporte de
transacciones
Si. En ciertos casos.
Manipulación de
los datos
Por medio de un lenguaje de query
especifico y derivado de SQL.
Por medio de APIs orientadas a
objetos.
Consistencia Fuerte nivel de consistencia. Depende de la lógica del negocio.
Tabla 3 Bases relacionales VS No relacionales, tomada de mongoDB.com adaptada por el autor
Hadoop
Hadoop [8] es un proyecto de software libre destinado para la computación distribuida de
manera confiable y escalable. Hadoop es un framework que facilita la computación distribuida de
grandes conjuntos de datos a través de clústeres de computadores, usando un modelo simple de
programación. Está diseñado para escalar desde una simple máquina a miles de ellas, cada una
ofreciendo computación y almacenamiento.
Hadoop está enfocado para sacar provecho de la distribución de los nodos, enfocándose en
la capacidad del conjunto en vez de la potencia que pueda llegar a tener una de las maquinas del
23
______________________________________________________________________________
clúster, adicionalmente, manejando el control de fallos de los diferentes nodos, ofreciendo un
mejor desempeño.
Hadoop incluye las siguientes funcionalidades:
Hadoop Common: Núcleo del framework en el cual se basan las demás
funcionalidades.
Hadoop Distributed File System: Sistema de archivos que proporciona gran
flexibilidad sobre conjuntos de datos grandes.
Hadoop YARN: Agente encargado del manejo de las diferentes tareas y su
distribución en los diferentes componentes del clúster.
Hadoop MapReduce: Sistema basado en YARN para el procesamiento de grandes
cantidades de datos.
MapReduce
Es un algoritmo creado por Google [9] para procesar grandes conjuntos de datos por medio
de computación distribuida, usando computadores de bajo costo, siendo de los más populares. Este
modelo está compuesto de dos funciones: Map y Reduce. La labor principal de MapReduce es
dividir los datos en diferentes bloques lógicos; como entrada y salida se utilizan tuplas del tipo
llave/valor.
La función Map toma cada entrada llave/valor y produce una lista intermediaria de estos
mismos pares, luego se reúnen todos estos pares intermedios y son procesados por la función
Reduce para obtener los resultados finales. Las funciones son expresadas como se muestra en la
Figura 1.
24
______________________________________________________________________________
Figura 1 Esquema MapReduce. Fuente: elaboración propia
Por lo general, la función Reduce tiene una salida binaria, los programas que implementan
MapReduce se pueden ejecutar en los siguientes modos.
Autónomo: se ejecuta en tan solo un solo equipo, es decir un clúster con solo un nodo.
Pseudo-distribuido: se crean nodos virtuales en una sola máquina, es un clúster con nodos
virtuales.
Distribuido: modo completamente funcional con múltiples maquinas funcionando como
nodos dentro del clúster.
Finalmente la estructura de MapReduce es mostrada en la Figura 2.
Figura 2 Estructura MapReduce. Fuente: elaboración propia
25
______________________________________________________________________________
PgPool II
PgPool, según la wiki oficial de los desarrolladores [10], es un middleware que funciona
entre los servidores de PostgreSQL y los clientes de la base de datos. Cuenta con licencia BSD y
provee las siguientes características.
Pool de conexiones: Pgpool almacena las conexiones utilizadas para acceder a los
diferentes servidores PostgreSQL, y en caso de que las credenciales de conexión
de otra solicitud sean idénticas a las existentes, reutiliza las existentes, evitando la
creación innecesaria de conexiones.
Replicación: PgPool puede manejar múltiples servidores de PostgreSQL, usando
la función de replicación se tiene la posibilidad de replicar dos o más discos físicos,
evitando de esta manera la interrupción del servicio en caso de falla de algún disco
en los nodos.
Balance de carga: En caso de que la base de datos sea replicada, al ejecutar una
operación de tipo SELECT se deben obtener los mismos resultados. Aprovechando
este hecho, PgPool distribuye las operaciones SELECT en los diferentes servidores
PostgreSQL para mejorar la velocidad con la que se realizan las consultas, este
beneficio se ve más claramente si la consulta regresa gran cantidad de tuplas y si
se cuenta con gran número de nodos.
Limite en el número de conexiones: PostgreSQL tiene un máximo número de
conexiones simultáneas, una vez alcanzado este tope regresa un error impidiendo
el acceso a la base de datos. PgPool mejora esta característica y en caso de que se
26
______________________________________________________________________________
logre el máximo número de conexiones, la solicitud se pone en esperar en vez de
generar error.
PgPool funciona como un puente entre el cliente y los diferentes servidores PostgreSQL,
estableciendo un canal de comunicación entre los dos. Adicionalmente los clientes y los servidores
no hacen distinción entre PgPool y una instancia más de PostgreSQL, por lo que no es necesario
ningún desarrollo adicional en ninguna de las plataformas implicadas.
Algoritmo C4.5
El algoritmo C4.5 [2] desarrollado por Ross Quinlan es un algoritmo para generar árboles
de decisión, es una mejora del algoritmo ID3 del mismo autor. El algoritmo C4.5 usa un conjunto
de entrenamiento para construir el árbol de decisiones, usando el concepto de entropía de la
información. El conjunto de entrenamiento está compuesto por n instancias ya clasificadas, donde
cada instancia es un vector de Xn características, donde cada x1, x2,…, xn es un atributo o atributos
de la instancia. A cada vector c1, c2,…, cn de características se le conoce como la clase a la cual
pertenece cada instancia.
En cada nodo del árbol, el algoritmo elige un atributo de los datos que los divida de la
manera más efectiva en un subconjunto, buscando diferenciar de la mejor manera las diferentes
clases, el criterio que usa es la ganancia de información de los resultados de elegir un atributo u
otro, el atributo con la mayor ganancia será escogido para realizar la división.
Adicionalmente, el algoritmo maneja algunos casos base:
Todas las muestras pertenecen a la misma clase: en este caso simplemente se crea
una hoja para el árbol eligiendo esa clase.
27
______________________________________________________________________________
Ninguna de las características proporciona ganancia de información: en este caso
se crea un nodo hacia arriba del árbol con el valor esperado.
Se encuentra una clase no vista antes: en este caso se crea un nodo hacia arriba del
árbol usando el valor esperado.
A continuación en la Figura 3 el pseudocódigo del algoritmo.
Figura 3 Algoritmo C4.5. Fuente: elaboración propia
Cálculo de la entropía y la ganancia
Una de las partes cruciales del algoritmo C4.5 es el cálculo de la entropía [11] y la ganancia
de información, ya que esta determina cuál de las posibles divisiones genera mayor ganancia en
términos de información, y determina si la ganancia de información es suficientemente grande
para continuar con las ramificaciones o si por el contrario ya no vale la pena seguir ramificando y
el algoritmo pasa a un estado de detenido.
28
______________________________________________________________________________
El cálculo de la entropía y de la ganancia de información se hace como se enseña en las
Ecuaciones 1 y 2.
E:(S)= ∑ - Pr(Ci) * log2 Pr(Ci)
n
i=1
Ecuación 1 Entropía
G:(S,A)= E(S) - ∑ Pr(Ai) E(𝑆𝐴𝑖)
𝑚
i=1
Ecuación 2 Ganancia
Donde los valores son los siguientes:
S – conjunto de datos.
E(S) – entropía de S.
G(S,A) – ganancia de S después de hacer un división en el atributo A.
n – número de clases en S.
Pr(Ci) – frecuencia de la clase Ci en S.
m – número de valores del atributo A en S.
Pr(Ai) – frecuencia de los casos que tiene Ai en S
E(SAi) – subconjunto de S que contiene el valores de Ai.
29
______________________________________________________________________________
El cálculo de estos valores junto con el llamado recursivo del algoritmo constituye la parte
esencial del C4.5.
Casos de éxito del algoritmo C4.5
A continuación se citan algunos trabajos realizados con el algoritmo C4.5.
Reconocimiento facial con el algoritmo C4.5 extendido. [12]
El reconocimiento facial es un ejemplo típico de evaluación de datos basados en la
sensibilidad, uno de los mayores problemas son las dificultades con la ambigüedad
y el procesamiento de los objetivos en la búsqueda de una clave de identificación
efectiva. En este trabajo se propuso un mecanismo de reconocimiento de imágenes
con una versión extendida del algoritmo C4.5 como mecanismo de identificación,
utilizando una métrica para verificar las salidas con buenos resultados.
Procesamiento de diabetes tipo 2 con maximización de la expectativa y el algoritmo
C4.5. [13]
Está investigación utilizó el algoritmo C4.5 y EM para elaborar un sistema de
procesamiento de datos de diabetes tipo 2. Tomando como fuente de datos casi
14000 muestras de múltiples fuentes, de varias dimensiones y una serie de
experimentos de minería de datos anteriores. Con esa cantidad de datos se descubrió
un comportamiento patológico de la diabetes tipo 2, donde se puede corroborar que
el árbol de decisión obtenido es casi idéntico con la lista clínica de factores de riesgo
de la diabetes. Adicionalmente, los positivos positivos, (personas sanas), fue del
80.9% y los negativos positivos, (personas con la enfermedad), fueron 92.05%, este
es un rango de efectividad bastante alto.
30
______________________________________________________________________________
Conservación de la privacidad sobre datos particionados de manera horizontal con
el algoritmo C4.5. [14]
La conservación de la privacidad en un entorno de computación distribuida es lo
que se busca con la implementación del algoritmo C4.5. En un escenario donde se
busca elaborar un árbol de decisión con datos distribuidos en diferentes nodos de
una plataforma de computación distribuida, el objetivo es que los nodos no
compartan información sensible, utilizando técnicas de seguridad multi-party de
computación, permitiendo elaborar el árbol de decisión, tanto con valores discretos
como continuos, y garantizando la privacidad al mismo tiempo.
Minería de datos con el algoritmo C4.5 y virtualización de cartografía interactiva.
[15]
Considerando la utilización de técnicas del descubrimiento del conocimiento en
bases de datos, se busca combinar varias de estas técnicas para crear clasificación
de objetos espaciales por medio de mapas. Con los mapas se busca tanto la
preparación de los datos como la interpretación de los mismos.
Detectando errores de software con el algoritmo C4.5. [16]
Las métricas de detección de defectos en el software generalmente están
relacionadas con el proceso de creación del mismo, en vez de enfocarse al momento
de puesta en producción. Sin embargo, aún existe el problema de utilizar una técnica
de predicción de fallos en este tipo de ambiente. En este trabajo se propone un una
técnica de predicción de errores por medio del algoritmo C4.5, con pruebas
realizadas en entornos experimentales llegando a un performance de 52.65%.
31
______________________________________________________________________________
Implementación C4.5
Este capítulo abarca todo lo relacionado con el desarrollo del algoritmo C4.5, usando como
lenguaje base Java™ y combinándolo con las diferentes tecnologías de persistencia propuestas
para llevar a cabo este proyecto. Es importante destacar que ambas implementaciones, Hadoop,
PostgreSQL, no se utilizan tan solo para guardar datos, sino que también buscan entrelazarse con
la funcionalidad del algoritmo, buscando tanto beneficios como desventajas que ofrecen las
tecnologías mencionadas anteriormente.
Precondiciones y Postcondiciones Para el caso de las dos implementaciones se contempla que tengan tanto la misma entrada
como la misma salida, esto con el fin de darle homogeneidad al problema y facilitar de esta manera
cálculos en tiempos de ejecución y otros aspectos a tener en cuenta en el momento de evaluar el
algoritmo.
La fuente de entrada de información de la implementación del algoritmo será un archivo
plano (.txt) que contiene información de los diferentes atributos asociados y su valor de clase
correspondiente, cada valor se da en una línea, para que de esa manera se interprete cada una de
las líneas del archivo como un valor de atributo asociado a su vez a un valor de clase. De igual
forma, los valores de cada línea contendrán el valor de atributo y su posición indicará a que atributo
hace referencia, los valores de los distintos atributos están separados por coma (,) y el valor final
de cada línea será el valor de clase asociado a la combinación de valores de atributo que le
anteceden, esta manera de organizar el conjunto de entrada fue inspirada en la manera en la que se
realiza en Weka. En la Tabla 4 se muestra un ejemplo del conjunto de entrada.
Ejemplo Conjunto de datos Convenciones
32
______________________________________________________________________________
sunny,hot,high,FALSE,no
sunny,hot,high,TRUE,no
overcast,hot,high,FALSE,yes
rainy,mild,high,FALSE,yes
rainy,cool,normal,FALSE,yes
Atributo 1: outlook, posibles valores (sunny, overcast,
rainy).
Atributo 2: temperature, posibles valores (hot, mild,
cool).
Atributo 3: humidity, posibles valores (high, normal).
Atributo 4: windy posibles valores (TRUE, FALSE).
Valor de clase: posibles valores (yes, no)
Tabla 4 Ejemplo archivo de entrada. Fuente: elaboración propia
La salida del algoritmo, en ambos casos, es un árbol de decisión creado con base en los
datos del conjunto de entrada. Este árbol se presenta de manera plana como una estructura de datos,
sin representación visual.
Procesamiento Hadoop Adicionalmente a la ejecución de los pasos del algoritmo C4.5, la implementación en
Hadoop debe tener en cuenta otras condiciones que buscan sacar provecho de las funciones Map
y Reduce de Hadoop. Para lograr esto, se transforma el conjunto de datos inicial aplicando una
función MapReduce (MapearAtributos-SumarAtributos) que toma los datos de entrada, agrupando
los valores de los atributos con la función Map (MapearAtributos), creando una entrada llave-
valor, donde la llave es el nombre del atributo junto con el valor que tomó y su respectivo valor de
clase; y el valor es un contador estático que adiciona uno (1) por cada repetición del valor. En el
proceso de Reduce (SumarAtributos) se asocian las entradas con el mismo valor de llave y se
suman los valores para generar de salida un mapa con los valores anteriormente mencionados
como se ilustra en la Figura 4.
33
______________________________________________________________________________
Figura 4 Diagrama MapReduce operación inicial. Fuente: elaboración propia
Como resultado de la operación anterior, se obtiene un archivo plano con los valores de los
diferentes atributos; una vez terminado este proceso se utiliza otra función MapReduce
(AgrupaValores-ConcatenaValores) que toma como entrada el archivo plano de la primera
función, donde la operación Map (AgrupaValores) toma los diferentes resultados por valor de
atributo y los agrupa en una sola entrada, almacenando todos los valores asociados al atributo, en
la función Reduce (ConcatenaValores) se agrupan los valores por atributo y se asocian el total de
apariciones por el valor de clase que se tomó, como se ilustra en la Figura 5.
34
______________________________________________________________________________
Figura 5 Diagrama MapReduce operación final. Fuente: elaboración propia
El archivo plano generado después de aplicar las funciones de Hadoop será el utilizado
para realizar el cálculo de la entropía.
Procesamiento PostgreSQL De manera similar al procesamiento en Hadoop, PostgreSQL toma el conjunto de datos
inicial y los transforma para realizar las operaciones del algoritmo, tomando los datos del archivo
plano y pasándolos a la base de datos.
Para el procesamiento de los valores de los diferentes atributos y sus clases asociadas, (ver
sección Precondiciones y Postcondiciones), se crea una tabla que contiene en cada tupla la
información asociada a cada valor que el atributo puede tomar. Su identificador, el valor que tomó
ese atributo, la fila asociada al valor (haciendo referencia al archivo plano) y el valor de clase
asociado a la misma, como se ilustra en la Tabla 5.
35
______________________________________________________________________________
Id Valor Fila Clase
0 sunny 0 no
0 sunny 1 no
0 overcast 2 yes
1 hot 0 no
1 hot 1 no
1 mild 3 yes
Tabla 5 Ejemplo tabla Atributos PostgreSQL. Fuente: elaboración propia
La tabla generada a partir del archivo plano será la base para el cálculo de la entropía.
Cálculo entropía y llamado recursivo En ambos casos (Hadoop y PostgreSQL) se toman sus salidas después de procesar el
conjunto de datos del archivo plano y se almacena en una estructura temporal para su
procesamiento en Java, las cuales son abstraídas por medio de 3 objetos Java (clases) para su
procesamiento.
Atributo: clase que contiene la información que se puede generar de un atributo
(valores del conjunto de datos (ValorAtributo), la entropía del atributo y su
identificador).
ValorAtributo: clase que contiene la información asociada a los diferentes valores
que toma un atributo (nombre del valor de atributo, valor de clase que tomó el valor
de atributo (ValorClase) y el total de repeticiones de ese valor de atributo).
36
______________________________________________________________________________
ValorClase: clase que contiene la información asociada al valor de clase que
pueden tomar los valores de atributo (nombre clase, cantidad de ocurrencias de ese
valor de clase).
Toda la abstracción necesaria para ejecutar el algoritmo C4.5 de manera correcta se logra
utilizando listas de los 3 tipos de clases mencionados anteriormente, donde la clase Atributo
contiene listas de la clase ValorAtributo y esta a su vez contiene listas de la clase ValorClase como
se ilustra en la Figura 6.
Una vez generada la estructura de datos con base en la salida, se procede a iterar cada uno
de los valores para calcular su entropía como se describe en la sección cálculo de la entropía, lo
cual genera un valor de ganancia por atributo y una entropía general del conjunto de atributos,
donde se procederá a hacer una comparación de las diferentes ganancias para elegir el atributo que
Atributo
•<Lista> ValorAtributo
• Identificador
•Nombre
ValorAtributo
•<Lista> ValorClase
•Nombre
• Total Apariciones
ValorClase
•Nombre Clase
•Apariciones
Figura 6 Estructura datos C4.5 Fuente: elaboración propia
37
______________________________________________________________________________
aporte más información. Una vez elegido el atributo de mayor ganancia se procede a comparar con
un límite de ganancia aceptable, el cual es parametrizable. De ser mayor al límite aceptable, el
Atributo elegido se toma para realizar la siguiente partición.
El proceso anterior se repite de manera recursiva a medida que se eligen los atributos
ganadores, creando un subconjunto del conjunto de entrada original, tomando como divisor los
valores que puede tomar el atributo ganador en cada división y repitiendo los pasos con este
subconjunto; en caso de que la ganancia aceptable sea mayor que la ganancia de todos los atributos
del conjunto o no sea posible seguir haciendo subconjuntos, se detiene el proceso recursivo y se
da por terminado el algoritmo.
Diagrama de clases algoritmo C4.5 El preprocesamiento y el posterior cálculo de la entropía, y el llamado recursivo se
representan en los diagramas de clases expuestos en las Figuras 7 y 8.
38
______________________________________________________________________________
Figura 7 Diagrama de clases implementación Hadoop. Fuente: elaboración propia
Figura 8 Diagrama de clases implementación PostgreSQL. Fuente: elaboración propia
Universidad.distrital.c45
Paquetería general y contenedora de las clases C4.5 y Entropía encargadas de realizar las
tareas del algoritmo como se explicó en la sección cálculo de la entropía y llamado recursivo.
Universidad.distrital.c45.estructura
Incluye las clases que representan la estructura de datos que contiene la información
obtenida después del preprocesamiento. Adicionalmente contiene la clase Nodo con la cual se crea
un árbol que almacena el resultado de cada iteración para su posterior utilización.
39
______________________________________________________________________________
Universidad.distrital.c45.mapper
Contiene las clases que realizan las actividades de map en la implementación de Hadoop
explicadas en la sección prepocesamiento Hadoop.
Universidad.distrital.c45.reducer
Contiene las clases que realizan las actividades de reduce en la implementación de Hadoop
explicadas en la sección prepocesamiento Hadoop.
Universidad.distrital.c45.sql
Contiene las clases que realizan las actividades de mapeo en la implementación de Hadoop
explicadas en la sección prepocesamiento PostgreSQL y una clase conexión encargada de manejar
la conexión del algoritmo a la base de datos.
Elaboración Clúster
Adicionalmente a la implementación del algoritmo C4.5, el objetivo general de este trabajo
involucra la ejecución del mismo en un clúster, en este caso, compuesto por tres nodos conectados
en una red LAN. Realizar la ejecución en un ambiente clusterizado proporciona mayor fiabilidad
y velocidad de procesamiento al momento de ejecución, ventaja que se hace más evidente a medida
que aumenta el conjunto de datos a procesar.
Una de las ventajas que ofrecen las soluciones en clúster es tener mayor capacidad de
procesamiento con diferentes tipos de hardware, facilitando de esta manera el escalamiento de
soluciones sin necesidad de un presupuesto amplio. Para la ejecución del algoritmo C4.5 se usó un
clúster con las siguientes características, mostradas en la Tabla 6:
Nombre Equipo Procesador RAM Almacenamiento
40
______________________________________________________________________________
Maestro Intel Core i7-
2670QM @2.20GHz
6 GB 500 GB
Esclavo1 Intel Core i7 i7-
2670QM @2.00GHz
8 GB 500 GB
Esclavo2 Intel Core 2 Duo
E7400 @2.80GHz
4 GB 500 GB
Tabla 6 Características clúster. Fuente: elaboración propia
Aunque ambas soluciones (Hadoop, PostgreSQL) usan el mismo hardware, la
configuración del clúster no es la misma para ambos casos, en el caso de Hadoop se debe
configurar un ambiente distribuido y en el de PostgreSQL se utilizará PgPool II, como se explica
en las siguientes secciones. Sin embargo, ciertas configuraciones son comunes, es necesario contar
con Java 7 o superior, (ya que la implementación está construida en esta versión del lenguaje), y
como medio de comunicación en ambas soluciones se usa el protocolo SSH, siendo este un medio
seguro y confiable de comunicación entre los diferentes nodos del clúster.
Clúster Hadoop Adicionalmente a la instalación de Hadoop es necesaria la configuración de sus diferentes
nodos donde varía la configuración dependiendo si el nodo es esclavo o maestro, donde el nodo
maestro tendrá la responsabilidad de gestionar los recursos del clúster y si se desea también, el
procesamiento de datos, de lo contrario, se delega el procesamiento de datos a los nodos esclavos
del clúster. Esta decisión se toma dependiendo de los recursos con los que se cuente. En el caso de
esta implementación el nodo maestro también procesará datos.
Hadoop cuenta con diferentes archivos .xml de configuración, cada uno asociado a
diferentes tareas que ejecuta el framework. En caso de que no se encuentren especificadas las
41
______________________________________________________________________________
configuraciones en estos archivos, Hadoop tomará las configuraciones por defecto, su
configuración se muestra a continuación.
Core-site
Contiene la configuración asociada al core de Hadoop como la configuración de entrada y
salida, entre otras configuraciones comunes a HDFS y a MapReduce, en este caso se especifica
que el core se encuentra en el nodo maestro como se ve en la Figura 9.
Hdfs-site
Contiene la configuración de los demonios del HDFS, el NameNode, el Seconday
NameNode y los DataNodes. En este archivo de configuración se puede especificar el número de
bloques de replicado, los permisos sobres HDFS, el número de replicaciones entre otros. Para el
clúster se especificó el factor de replicación (3), la ruta donde se encuentra el DataNode y la ruta
donde se encuentra el NameNode como se ve en la figura 10.
Figura 9 Configuración core-site.xml. Fuente: elaboración propia
42
______________________________________________________________________________
Figura 10 Configuración hdfs-site.xml Fuente: elaboración propia
Mapred-site
Contiene la configuración de los demonios del MapReduce, el JobTracker y los
TaskTrackers. Para el clúster se indica que el JobTracker será el del nodo maestro y que el
framework del MapReduce será Yarn como se ve en la figura 11.
Figura 11 Configuración mapred-site.xml Fuente: elaboración propia
43
______________________________________________________________________________
Yarn-site
Contiene toda la configuración asociada al manejo del yarn. En el caso del clúster se
establecen los servicios auxiliares, la ruta del JobTracker, la ruta del scheduler y la ruta del
ResourceManager, en ese caso todas apuntan al nodo maestro como se muestra en la figura 12.
Figura 12 Configuración yarn-site.xml Fuente: elaboración propia
Finalmente es necesario configurar el archivo hosts para que la comunicación de los nodos
sea posible, ya que Hadoop busca los diferentes nodos por su nombre. Adicionalmente, es
necesario agregar el nombre que le asigne HDFS a los diferentes DataNodes como se muestra en
la Figura 13.
44
______________________________________________________________________________
Figura 13 Archivo de configuración Hosts. Fuente: Elaboración propia
Si se realizó de manera correcta la configuración Hadoop, se debe ver todos los nodos del
clúster cuando se acceda al administrador del sitio como se muestra en la Figura 14.
Figura 14 Información Nodos. Fuente: Elaboración propia
Del mismo modo, los DataNodes deben salir en el administrador del HDFS como se
muestra en la Figura 15.
45
______________________________________________________________________________
Figura 15 Información Datanode. Fuente: Elaboración propia
Clúster PostgreSQL La configuración para el clúster se realiza por medio de PgPool, configurando el archivo
pgpool.conf, indicando el tipo de alguno de los modos de funcionamiento de PgPool. En tal caso,
se utiliza el modo de replicación, el cual mantiene el esquema de datos igual y síncrono en todos
los nodos del clúster. Adicional a lo mencionado, se debe desactivar la conexión SSL de todos los
nodos del clúster y se debe habilitar la conexión por medio de SSH. La configuración se muestra
en la Figura 16.
46
______________________________________________________________________________
Elaboración Conjunto de Datos
El conjunto de datos se creó buscando que fuera homogéneo para las dos implementaciones
del algoritmo C4.5. También se buscó que fueran tan solo datos nominales (pues la
implementación no soporta entradas del tipo numérico aunque el algoritmo original sí) y
adicionalmente, que un valor del conjunto de datos fuera destacado, de tal manera que se pudiera
elegir como valor de clase al cual estarán referenciados los demás valores.
Se decidió utilizar un conjunto de datos del servicio general de administración de los
Estados Unidos (Data.gov) [17] debido a la gran variedad de datos con los que cuenta y
adicionalmente la cantidad de los mismos. El conjunto de datos usado lleva por nombre Consumer
Complaint Database (base de datos de quejas de consumidores), el cual contiene datos de las quejas
de los usuarios del servicio bancario en Estados como se muestra en la Tabla 7.
Figura 16 Configuración PgPool. Fuente: Elaboración propia
47
______________________________________________________________________________
Dato Tipo
Fecha recibido Fecha
Producto Texto
Subproducto Texto
Problema Texto
Subproblema Texto
Información del cliente Texto
Respuesta publica de la entidad Texto
Entidad Texto
Estado (USA) Texto
Código Zip Texto
Tags Texto
Consentimiento del cliente Texto
Medio por el cual se realizó la queja Texto
Día envió queja Fecha
Respuesta de la entidad Texto
Respuesta efectuada a tiempo Booleano
Replicación del cliente Booleano
Id Numérico
Tabla 7 Atributos conjunto de datos. Fuente: Elaboración propia
El conjunto de datos crudo no es de utilidad, ya que tiene algunos datos no aptos para
clasificar como atributos (como la fecha o el id). Además, algunos campos están vacíos, por lo que
es necesario realizar una depuración de los mismos. Finalmente, es necesario elegir un atributo
que actúe como valor de clase con el cual se hagan asociaciones a los demás atributos.
48
______________________________________________________________________________
Se eligió como valor de clase el campo Entidad porque los valores que puede tomar se
repiten con regularidad sin perder la variedad de valores posibles, y adicionalmente, se ve como
una asociación natural de los demás campos, debido a que los demás atributos se pueden
representar como características asociadas al servicio que prestan las diferentes entidades
bancarias. En adición, los campos Fecha Recibido, Subproducto, Subproblema, Información
Cliente, Tags, Consentimiento del Cliente, Día envío de la Queja, e Id, fueron removidos ya que
no cumplían con las condiciones necesarias para ser procesados por el algoritmo, o estaban
incompletos, o no aportaban ganancia de información. El conjunto de datos depurado es como se
indica en la Tabla 8.
Dato Tipo
Producto Texto
Problema Texto
Estado (USA) Texto
Código Zip Texto
Medio por el cual se realizó la queja Texto
Respuesta de la entidad Texto
Respuesta efectuada a tiempo Booleano
Replicación del cliente Booleano
Entidad Texto
Tabla 8 Conjunto de datos depurado. Fuente: Elaboración propia
En complemento a la remoción de atributos, algunos valores de atributo que se encontraban
vacíos se reemplazaron por “NA”, ya que la utilización del espacio vacío no está permitida como
49
______________________________________________________________________________
entrada valida en la implementación. El conjunto de datos cuenta con 569.495 tuplas de los valores
mencionados en la Tabla 8 y asociaos a Entidad como valor de clase.
Por otra parte, se utiliza el conjunto de datos Weater, disponible en los conjuntos de muestra
de Weka, el cual tiene una serie de factores climáticos que determinan si es posible o no salir a
jugar. El conjunto se muestra en la Tabla 9. El conjunto cuenta con 14 tuplas.
Dato Tipo
Outlook Texto
Temperature Texto
Humidity Texto
Windy Texto
Play Texto
Tabla 9 Conjunto de datos Weather. Fuente: http://storm.cis.fordham.edu/~gweiss/data-
mining/weka-data/weather.nominal.arff
Elaboración Métrica
Una vez creadas las implementaciones y verificado su correcto funcionamiento, es
necesario definir un mecanismo por el cual se pueda comparar el rendimiento de ambos algoritmos
con base en los elementos comunes, con la finalidad de identificar las ventajas y desventajas entre
las implementaciones. Para efectuar la comparación, se plantea la métrica expuesta a continuación.
Dentro de la métrica no se considera verificar la eficacia del algoritmo de manera empírica
o teórica, ya que ha sido demostrada en otros trabajos con ese fin, tan solo se evalúa el performance
de las implementaciones realizadas. Para tal fin, se verificará el tiempo de ejecución del algoritmo
50
______________________________________________________________________________
con los conjuntos de datos mencionados en la sección elaboración conjuntos de datos, variando
su tamaño como se muestra en la Tabla 10.
Conjunto de datos Tamaño
Depurado-2 x1
Depurado-2 x0.5
Depurado-2 x0.7
Depurado-2 x2
Depurado-2 x3
Depurado-4 x1
Depurado-4 x0.5
Depurado-4 x0.7
Depurado-4 x2
Depurado-4 x3
Weather x1
Weather Tamaño depurado (569.495 tuplas – 3) este
ajuste se debe hacer para no perder el orden
de tuplas del conjunto original
Weather Tamaño depurado x0.5
Weather Tamaño depurado x0.7
Weather Tamaño depurado x2
Weather Tamaño depurado x3
Tabla 10 Tamaños muestras. Fuente: Elaboración propia
51
______________________________________________________________________________
El nombre Depurado-4 y Depurado-2 hace referencia al conjunto Depurado original
restando ciertas filas, en el caso de - 2 se removió Estado (USA), Código Zip, y en el caso de - 4
se removió Estado (USA), Código ZIP, Respuesta de la Entidad, Respuesta efectuada a tiempo y
Replicación del Cliente; debido a que la ejecución del conjunto total tomaba más de 72 horas y no
era viable la realización de prueba con ese tiempo de ejecución, pues no se podía garantizar la
estabilidad de la red y el suministro eléctrico del clúster por tanto tiempo.
En adición a estos valores, se varía el número de nodos del clúster (1, 2, 3), con el fin de
medir la diferencia de rendimiento entre las implementaciones a medida que aumenta el tamaño
del conjunto de datos y varían los nodos del clúster. La variación de los nodos se hace quitando
primero el Esclavo2 (máquina con menos potencia), luego el Esclavo1 y por ultimo con solo el
nodo maestro. Finalmente, la variación del conjunto depurado de datos se hará tomando alguna
porción al azar del conjunto y dividiéndola según se crea conveniente, las siguientes subdivisiones
se tomarán del mismo conjunto de datos para conservar uniformidad en el proceso, mientras que
con el conjunto Weather se amplió al tamaño del conjunto depurado y se modificó acorde al
mismo.
En el caso de usarse una muestra más grande que el conjunto de datos, se multiplicara el
mismo obteniendo n veces el conjunto de datos. Es importante resaltar que al ampliar el conjunto
de datos no se afecta el resultado del algoritmo, ya que al estar repetidas las tuplas se llega a un
sesgo donde no se aporta más información que en el caso del conjunto original.
Se harán pruebas con base en lo anteriormente mencionado, como se muestra en la Tabla
11.
Cantidad de Nodos Cantidad de datos (en base al tamaño original)
52
______________________________________________________________________________
3
Tamaños conjunto depurado
Tamaños conjunto Weather
2
Tamaños conjunto depurado
Tamaños conjunto Weather
1
Tamaños conjunto depurado
Tamaños conjunto Weather
Tabla 11 Esquema de pruebas a realizar métrica. Fuente: Elaboración propia
Pruebas y Resultados
Una vez realizadas las pruebas, se obtuvieron los siguientes resultados separados por
número de nodos del clúster y por la cantidad del conjunto de datos, el elemento de comparación
es el tiempo de ejecución en segundos.
53
______________________________________________________________________________
Conjunto Depurado
Figura 17 Resultado Conjunto Depurado-2, implementación Hadoop. Fuente: Elaboración
propia
En la Figura 17 se observa una ligera disminución en general en tiempos de ejecución a
medida que se aumenta el número de nodos, con el tiempo de ejecución más largo en 6912
segundos y el tiempo más corto en 4505 segundos.
0
1000
2000
3000
4000
5000
6000
7000
8000
1 Nodo 2 Nodos 3 Nodos
Depurado-2 Hadoop
x0.5 x0.7 x1 x2 x3
54
______________________________________________________________________________
Figura 18 Resultado Conjunto Depurado-2, implementación Pgpool. Fuente: Elaboración
propia
En la Figura 18 los tiempos de ejecución tienen una variación mínima en cuanto al número
de nodos, se puede evidenciar que el tiempo de ejecución crece a medida que se agregan tuplas al
conjunto de datos, el tiempo más largo de ejecución fue de 27215 segundos y el más corto fue de
20510 segundos.
Figura 19 Resultado Conjunto Depurado-2, Hadoop vs Pgpool. Fuente: Elaboración propia
0
5000
10000
15000
20000
25000
30000
1 Nodo 2 Nodos 3 Nodos
Depurado-2 Pgpool
x0.5 x0.7 x1 x2 x3
0
5000
10000
15000
20000
25000
30000
1 Nodo H 2 Nodos H 3 Nodos H 1 Nodo P 2 Nodos P 3 Nodos P
Depurado-2 Hadoop vs Pgpool
x0.5 x0.7 x1 x2 x3
55
______________________________________________________________________________
En la Figura 19, la comparación entre ambas implementaciones se puede observar una
diferencia considerable entre los tiempos de ejecución en general, tomando más tiempo para
realizar la ejecución la solución en Pgpool.
Figura 20 Resultado Conjunto Depurado-4, implementación Hadoop. Fuente: Elaboración
propia
En la Figura 20 nuevamente se evidencia un cambio en tiempos de ejecución donde la
tendencia a disminuir es notable en a medida que aumentan los nodos, el tiempo más largo fue de
5119 segundos y el tiempo más corto fue de 3495 segundos.
0
1000
2000
3000
4000
5000
6000
1 Nodo 2 Nodos 3 Nodos
Depurado-4Hadoop
x0.5 x0.7 x1 x2 x3
56
______________________________________________________________________________
Figura 21 Resultado Conjunto Depurado-4, implementación Pgpool. Fuente: Elaboración
propia
En la Figura 21 se hacen más marcadas las diferencias en tiempos de ejecución con respecto
al conjunto anterior sin embargo no es un diferencia considerable a medida que varían los nodos
del clúster, siendo el tiempo de ejecución más corto de 19745 segundos y el más largo de 23201
segundos.
18000
19000
20000
21000
22000
23000
24000
1 Nodo 2 Nodos 3 Nodos
Depurado-4Pgpool
x0.5 x0.7 x1 x2 x3
57
______________________________________________________________________________
Figura 22 Resultado Conjunto Depurado-4, Hadoop vs Pgpool. Fuente: Elaboración propia
En la Figura 22 se puede observar nuevamente una diferencia considerable en tiempos de
ejecución de ambas implementaciones, donde la complejidad de los datos no afecta directamente
los tiempos de ninguna de las dos implementaciones.
Weather
Figura 23 Resultado Conjunto Weather, implementación Hadoop. Fuente: Elaboración propia
0
5000
10000
15000
20000
25000
1 Nodo H 2 Nodos H 3 Nodos H 1 Nodo P 2 Nodos P 3 Nodos P
Depurado-4Hadoop vs Pgpool
x0.5 x0.7 x1 x2 x3
0
50
100
150
200
250
300
350
400
1 Nodo 2 Nodos 3 Nodos
Weather Hadoop
x1 x0.5 Dep x0.7 Dep x1 Dep x2 Dep x3 Dep
58
______________________________________________________________________________
En la figura 23 se observa un comportamiento constante en tiempos de ejecución con
pequeñas diferencias a medida que aumenta el número de nodos, haciéndose evidente que la
cantidad de datos no es una variable que afecte los tiempos de ejecución en comparación con
ejercicios anteriores.
Figura 24 Resultado Conjunto Weather, implementación Pgpool. Fuente: Elaboración propia
En la Figura 24 se observa un comportamiento directamente proporcional al número de
tuplas que tiene cada conjunto de datos, con incrementos en a medida que se añaden nodos al
clúster.
0
500
1000
1500
2000
2500
3000
3500
4000
4500
1 Nodo 2 Nodos 3 Nodos
Weather Pgpool
x1 x0.5 Dep x0.7 Dep x1 Dep x2 Dep x3 Dep
59
______________________________________________________________________________
Figura 25 Resultado Conjunto Weather, Hadoop vs Pgpool. Fuente: Elaboración propia
En la figura 25 se puede observar que la implementación en Pgpool logra ser más veloz
con el menor número de datos, sin embargo una vez sobre pasa el tiempo de Hadoop
(aproximadamente 470 segundos) se hace más lento a medida que se aumenta el conjunto de datos.
Conclusiones y Trabajo Futuro
Con base en el trabajo realizado y con los resultados obtenidos, se llegó a las siguientes
conclusiones.
La solución que usa Hadoop no experimenta cambios drásticos en tiempos de ejecución a
medida que aumenta el conjunto de datos, lo anterior por la utilización de HDFS como
sistema de almacenamiento y teniendo en cuenta que incluso el conjunto más grande
utilizado como muestra no es considerado de gran tamaño en el enfoque Big Data.
0
500
1000
1500
2000
2500
3000
3500
4000
4500
1 Nodo H 2 Nodos H 3 Nodos H 1 Nodo P 2 Nodos P 3 Nodos P
Weather Hadoop vs Pgpool
x1 x0.5 Dep x0.7 Dep x1 Dep x2 Dep x3 Dep
60
______________________________________________________________________________
El conjunto de datos no es lo suficientemente grande para ejecutar el paralelismo de manera
óptima en Hadoop, no se logró paralelismo total ni realizando las configuraciones indicadas
por el proveedor (forzando los bloques de datos de HDFS a tamaño de 16 megas y forzando
la ejecución de múltiples tareas por pequeñas que sean en todos los nodos del clúster).
Usando un conjunto de datos considerado pequeño en Big Data, no se evidencia mejora en
tiempos de ejecución a medida que aumentan los nodos del clúster.
El algoritmo C4.5 en la solución de Hadoop, ve afectados sus tiempos de ejecución
directamente por la cantidad de información que posee el conjunto de datos.
En la solución que usa Pgpool se observa un incremento en tiempos de ejecución a medida
que se incrementa el número de tuplas.
A medida que aumenta el número de nodos en Pgpool el costo de mantener los nodos
sincronizados aumenta, resultando en tiempos de ejecución más largos.
La utilización de Pgpool como software de clusterización mejora los tiempos de ejecución
de consultas. Sin embargo, mantener los diferentes nodos del clúster sincronizado es muy
costoso en tiempos de ejecución.
La utilización de Pgpool resulta útil como solución para infraestructura de persistencia. Sin
embargo, para obtener mejores resultados se requiere de un hardware más potente.
La solución que utiliza Pgpool presenta mejor rendimiento con pocas tuplas
independientemente de la información que posean los datos, pero a medida que aumenta el
número de tuplas, la solución que utiliza Hadoop presenta mejor rendimiento.
61
______________________________________________________________________________
La solución que usa Pgpool toma más tiempo pre procesando los datos que la solución que
usa Hadoop.
Ninguna de las dos soluciones presenta mejoras en tiempos de ejecución a medida que
aumenta el número de nodos del clúster, en medida por el conjunto de datos elegido
(tamaño vs complejidad).
Como trabajo futuro se podría adicionar valores continuos al algoritmo C4.5 para observar
los cambios en tiempos de ejecución que requiere este procesamiento adicional. Así mismo,
adicionar más nodos para evaluar un conjunto de datos mayor y variando los modelos de
almacenamientos; a manera de ejemplo usando Oracle en vez de Pgpool.
62
______________________________________________________________________________
Bibliografía
[1] R. Federico, «medium.com,» 2016. [En línea]. Available:
https://medium.com/@fg_rega/the-age-of-data-and-why-information-is-the-most-valuable-
asset-d5d9c57620e1#.fsrye6b0n. [Último acceso: 11 junio 2016].
[2] Q. Roos, C4.5: Programs for Machine Learning, Kluwer Academic Publishers, 1993.
[3] Oracle, «A Relational Database Overview (The Java™ Tutorials > JDBC(TM) Database
Access > JDBC Introduction),» 19 Agosto 2015. [En línea]. Available:
https://docs.oracle.com/javase/tutorial/jdbc/overview/database.html. [Último acceso: 14
Junio 2016].
[4] «tutorials point,» 19 Agosto 2015. [En línea]. Available:
http://www.tutorialspoint.com/dbms/dbms_codds_rules.htm.
[5] «Wikipedia,» 20 Agosto 2015. [En línea]. Available:
https://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems.
[6] «mongoDB,» 15 Agosto 2015. [En línea]. Available: https://www.mongodb.com/nosql-
explained.
[7] K. Kovacs, «kkovacs,» 26 Agosto 2015. [En línea]. Available: http://kkovacs.eu/cassandra-
vs-mongodb-vs-couchdb-vs-redis.
[8] S. h. R. Shankar Ganes h Manikandan, «Big Data Analysis using Apache Hadoop».
[9] S. G. Jeffrey Dean, «Google Research Publications,» Diciembre 2004. [En línea].
Available: http://research.google.com/archive/mapreduce.html. [Último acceso: 14 junio
2016].
[10] «Pgpool Wiki,» 2016 Junio 17. [En línea]. Available:
http://www.pgpool.net/mediawiki/index.php/Main_Page. [Último acceso: 1 Julio 2016].
[11] «octavian's blog,» 25 03 2011. [En línea]. Available:
https://octaviansima.wordpress.com/2011/03/25/decision-trees-c4-5/. [Último acceso: 2016
junio 16].
[12] K. Yamada, A. Ohuchi y M. Oda, «Face image retrieval method using extended C4.5,» de
Systems, Man, and Cybernetics, 1997. Computational Cybernetics and Simulation., 1997
IEEE International Conference, Orlando, FL, 1997.
[13] G. Juan, L. Sen-Lin, J. Hong-bo, Z. Tie-mei y H. Yi-wen, «Type 2 diabetes data processing
with EM and C4.5 algorithm,» de Complex Medical Engineering, 2007. CME 2007.
IEEE/ICME International Conference, Beijing, 2007.
[14] X. Ming-Jun, K. Han y H. Liu-Sheng, «Privacy Preserving C4.5 Algorithm Over
Horizontally Partitioned Data,» de Grid and Cooperative Computing, 2006. GCC 2006.
63
______________________________________________________________________________
Fifth International Conference, Hunan, 2006.
[15] G. Andrienko y N. Andrienko, «Data mining with C4.5 and interactive cartographic
visualization,» de User Interfaces to Data Intensive Systems, 1999. Proceedings, Los
Alamitos, CA, 1999.
[16] B. Li, B. Shen, J. Wang, Y. Chen, T. Zhang y J. Wang, «A Scenario-Based Approach to
Predicting Software Defects Using Compressed C4.5 Model,» de Computer Software and
Applications Conference (COMPSAC), 2014 IEEE 38th Annual, Vasteras, 2014.
[17] «Data.gov,» 2015 Septiembre 26. [En línea]. Available:
https://catalog.data.gov/dataset/consumer-complaint-database. [Último acceso: 4 Julio
2016].