Analisis de Market Basket utilizando R

Que son las reglas de asociación?

Hay varias formas de ver las similitudes entre elementos. Estas son técnicas que caen dentro del paraguas de asociación. El resultado de este tipo de técnicas, en términos simples, es un conjunto de reglas que se pueden entender como “si esto, entonces aquello”.
(mas información)

Aplicaciones

De que tipo de elementos hablamos entonces?
Hay muchas aplicaciones para las reglas de asociacion:
  • Recomendaciones de productos – como el de Amazon “Clientes que compraron esto, también compraron esto otro”
  • Recomendaciones musicales – como las recomendaciones de artistas de Last FM.
  • Diagnósticos médicos – ejemplos como las diabetes, hay aplicaciones increíbles.
  • Optimización de contenido – como en revisas o blogs.
En esta entrada nos vamos a enfocar en aplicaciones de retail – porque son simples, intuitivas y porque los datasets ya vienen junto con R, haciéndolo repetible.

El dataset de compras

Imaginate 10.000 facturas arriba de tu mesa. Cada una representa una transacción con productos que se compraron. La factura es una representación de las cosas que terminaron en la canasta de un cliente – Y por ende el nombre, “Análisis de la Canasta de Mercado” o “Market Basket Analysis”. Esto es exactamente lo que el dataset de Groceries de R contiene: una colección de facturas, cada una representando los productos comprados. Cada linea se llama transacción y cada columna del registro representa un producto. Podes descargar el dataset de Groceries para darle una mirada, pero no es un paso necesario.

Un poco de Matemáticas

Ya conocemos el concepto de Items y Conjuntos de Elementos. Podemos representar nuestros ítems como un conjunto así: Por lo tanto una transacción se representa así: Y esto nos da nuestras reglas, que se representan asi Las cuales se pueden leer como “si un usuario compra un ítem en el conjunto de la izquierda, entonces es probable que también compre un ítem del conjunto de la derecha”. Una forma mas humanamente legible seria este ejemplo: Si un cliente compra café y azúcar, es probable que también compre leche Con esto podemos entender tres ratios importantes; el soporte (support), la confianza (confidence) y el lift. A continuación lo describimos muy brevemente, pero si estas interesado en una definición mas formal, podes encontrarlos en wikipedia. Support: La fracción en la cual nuestro conjunto ocurre en el dataset.
Confidence: Probabilidad de que una regla sea correcta para una nueva transacción con ítems del lado izquierdo.
Lift: La tasa por la cual la confidence observada de una regla supera la esperada. Atencion: Cuando el Lift es 1 quiere decir que los ítems de la derecha y de la izquierda son independientes.

Recomendación Apriori con R

Empecemos cargando nuestras librerias y el dataset Exploremos los datos antes de hacer alguna regla
Apriori Item Frequency
Frecuencia de elementos
Estamos listos para minar algunas reglas!
Siempre tenes que especificar el mínimo requerido para support y confidence.
  • Configuramos a support con un mínimo de 0,01
  • Configuramos a confidence con un mínimo de 0,8
  • Finalmente mostramos las 5 mejores reglas
La salida que vemos debería ser similar a esta Esto se lee fácil, por ejemplo: si alguien compra yogur y cereales, hay un 81% de posibilidades de que también compre leche entera. Podemos ahora agrupar y sumarizar las reglas que nos va a dar información interesante tal como:
  • La cantidad de reglas generadas: 410
  • Como se distribuyen las reglas por largo: La mayoría tienen 4 ítems.
  • El resumen de la calidad de las medidas: es interesante ver los rangos de support, confidence y lift.
  • La informacion sobre los datos minados: cantidad de registros minados, parámetros mínimos.

Ordenando las cosas

El primer problema que vemos aquí es que las reglas no están ordenadas. A menudo queremos ver las reglas mas relevantes primero. Digamos que queremos ver las reglas mas probables. Podemos fácilmente ordenar por confidence ejecutando el siguiente código Ahora nuestra salida con los 5 mejores queda ordenada por confidence y por lo tanto aparecen las reglas mas relevantes. La 4ta regla es quizás demasiado larga. Digamos que queremos ver reglas mas concisas. Esto se puede lograr fácilmente agregando un parámetro “maxlen” (largo máximo) a la función apriori:

Redundancias

A veces las reglas se repiten. La redundancia indica que un elemento se puede llegar a descartar. Como analista podes elegir eliminar ese elemento del dataset. O en su lugar, eliminar las reglas redundantes generadas. Para eliminar esas reglas repetidas y redundantes utilizamos el siguiente código

Seleccionando Ítems

Ahora que sabemos como generar reglas y limitar la salida, digamos que queremos enfocarnos en ciertos ítems para generar las reglas. Hay dos tipos de targets que pueden resultar interesantes y que están ilustrados en el ejemplo de la “leche entera”:
  • Que productos compran los clientes antes de comprar leche entera?
  • Que productos compran los clientes si es que compraron leche entera?
Esto en si significa que queremos configurar ya sea el lado Izquierdo (lhs) o el lado Derecho (rhs). Para nada difícil de hacer en R! Respondiendo la primer pregunta ajustamos nuestra función apriori() asi: La salida queda así También podemos configurar el lado izquierdo para que sea “leche entera” y así encontrar sus antecedentes. Atención con lo siguiente
  • Configuramos la confidence en 0,15 ya que no hay reglas con 0,8
  • El largo mínimo lo ponemos en 2 para evitar reglas sin elementos en el lado izquierdo.
Ahora nuestra salida se ve así

Visualización

El ultimo paso es la visualización. Digamos que queremos mapear las reglas en un grafo. Lo podemos hacer con una librería llamada “arulesViz”. Vas a obtener un lindo grafico que podes mover y se ve asi
https://i0.wp.com/www.salemmarafi.com/wp-content/uploads/2014/03/ruleGraph.png?w=1100
Ejemplo de grafo de reglas de asociacion
(enlace al original en ingles)

Dejá una respuesta