Wednesday, August 15, 2012

Cosas para recordar sobre reglas de asociación.



Las reglas de asociación nos permiten establecer relaciones entre diferentes elementos que conforman un conjunto de transacciones, la clásica historia para plantear un ejemplo de la utilidad de reglas de asociaciones, son los supermercados, ellos manejan altos volumenes de transacciones y muchísimos productos. Entonces si queremos visualizar que productos son llevados en conjunto con frecuencia, necesitamos utilizar reglas de asociación.

Un caso muy comentado en google, es el caso de la regla que asociaba los pañales con la cerveza, para más información acá: Pañales y Cerveza datamining).  No es una regla muy explicita, sin embargo se obtiene con las frecuencias, siendo esto un hecho, y de acuerdo a esto se establecieron promociones, ubicación de artículos en el supermercado, entre otras acciones para mejorar las ventas de sus productos.

Actualmente existen muchos programas para utilizar reglas de asociación, probé varios, el que decidas usar depende de la cantidad de data.

- orange, tiene una interfaz qt  que es linda, pero con muchos artículos (muchas columnas en la transacción) la velocidad de respuesta es lenta, más si tienes una máquina bastante pobre como  la mía. Sin embargo orange lo puedes usar desde scripts sin interfaz gráfica, importando las librerías. Está bueno si sabes programar en python :) 

- weka, puede ser usado sin interfaz gráfica, ya que también es pesado y su tiempo de respuesta puede ser muy lento a medida que tiene más productos las transacciones, además puede configurar que utilice mayor cantidad de memoria RAM, más ram para weka  esto mejora un poco, pero igual con grandes cantidades de datos, luego tienes leer las salidas. Es buena opción. 
sería bash e invocaciónes al jar de weka.

- R ,  paquete arules, y arules secuences, son muy útiles, para buscar reglas de asociación, y patrones de secuencia.  me pareció sencillo de implementar para el caso, y bastante rápido, incluso más rápido que weka.

- Rapid miner, tiene reglas de asociación (invoca la api de weka :-s), el detalle es que es Java y su interfaz gráfica es pesada (mucha memoria ram), por lo que al tener muchas transacciones y columnas (productos) tarda en devolver las reglas, y secuencias. Se puede añadir más memoria ram, sin embargo este sería el más lento de los mencionados. 

- Modeler, es privativo, y no tengo licencia, pero igual lo usé en el laboratorio. y no es tan rápido como R.

Métricas, de esta comparación, no las guardé en un archivo, ya que el objetivo del post no es comparar, sino recordarme algunos tópicos de las reglas de asociación que tuve que realizar para el trabajo práctico. Otro día será..