Extracción de Reglas de Asociación
Extracción de Reglas de Asociación
Extracción de Reglas de Asociación
Facultad 3
Julio 2018
DECLARACIÓN DE AUTORÍA
Para que así conste firmo la presente a los ____ días del mes de ________ del año
________.
Osvaldo Guerra Cremé Guillermo M. Negrín Ortiz Julio César Díaz Vera
Palabras clave
El interés de una regla de asociación está dado por su soporte y su confianza (Negrín Ortiz,
2014), entendiéndose por soporte la frecuencia de aparición de la combinación de productos
–Osvaldo Guerra Cremé
involucrados en la regla. Por ejemplo, para la regla formada anteriormente se tiene que el valor
del soporte es:
2
𝑠𝑢𝑝𝑝((𝑝𝑎𝑛 ∧ 𝑙𝑒𝑐ℎ𝑒) ⟹ (𝑚𝑎𝑛𝑡𝑒𝑞𝑢𝑖𝑙𝑙𝑎)) = 𝑠𝑢𝑝𝑝(𝑝𝑎𝑛 ∧ 𝑙𝑒𝑐ℎ𝑒 ∧ 𝑚𝑎𝑛𝑡𝑒𝑞𝑢𝑖𝑙𝑙𝑎) =
6
Por confianza (Negrín Ortiz, 2014) de una regla se entiende cuánto representa el soporte de
la regla, por lo tanto el valor de la confianza es:
Se considera que una regla es interesante si su soporte y confianza son mayores o iguales
que ciertos umbrales mínimos que se especifican (Negrín Ortiz, 2014).
Apriori, Eclat y FP-GROWTH son los algoritmos básicos más conocidos en la extracción de
reglas de asociación. A priori, a pesar de su efectividad tiende a tener un desempeño
computacional insuficiente. Sin embargo, Eclat y FP-GROWTH se han desarrollado para
mejorar el desempeño de este en muchas condiciones, pero no abundan las evidencias
concluyentes que sustenten la supremacía de uno de estos algoritmos con respecto al otro
(BORGELT, 2003).
Objetivo general: Desarrollar una aplicación que compare el desempeño de modelos de los
algoritmos de extracción de reglas de asociación ECLAT y FP-GROWTH.
Para dar cumplimiento al objetivo general se desarrollarán las siguientes tareas a cumplir en
la investigación:
Tareas a cumplir:
1. Revisión bibliográfica
2. Definición del marco comparativo
3. Modificación de los algoritmos FP- GROWTH y ECLAT para computar las métricas
definidas en el marco comparativo
4. Implementación de una aplicación que permita comparar el desempeño de los
algoritmos
5. Presentación de los resultados
Fundamentación Teórica
1.1 Introducción
En este capítulo se presentan los conceptos sobre los que se sustenta la investigación
realizada. Inicialmente se exponen las definiciones fundamentales de minería de datos, reglas
de asociación como resultado de este proceso y el problema que representa su extracción.
Luego se trata acerca del desempeño computacional de algoritmos de extracción de reglas de
asociación y su comparación. Posteriormente se estudian los conceptos esenciales dentro del
proceso de desarrollo de software para poder adaptarlo al desarrollo de una aplicación que
evalúe computacionalmente el desempeño de los algoritmos ECLAT y FP-GROWTH.
Las reglas de asociación (AGRAWAL, y otros, 1993) son las relaciones entre variables que se
utilizan para descubrir hechos que ocurren en común dentro de una determinada colección de
datos, los cuales pueden ser procesados mediante una técnica llamada extracción de reglas
de asociación con algoritmos que se analizarán en la presente investigación.
Normalmente se buscan relaciones entre las tuplas o entre los atributos, estas asociaciones
se pueden representar de diversas formas. Entre las formas de representación se encuentran:
dependencias funcionales, reglas de asociación, dependencias funcionales aproximadas,
dependencias funcionales difusas, reglas de asociación difusas, datos inconsistentes,
patrones, anomalías, entre otras.
Para lograr la extracción de reglas de asociación es de vital importancia saber acerca de las
siguientes definiciones (Medina, y otros, 2007) para poder entender correctamente el
funcionamiento de los algoritmos de extracción de reglas de asociación que serán explicados
en el Capítulo 3 de esta investigación:
Cuando se aborda el tema de desempeño computacional se debe tener en cuenta que viene
regido por diferentes tipos de indicadores tales como: uso de memoria, tiempo de ejecución en
forma general (Felipe Alfaro, 2015), uno de los aspectos que se podrían incluir teniendo en
cuenta el contexto de esta investigación sería la cantidad de reglas generadas por cada uno
de los algoritmos, pero al estar hablando de elementos frecuentes en un conjunto de
transacciones, para los mismos valores de soporte, se tendrá el mismo resultado en
dependencia del algoritmo que se esté empleando.
Teniendo en cuenta los aspectos sobre los que se va a desarrollar la evaluación de desempeño
de los algoritmos ECLAT y FP-GROWTH, es necesario contar con una plataforma sobre la que
puedan evaluarse estos indicadores, por lo que es de vital importancia abordar acerca del
proceso de desarrollo de software para la elección del tipo de aplicación que se va a utilizar.
1. Investigar los requisitos de los usuarios. Esto se lleva a cabo durante la fase de análisis.
En la presente investigación se identifican desde el primero hasta el quinto pasos, puesto que
para realizar una comparación entre los algoritmos ECLAT Y FP-GROWTH es necesario
implementarlos para así evaluar el desempeño de estos. Luego, se comprueba si la
implementación funciona correctamente y si quedan satisfechas las métricas por las que se
hará la comparación definidas en el próximo capítulo.
El proceso de desarrollo de software varía en dependencia de lo que se quiere lograr con este.
La solución en la presente investigación se va a realizar a través de la implementación de un
software que permita evaluar el desempeño de los algoritmos ECLAT y FP-GROWTH.
Teniendo en cuenta lo planteado anteriormente, se necesita saber qué tipo de software se va
a desarrollar para luego definir el proceso que se va a utilizar.
Según anuncia (Darshan, 2015) dentro de los diferentes tipos de softwares están:
1. Software de programación.
2. Software de sistema.
3. Software de aplicación
Los software de sistemas (Darshan, 2015) son un conjunto de programas que administran
recursos de un sistema informático, realizando una variedad de funciones. El software del
sistema se puede clasificar ampliamente en tres tipos según anuncia (Darshan, 2015):
Programas de control del sistema: controlan la ejecución de los programas, administrar los
recursos de almacenamiento y procesamiento de la computadora y realizar otra función de
gestión y supervisión. El más importante de estos programas es el sistema operativo. Otro
ejemplo son los sistemas de gestión de bases de datos (DBMS) y monitores de comunicación.
Programas de soporte del sistema brindan funciones de servicio de rutina para los otros
programas de computadora y usuarios de computadoras.
El software del sistema se puede ver como un software que vincula lógicamente los
componentes de una computadora para que funcione como una sola unidad y proporciona la
infraestructura sobre la cual pueden funcionar los programas. Es responsable de controlar el
hardware de la computadora y otros recursos, y permite que el software de aplicación
interactúe con las computadoras para realizar su tarea. Algunos software de sistemas
específicos son ensambladores, enlazadores, cargadores, macro procesadores, editores de
–Osvaldo Guerra Cremé
texto, compiladores, sistema operativo, sistema de depuración, sistema de control de código
fuente (Darshan, 2015).
Los software de aplicación son prácticamente incontables. Existen programas que nos
permiten resolver necesidades de organizaciones, reproducir música, resolver cálculos
matemáticos, jugar, ver videos, dibujar y comunicarnos con otras computadoras a través de la
línea telefónica o redes inalámbricas. Existen distintos programas para proyectar un edificio,
para hacer videos musicales, para crear efectos especiales en una película, etc. Las
posibilidades crecen día a día, y éstas dependen de los programas y del tipo de hardware que
se utilice (Darshan, 2015). Se tiene como software de aplicación también como programas
aislados que resuelven una necesidad específica de negocios, conocido dentro de esta
clasificación como software de gestión. Las aplicaciones en esta área procesan datos
comerciales o técnicos en una forma que facilita las operaciones de negocios o la toma de
decisiones administrativas o técnicas. Además de las aplicaciones convencionales de
procesamientos de datos, el software de aplicación se usa para controlar las funciones de
negocios en tiempo real (Pressman).
Antes de continuar es necesario definir el propósito u objetivo que regirá el desarrollo del
software que dará solución al problema.
1.6.1 Metodología XP
Una de las principales es la metodología de Programación Extrema, a continuación XP, por
sus siglas en inglés, la cual garantiza contar con una herramienta accesible al usuario, sencilla
y a la misma vez dinámica. XP constituye un modelo de trabajo compartido, donde existe la
conexión entre el cliente y el desarrollador, lo que permite la construcción de un sistema de
acuerdo a los requerimientos establecidos por el cliente al principio de llevar a cabo el proyecto
(Darío, 2016).
Planeación
Las historias de usuarios: descritas por el cliente, en su propio lenguaje, como descripciones
cortas de lo que el sistema debe realizar, en el desarrollo ágil, las historias de usuarios es el
sustituto liviano a lo que tradicionalmente se ha usado para especificar requisitos.
El Plan de Entregas: establece que las historias de usuarios serán agrupadas para
conformar una entrega y el orden de las mismas. Este cronograma será el resultado de
una reunión entre todos los actores del proyecto.
Plan de Iteraciones: las historias de usuarios seleccionadas para cada entrega son
desarrolladas y probadas en un ciclo de iteración, de acuerdo al orden preestablecido.
Diseño
La Metodología XP hace especial énfasis en los diseños simples y claros (Darío, 2016). Los
conceptos más importantes de diseño en esta metodología son los siguientes:
Simplicidad: un diseño simple se implementa más rápidamente que uno complejo. Por
ello XP propone implementar el diseño más simple posible que funcione.
Soluciones “Spike”: cuando aparecen problemas técnicos, o cuando es difícil de estimar
el tiempo para implementar una historia de usuario, pueden utilizarse pequeños
programas de prueba (llamados “Spike”), para explorar diferentes soluciones.
Recodificación: consiste en escribir nuevamente parte del código de un programa, sin
cambiar su funcionalidad, a los efectos de crearlo más simple, conciso y entendible. Las
metodologías de XP sugieren re codificar cada vez que sea necesario.
Codificación
Pruebas
Es en esta última fase donde se verifica si el software cumple con las necesidades por las que
fue desarrollado (Darío, 2016), se evalúan algunos de estos aspectos:
Pruebas unitarias: todos los módulos deben de pasar las pruebas unitarias antes de ser
liberados o publicados; por otra parte, como se mencionó anteriormente, las pruebas
deben ser definidas antes de realizar el código (“Test-Driven Programmming”). Que todo
código liberado pase correctamente las pruebas unitarias, es lo que habilita que
funcione la propiedad colectiva del código.
Detección y corrección de errores: cuando se encuentra un error (“Bug”), éste debe ser
corregido inmediatamente, y se deben tener precauciones para que errores similares
no vuelvan a ocurrir. Asimismo, se generan nuevas pruebas para verificar que el error
haya sido resuelto.
Pruebas de aceptación: son creadas en base a las historias de usuarios, en cada ciclo
de la iteración del desarrollo. El cliente debe especificar uno o diversos escenarios para
comprobar que una historia de usuario ha sido correctamente implementada. Asimismo,
en caso de que fallen varias pruebas, deben indicar el orden de prioridad de resolución.
Una historia de usuario no se puede considerar terminada hasta que pase
correctamente todas las pruebas de aceptación.
De la tabla anterior se tienen elementos que no se han definido concretamente tales como
historias de usuarios, tarjetas CRC, estándares de codificación y código.
2. Longitud de la línea: evitar las líneas de más de 80 caracteres, ya que no son manejadas
bien por muchas terminales y herramientas.
3. Rompiendo líneas: cuando una expresión no entre en una línea, romperla de acuerdo
con estos principios:
Cambio de línea después de una coma.
Cambio de línea antes de un operador.
Alinear la nueva línea con el comienzo de la expresión al mismo nivel de la línea anterior.
Existe otro estándar de codificación muy usado en Java que es el CamelCase (BINKLEY,
2009), CamelCase puede dividirse en dos tipos:
Upper Camel Case: Cuando la primera letra de cada una de la palabra es mayúscula. También
es denominado Pascal Case; un ejemplo es: EjemploDeNomenclatura.
Lower Camel Case: Igual que la anterior o que con la excepción de que la primera letra es en
minúscula; un ejemplo es: ejemploDeNomenclatura.
Otra de las metodologías existentes es Scrum (Molina Romero, y otros, 2015) que, es una
forma ágil de gestionar un proyecto. Realmente se puede definir como un conjunto de buenas
prácticas para trabajar colaborativamente en equipos altamente productivos. Se basa en
–Osvaldo Guerra Cremé
equipos multifuncionales y auto-organizados donde no existe un líder global que decide qué
persona, qué tarea o cómo se resolverá un problema.
Scrum (Molina Romero, y otros, 2015) está estructurada por varios aspectos tales como:
Equipo Scrum: los equipos Scrum entregan productos de forma iterativa e incremental,
maximizando las oportunidades de obtener retroalimentación. Las entregas
incrementales de un producto terminado aseguran que siempre estará disponible una
versión potencialmente útil y funcional de este, consiste en:
1. Dueño de producto: es quien define los objetivos, planifica el proyecto, crea y
mantiene la lista de requisitos priorizados que son necesarios para cumplir los
objetivos, establece calendario de entregas;
2. Equipo de desarrollo: es un equipo de desarrollo auto-organizado y multifuncional
que, como equipo, cuenta con todas las habilidades necesarias para crear un
incremento del producto.
3. El facilitador: es el responsable de que el quipo trabaje ajustándose a las reglas
de Scrum, es un líder que está al servicio del equipo y ayuda a resolver
problemas o impedimentos que el equipo tiene para que se logre el objetivo de
cada iteración y poder finalizar el proyecto con éxito.
El sprint: es considerado como el corazón de Scrum. Es un bloque de tiempo de un mes
o menos de duración durante el cual se crea in incremento del producto terminado.
Reunión de planificación de Sprint: es donde se planifica el trabajo a realizar durante el
sprint.
Scrum diario: es una reunión diaria de 15 minutos que tiene el objetivo de facilitar la
transferencia de la información, la colaboración entre los miembros.
Revisión de sprint: se trata de una reunión informal donde el equipo presenta al cliente
los requisitos completados en el Sprint, es aquí donde el cliente puede ver de manera
objetiva como han sido desarrollados los requisitos que proporcionó y ver si cumplen
sus expectativas.
También dentro de las metodologías prescriptivas está RUP (Molina Romero, y otros, 2015),
que asegura la producción de software de alta calidad dentro de unos tiempos y presupuestos
predecibles. RUP promueve la productividad del trabajo en equipo proporcionando a cada
miembro del equipo un fácil acceso a una base de conocimiento con una serie de directrices,
plantillas y herramientas para actividades de desarrollo críticas. Es una metodología extensa
y con cierto grado de complejidad.
RUP es una metodología de desarrollo de software formal (Cicilia, y otros, 2009), orientadas a
objetos, con un ciclo de vida espiral. Este proceso de desarrollo de software utiliza el lenguaje
unificado de modelado UML, y constituye una de las mejores y más utilizadas para el análisis,
implementación y documentación de sistemas orientados a objetos. Pertenece a un conjunto
de metodologías adaptables al contexto y necesidades de cada organización. Las principales
características de RUP abordadas por (Cicilia, y otros, 2009) son:
Dirigido por casos de uso: los casos de uso son una técnica que se utiliza para la captura
de requisitos por parte de los clientes/usuarios, se define un caso de uso como un
fragmento de funcionalidad del sistema que proporciona al usuario un valor añadido, los
casos de uso representan los requisitos funcionales del sistema
Centrado en arquitectura: La arquitectura es la organización o estructura de todas las
partes más relevantes del sistema, la arquitectura juega un papel muy importante en el
desarrollo de software ya que nos permite tener una visión común entre todos los
involucrados en el proceso. La Arquitectura en RUP ocupa un papel muy importante, el
establecimiento temprano de una buena arquitectura que haga frente a cualquier
cambio posterior durante la construcción y el mantenimiento.
Iterativo e incremental: RUP apuesta por procesos interactivos e incrementales en
donde el trabajo se divide en partes más pequeñas o mini proyectos permitiendo el
equilibrio entre casos de uso y arquitectura.
En este capítulo se definió el marco conceptual de referencia para soportar los fundamentos
teóricos de la investigación que permitió definir conceptos esenciales, en este caso están:
desempeño computacional y lo que representa a la hora de la elección de uno de los algoritmos
de extracción, tipos de software donde quedó reflejado que el tipo de software donde se
enmarca la solución es el de aplicación, requisitos de alto nivel, proceso de desarrollo de
–Osvaldo Guerra Cremé
software quedando en este definido que no se utilizará una metodología en específico, sino
que se utilizará algunos aspectos de estas mencionados anteriormente.
El proceso de captura de requisitos es una etapa de suma importancia dentro del proceso de
desarrollo de software. Éste se encarga de analizar las necesidades del cliente, describirlas en
detalle para conformar el sistema de la manera más precisa, cumpliendo siempre con las
especificaciones deseadas. En el presente trabajo, se identificaron los siguientes requisitos
funcionales a través de entrevistas realizadas al cliente:
1. El sistema debe ser capaz de aplicar la misma entrada a los algoritmos Eclat y FP-
GROWTH.
2. El sistema debe ser capaz de computar las reglas de asociación utilizando el algoritmo
Eclat.
3. El sistema debe ser capaz de computar las reglas de asociación utilizando el algoritmo
FP-GROWTH.
4. El sistema debe ser capaz de medir el tiempo de ejecución del algoritmo Eclat.
5. El sistema debe ser capaz de medir el tiempo de ejecución del algoritmo FP-GROWTH.
6. EL sistema debe ser capaz de determinar uso de memoria del algoritmo Eclat.
7. EL sistema debe ser capaz de determinar uso de memoria del algoritmo FP-GROWTH.
–Osvaldo Guerra Cremé
8. EL sistema debe ser capaz de determinar la cantidad de elementos frecuentes del
algoritmo Eclat.
9. EL sistema debe ser capaz de determinar la cantidad de elementos frecuentes del
algoritmo FP-GROWTH.
En la presente investigación se propone definir una línea base tecnológica para lograr un
correcto proceso de desarrollo de software. Como se mencionó anteriormente con las
actividades se generan respectivamente entregables mostrados en la tabla siguiente:
Longitud de la línea: evitar las líneas de más de 80 caracteres, ya que no son manejadas
bien por muchas terminales y herramientas: todo el código desarrollado ha cumplido con esta
característica.
Rompiendo líneas: cuando una expresión no entre en una línea, romperla de acuerdo
con estos principios:
Cambio de línea después de una coma.
Cambio de línea antes de un operador.
Alinear la nueva línea con el comienzo de la expresión al mismo nivel de la línea anterior.
Se decide utilizar NetBeans 8.2 debido a que ofrece opciones de desarrollo importantes, así
como completamiento de código. Es una herramienta fácil de instalar y consume pocos
recursos. El editor de código fuente que presenta es muy ágil y a la vez robusto, características
que hacen que sea una excelente herramienta para el desarrollo de soluciones informáticas.
Un Frequent Pattern Tree (FP-Tree) es una estructura de datos de tipo árbol, que consiste en
un nodo raíz que tiene como sus hijos a sub-árboles de prefijos de ítems. Cada nodo del sub-
árbol de prefijo de ítem contiene tres campos: el nombre del ítem al cual el nodo representa,
–Osvaldo Guerra Cremé
un contador que registra el número de transacciones que satisfacen la rama del árbol que va
de la raíz hasta este nodo, y un puntero al siguiente nodo del FP-Tree que contenga el mismo
nombre de ítem o un puntero vacío si no existe tal nodo. A su vez, el FP-Tree posee una
estructura de datos auxiliar denominada tabla de encabezados. Cada entrada en esta tabla
posee dos campos. El primero es el nombre del ítem y el segundo es un puntero al primer nodo
del FP-Tree que posee el mismo nombre de ítem (CASTILLO, y otros, 2015).
Después de que se han borrado todos los ítems infrecuentes de la base de datos de
transacciones, se pasa al árbol FP. En un árbol FP cada camino representa el grupo de
transacciones que comparten el mismo prefijo, cada nodo corresponde a un ítem y a su vez
los nodos en el árbol son reordenados de forma tal que los de mayor soporte tengan más
probabilidad de compartir nodos que otros con menos soporte (Medina, y otros, 2007). Todos
los nodos que referencian al mismo ítem se ponen juntos en una lista, de modo que todas las
transacciones que contienen un ítem específico pueden encontrarse fácilmente y contarse en
la lista. Esta lista puede ser indexada a través de la cabeza, lo cual también expone el número
total de ocurrencias del ítem en la base de datos.
A cada caso de estudio está asociado un dataset de transacciones, estos dataset fueron
seleccionados de la UCI (University of California Irvine) (Dheeru, 2017), puesto que esta
universidad tiene numerosos volúmenes de datos para ser trabajados en diferentes
investigaciones.
Pelo Booleano
Plumas Booleano
Huevos Booleano
Leche Booleano
aerotransportado Booleano
Acuático Booleano
Depredador Booleano
Dentado Booleano
Backbone Booleano
Respira Booleano
Venenoso Booleano
Aletas Booleano
Patas {0,2,4,5,6,8}
Cola Booleano
Doméstico Booleano
Tipo xϵℝ; 1 ≤ x ≤ 7
Puertas 2, 3, 4, 5
Personas 2, 4
Se decide definir tres escenarios de prueba donde cada uno corresponde a la ejecución de los
algoritmos sobre cada dataset con distintos valores de soporte para analizar su
comportamiento reflejado en los valores de los indicadores: tiempo de ejecución, uso de
memoria.
3
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
Gráfico 1: Uso de memoria algoritmos Eclat y FP-GROWTH para dataset Balance Scale
4
3.5
3
2.5
2
1.5
1
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
12
10
0
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
El análisis de los gráficos 1, 2 y 3 conlleva a que el uso de memoria del algoritmo de extracción
de reglas de asociación Eclat se comporta con mejores resultados independientemente del
valor de soporte que se utilice.
25
23
21
19
17
15
13
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
Gráfico 4: Tiempo de ejecución algoritmos Eclat y FP-GROWTH para dataset Balance Scale
13
12
11
10
9
8
7
6
5
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
25
23
21
19
17
15
13
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
Se puede evidenciar a través del Gráfico 4, 5 y 6 que, a pesar de haber usado distintos valores
de soporte, en cuanto a tiempo de ejecución el algoritmo FP-GROWTH tiene mejor desempeño
en todas las circunstancias.
Los resultados arrojados luego de la ejecución de los algoritmos con los casos de estudio,
permiten constatar a través de los gráficos 1, 2, 3, 4, 5, 6 que no se puede llegar a una
conclusión concreta a la hora de elegir cuál de los dos tiene mejor desempeño. Por tanto, se
propone realizar una suma ponderada (TORRES, y otros, 2009) definiendo en esta, qué
indicador en particular tiene mayor peso sobre el otro. En caso de que se desee procesar un
dataset con un gran número de transacciones, lo conveniente es que tenga más peso el tiempo
–Osvaldo Guerra Cremé
de ejecución. Teniendo en cuenta esto y habiéndose analizado los datasets, los cuales no
tienen suficientes transacciones como para darle mucho valor al tiempo de ejecución la suma
ponderada quedaría de la siguiente manera:
𝑆𝑢𝑚𝑎𝑃𝑜𝑛𝑑𝑒𝑟𝑎𝑑𝑎 = 𝛼 ∗ 𝑇𝑒 + 𝛽 ∗ 𝑈𝑚
Donde 𝑇𝑒 es el tiempo de ejecución, 𝑈𝑚 es uso de memoria, 𝛼 y 𝛽 son los valores de los pesos
que tienen los indicadores de tiempo de ejecución y uso de memoria, donde 𝛼 + 𝛽 ≤ 1
Luego de tener definida la suma ponderada se podrá determinar en dependencia de qué desea
el usuario cuál de los dos algoritmos tiene mejor desempeño computacional. A continuación,
se procederá a evaluar las ejecuciones pertinentes de los algoritmos para analizar cómo se
comportan luego de lo anteriormente planteado con una ecuación de suma ponderada:
𝑆𝑢𝑚𝑎𝑃𝑜𝑛𝑑𝑒𝑟𝑎𝑑𝑎 = 0.3 ∗ 𝑇𝑒 + 0.7 ∗ 𝑈𝑚
Suma Ponderada
Algoritmo Valor de soporte 0.01 Valor de soporte 0.03 Valor de soporte 0.05
Eclat 10.9375237 9.96650229 7.79351959
FP-GROWTH 11.6815384 10.109539 8.16551895
Tabla 18: Valores de la suma ponderada de los algoritmos Eclat y FP-GROWTH
SUMA PONDERADA
Eclat FP-Growth
13
12
11
10
7
SOPORTE 0.01 SOPORTE 0.03 SOPORTE 0.05
Conclusiones parciales
En este capítulo se evaluaron a través de casos de estudio la ejecución de los algoritmos de
Eclat y FP-GROWTH con distintos valores de confianza, para determinar que, en especial
ninguno de los dos se comporta de mejor forma que el otro, teniendo que emplear el uso de
una suma ponderada en la que se determina un peso para cada indicador, en dependencia de
cuál es más importante para el usuario para determinar cuál de los dos algoritmos tiene mejor
desempeño, quedando como algoritmo con mejor desenvolvimiento Eclat.
2. AGRAWAL, Rakesh, IMIELIŃSKI, Tomasz and SWAMI, Arun. 1993. Mining association
rules between sets of items in large databases. 1993.
3. Alatas, B., E. Akin, and A. Karci. 2008. MODENAR: Multi-objective differential evolution
algorithm formining numeric association rules. 2008.
8. Darshan. 2015. Darshan. Darshan. [Online] 11 25, 2015. [Cited: 1 14, 2017.]
http://www.darshan.ac.in/Upload/DIET/Documents/CE/Darshan%20-%20Sem5%20-
%202150708%20-%20SP_25112015_054658AM.pdf.
9. Data Mining Discretization Methods and Performances. Marzuki, Zaharin. 2014. 2014.
10. Dheeru, Dua and Karra Taniskidou, Efi. 2017. UCI Machine learning repository. [Online]
University of California, Irvine, School of Information and Computer Sciences, 2017.
[Cited: 3 15, 2018.] http://archive.ics.uci.edu/ml.
11. Felipe Alfaro, Jimmy Solano. 2015. Singularities. [Online] agosto 2015. [Cited: diciembre
15, 2017.] https://www.singularities.com/blog/2015/08/apriori-vs-fpgrowth-for-frequent-
item-set-mining.
18. IEEE standard glossary of software engineering terminology. RADATZ, Jane, GERACI,
Anne and KATKI, Freny. 1990. 1990.
20. LaRosa, C., L. Xiong, and K. Mandelberg. 2008. Frequent pattern mining for kernel trace
data. Ceara, Brazil : s.n., 2008.
22. M. Bohanec, V Rajkovic. 1990. Expert system for decision making. 1990.
23. Martín, D. Álvaro Pita. 2012. Una metaheurística para la extracción de reglas de. 2012.
24. Martínez, Apolinar Velarde. 2003. Minería de Datos. Una Introducción. 2003.
25. Medina, José E, Hernández palancar, José and Pérez, Airel. 2007. Generación de
conjuntos de ítems y reglas de asociación. Ciudad de la Habana, Cuba : s.n., 2007.
26. Molina Romero, Javier and Quishpi Betún, Luis. 2015. Desarrollo de herramienta de
gestion de proyectos RUP usando metodología Scrum+XP. Madrid, España : s.n., 2015.
27. Negrín Ortiz, Guillermo. 2014. Ontología Del modelo multidimensional y las
asociaciones entre sus elementos. 2014.
33. Rennolls, Keith. 2005. An intelligent framework (O-SS-E) for data mining, knowledge
discovery and business intelligence. 2005.
34. T. Menzies, Y. Hu. 2003. Data Mining For Busy People. 2003.
35. TORRES, Patricia, CRUZ, Camilo Hernán and PATIÑO, Paola Janeth. 2009. Índices de
calidad de agua en fuentes superficiales utilizadas en la producción de agua para
consumo humano: Una revisión crítica. 2009.
36. Trujillo Gálvez, Belkis. 2016. Software for health situation analysis in Stomatology. 2016.
38. Witten, Ian H., Frank, Eibe , Hall, Mark A. 2016. Practical machine learning tools and
techniques. 2016.
39. Wu, Xindong. 2008. Top 10 algorithms in data mining. Knowledge and information
systems. 2008.
41. Zaki, Mohammed J. 2000. Scalable Algorithms for Association Mining. 2000.