Aprendizaje con Reglas de Asociación

Aprendizaje con Reglas de Asociación usando Python

El aprendizaje con reglas de asociación lo vemos aplicado principalmente en los sistemas de recomendación, como en el caso donde se nos muestra que las personas que compraron este producto, también compraron este otro .. o quienes vieron tal película también recomiendan estas otras, etc.

Para ello, el algoritmo a priori es uno de los más utilizados en este tema y permite encontrar de forma eficiente conjuntos de items frecuentes, los cuales sirven de base para generar reglas de asociación entre los items.

Primero identifica los items individuales frecuentes dentro del conjunto de datos para luego extenderlo a un conjunto de mayor tamaño siempre y cuando esos conjuntos de datos aparezcan constantemente y de manera frecuente de acuerdo con un umbral establecido.

El algoritmo se aplica principalmente en el análisis de transacciones comerciales y en los problemas de predicción. Es por ello que el algoritmo está diseñado para trabajar con bases de datos que contienen transacciones como los productos o artículos comprados por consumidores, o detalles sobre las visitas a un sitio web, etc.

La forma de generar las reglas de asociación consta de dos pasos:

  • Generación de combinaciones frecuentes: cuyo objetivo es encontrar aquellos conjuntos que sean frecuentes en la base de datos. Para determinar la frecuencia se establece un umbral.
  • Generación de reglas: A partir de los conjuntos frecuentes se crean las reglas en base al ordenamiento de un índice que establece los grupos de items o productos frecuentes.

El índice para la generación de combinaciones se llama soporte y el índice para la generación de reglas se llama confidencia.

Algoritmo

  • Paso 1. Se establecen los valores mínimos para el soporte y la confidencia
  • Paso 2. Se toman todos los subconjuntos de transacciones que tienen un soporte mayor al valor del soporte mínimo.
  • Paso 3. Tomar todas las reglas de estos subconjuntos que tengan una confidencia mayor al valor de la confidencia mínima.
  • Paso 4. Ordenar las reglas de forma decreciente en base al valor del lift.

Si quieres ver el tema en video, checalo aquí y suscribete al canal en Youtube.

Entra a youtube y suscribete al canal

Ejemplo

Si tenemos un conjunto de 5 transacciones con diversos productos en cada una de ellas de acuerdo con la siguiente tabla

1Pan, leche, pañales
2Pan, pañales, cerveza, huevo
3Leche, pañales, cerveza, refresco, café
4Pan, leche, pañales, cerveza
5Pan, refresco, leche, pañales

El primer paso es generar las compinaciones frecuentes, y, si queremos un soporte superior al 50%, entonces contamos la frecuencia de cada uno de los artículos, es decir, en cuantas transacciones aparecen cada uno de los artículos.

ArtículoTransacciones
Cerveza3
Pan4
Refresco2
Pañales5
Leche4
Huevo1
Café1

Para calcular el soporte de cada artículo dividimos la cantidad de transacciones de cada artículo, entre el total de transacciones. Es decir, para cerveza tenemos que aparece en 3 de las 5 transacciones, entonces es 3/5 = 0.6 que representa el 60%. Para el resto de los artículos tenemos lo siguiente:

ArtículoSoporte
Cerveza60%
Pan80%
Refresco40%
Pañales100%
Leche80%
Huevo20%
Café20%

Como se requiere un soporte superior al 50% entonces eliminamos todos los artículos que estan por abajo de este umbral: refreso, huevo y café.

El siguiente paso es generar las combinaciones con los productos que quedaron para iterar primero con combinaciones de dos, calculamos el soporte y después con combinaciones de 3 y así sucesivamente.

ConjuntosFrecuenciaSoporte
Cerveza, Pan240%
Cerveza, Pañales360%
Cerveza, Leche240%
Pan, Pañales480%
Pan, Leche360%
Pañales, Leche480%

Eliminamos los que estan por abajo del 50% y nos quedamos con los primeros conjuntos frecuentes cuyo soporte es superior al 50%

Cerveza, Pañales
Pan, Pañales
Pan, Leche
Pañales, Leche

A partir de los conjuntos generados, creamos conjuntos de tres artículos y calculamos su soporte

ConjuntosFrecuenciaSoporte
Cerveza, Pañales, Pan240%
Cerveza, Pañales, Leche240%
Pan, Pañales, Leche360%
Pan, Leche, Cerveza120%

En estas combinaciones de tres, únicamente nos quedamos con el conjunto formado por Pan, Pañales y Leche, el cual utilizamos para hacer combinaciones de 4 artículos, sin embargo para este caso, tienen soporte de 20% por lo cual, aquí termina el argoritmo.

El resultado arrojo un elemento de 3 artículos y cuatro de 2 artículos:

Pan, Pañales, Leche
Cerveza, Pañales
Pan, Pañales
Pan, Leche
Pañales, Leche

A partir de estos 5 conjuntos obtenemos la reglas de asociación, para lo cual, establecemos que también queremos un índice superior 50%. Este índice es la confidencia y lo calculamos dividiendo las repeticiones de las observaciones del conjunto entre las repeticiones de la regla:

Tomando el primer conjunto de Pan, Pañales, Leche, las reglas posibles son:

  • Pan => Pañales, Leche
  • Pañales => Pan, Leche
  • Leche = Pan, Pañales
  • Pan, Pañales => Leche
  • Pan, Leche => Pañales
  • Leche, Pañales => Pan

Si tomamos la primer regla: Pan => Pañales, Leche observamos que en las transacciones originales que Pan, Pañales, Leche aparece en 3 transacciones y la regla Pan aparece en 4 transacciones, entonces la confidencia es 3/4 = 0.75 que es el 75%

Para la regla formada por: Pan, Pañales => Leche tenemos que la combinación Pan, Pañales, Leche aparece en 3 transacciones y la regla Pañales, Leche en 4 transacciones por lo que su confidencia es del 75% también, es decir 3/4 = 0.75

Una vez que calculamos las confidencia de todas las reglas, las ordenamos de mayor a menor en base a esa confidencia calculada y obtenemos las reglas de asociación para todo el conjunto, que es como funciona el algoritmo A Priori.

A Priori con Python

Para el ejemplo con python utilizaremos un conjunto de datos de transacciones comerciales llamado: Market_Basket_Optimisation.csv con 7,501 registros o transacciones, cada una de las cuales contiene uno o varios productos de un supermercado:

Conjunto de datos de transacciones comerciales

Observamos las reglas resultantes con 2, 3 o más artículos que implican otro grupo de productos y tenemos también el soporte, la confidencia y el lift.

Clase Apriori

La clase apriori utilizada en la implementación anterior es la siguiente:

Ambos archivos deben estar en la misma carpeta para poder utilizar la clase en el script que crea las reglas de asociación.


5 1 vote
Article Rating
Subscribe
Notify of
guest
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
hanifa yusliha rohmah
5 years ago

are Python an insurance that has already been associated?

rani
4 years ago

what is the Association Rules?

4
0
Would love your thoughts, please comment.x
()
x

JacobSoft

Recibe notificaciones de los nuevos artículos y tutoriales cada vez que se incorpore uno nuevo

Gracias, te has suscrito al blog y al newsletter

There was an error while trying to send your request. Please try again.

JacobSoft utilizará la información que proporcionas para estar encontacto contigo y enviarte actualizaciones.