Reglas de asociación
Aplicación del Algoritmo Apriori
Reglas de Asociación
Algoritmos de reglas de asociación
• Los algoritmos de reglas de asociación tienen como objetivo
encontrar relaciones dentro un conjunto de transacciones, en
concreto, items o atributos que tienden a ocurrir de forma conjunta.
En este contexto, el término transacción hace referencia a cada grupo
de eventos que están asociados de alguna forma.
Reglas de Asociación
• Una de las formas mas usadas para el análisis de compras son las
Reglas de Asociación.
• Se usa para encontrar patrones en las diferentes compras (facturas)
que se realizan a un negocio.
• Esto puede servir para ordenar mejor los productos en sus estanterías
dependiendo su correlación con otros productos, así como generar
ofertas o descuentos específicos de acuerdo a los clientes y sus
compras.
Reglas de Asociación
• Del mismo modo en que se analizan los productos en una factura, se
pueden analizar las respuestas de una encuesta para ver la relación
entre las respuestas.
• De hecho la compra de un producto en especifico pero con distintas
características podría analizarse con este algoritmo, por ejemplo, se
podría analizar cuales son las características preferidas a la hora de
comprar un vehículo: color, tapicería, sistema de sonido…
¿Qué es el Algoritmo Apriori?
• Es una técnica fundamental en la minería de datos, específicamente
diseñada para identificar patrones de asociación en bases de datos
transaccionales.
• Fue propuesto por Agrawal y Srikant en 1994 y se utiliza
principalmente para descubrir conjuntos de ítems frecuentes, que son
grupos de elementos que aparecen juntos en las transacciones con
una frecuencia superior a un umbral definido.
Apriori
• MLxtend
• Hace un tiempo, para explicar las reglas de asociación, se utiliza la
implementación de MLxtend. Para instalar este paquete solamente se
es necesario ejecutar el siguiente comando en la terminal
• pip install mlxtend
Ejemplo
• El primer paso a realizar es el
cálculo del soporte, que es el
número de veces que un
producto aparece en las
compras, dividido por el número
total de compras.
• En el ejemplo, la Manzana
aparece en 5 de las 10 compras,
teniendo así un soporte de 5/10,
o 50%.
Realizar un filtro
• El filtro funciona como una especie de nivel de importancia que
queremos darle al producto.
• Al definir el nivel de soporte, se establece la frecuencia con la que un
producto debe aparecer para ser comparado y combinado con otros
ítems.
Soporte
• Aquí es importante definir un límite adecuado.
• Si se define un soporte muy bajo, varios
productos entrarán en el cálculo y esto puede
generar problemas de procesamiento
computacional, haciendo que el algoritmo tarde
más en ejecutarse en bases de datos más
grandes.
• En caso de definir un soporte muy alto, hace que
pocos productos o incluso ninguno sean
analizados.
Algunas consideraciones clave sobre el soporte:
• Representar la frecuencia relativa de un ítem o conjunto de ítems en
el conjunto de datos.
• Un soporte alto indica que el ítem o conjunto aparece con frecuencia
en las transacciones.
• Ayuda a filtrar ítems o conjuntos poco frecuentes que podrían
generar reglas irrelevantes.
• Debe establecerse de manera apropiada para cada caso de uso,
considerando el tamaño y características del conjunto de datos.
Transacciones
Manzana, Banana, Naranja
Manzana, Banana
Manzana, Naranja
Banana, Naranja
Manzana, Banana, Naranja, Pera
Banana, Pera
Manzana, Banana
Manzana, Naranja, Pera
Banana, Naranja
Manzana, Banana, Naranja
Primero, se calcula el soporte de cada fruta individual:
Manzana: 7 transacciones / 10 total = 0.7 (70%)
Banana: 8 transacciones / 10 total = 0.8 (80%)
Naranja: 6 transacciones / 10 total = 0.6 (60%)
Pera: 3 transacciones / 10 total = 0.3 (30%)
Se establecemos un soporte mínimo
del 50%.
• Esto significa que solo se consideran frutas o combinaciones de frutas
que aparezcan en al menos el 50% de las transacciones.
Filtros
Aplicando este filtro, se descarta la Pera ya que tiene un soporte del 30%, por debajo del mínimo.
Las demás frutas individuales sí superan el umbral.
Ahora generamos todas las posibles combinaciones de 2 frutas y calculamos su soporte:
Manzana + Banana: 5 transacciones / 10 total = 0.5 (50%)
Manzana + Naranja: 4 transacciones / 10 total = 0.4 (40%)
Banana + Naranja: 5 transacciones / 10 total = 0.5 (50%)
Solo Manzana+Banana y Banana+Naranja superan el soporte mínimo del 50%.
Finalmente, generamos la única combinación posible de 3 frutas:
Manzana + Banana + Naranja: 3 transacciones / 10 total = 0.3 (30%)
Este itemset no supera el umbral de soporte.
Los itemsets frecuentes
encontrados son:
• Manzana (70%)
• Banana (80%)
• Naranja (60%)
• Manzana + Banana (50%)
• Banana + Naranja (50%)
A partir de estos itemsets frecuentes, podemos
generar reglas de asociación como:
• Si un cliente compra Manzana, también comprará
Banana el 50% de las veces
• Si un cliente compra Banana, también comprará
Naranja el 50% de las veces
• Estas reglas pueden ser útiles para hacer
recomendaciones, diseñar promociones o
entender el comportamiento de compra de los
clientes
Importar librerías:
import pandas as pd
from mlxtend.frequent_patterns import apriori, association_rules
from [Link] import TransactionEncoder
import networkx as nx
import [Link] as plt
import pandas as pd:
• Pandas es una biblioteca de Python utilizada para la manipulación y
análisis de datos. Proporciona estructuras de datos y herramientas
para trabajar con datos tabulares, como DataFrames.
• pd es el nombre comúnmente usado para hacer referencia a la
biblioteca pandas, facilitando su uso en el código.
from mlxtend.frequent_patterns import apriori,
association_rules
mlxtend es una biblioteca de Python que proporciona herramientas
adicionales para el aprendizaje automático y la minería de datos.
apriori es una función de mlxtend que implementa el algoritmo
Apriori, el cual se utiliza para encontrar conjuntos de ítems frecuentes
en un conjunto de datos de transacciones.
association_rules es otra función de mlxtend que se usa para generar
reglas de asociación a partir de los conjuntos de ítems frecuentes,
ayudando a identificar patrones de coocurrencia entre los ítems.
from [Link] import
TransactionEncoder:
• TransactionEncoder es una clase de mlxtend utilizada para
transformar datos de transacciones en un formato adecuado para la
minería de datos.
• Convierte listas de ítems en una representación binaria donde cada
columna representa un ítem y cada fila una transacción.
import networkx as nx:
• NetworkX es una biblioteca para la creación, manipulación y estudio
de la estructura, dinámica y funciones de grafos y redes.
• nx es el nombre comúnmente usado para hacer referencia a la
biblioteca networkx, facilitando su uso en el código.
import [Link] as plt:
• Matplotlib es una biblioteca para la visualización de datos en Python.
Permite crear gráficos estáticos, animados e interactivos.
• pyplot es un módulo de matplotlib que proporciona una interfaz
similar a MATLAB para crear gráficos.
• plt es el nombre comúnmente usado para hacer referencia a
[Link], facilitando la creación y personalización de gráficos