Reglas de asociación con Weka

Problema

En un cliente en particular querían saber para cada combinación de paquetes de productos, que cantidad de abonados tenían en común.
Para determinar esto hacían una matriz en excel donde ubicaban todos los productos tanto en filas como en columnas y en las intersecciones indicaban la cantidad de clientes. Esta planilla la realizaban a mano, les lleva mucho trabajo y tenía la limitación de solo tener intersecciones de 2 paquetes y no más.

Como origen de datos generaban un archivo excel con el código de abonado y alguna información adicional en las filas (70 mil aproximadamente) y los distintos grupos de productos en columnas (100 apróx.).

Elección de metodología/herramientas

Se decidió utilizar algoritmos para la generación de reglas de asociación en Weka como parte central de la implementación.

Junto con el cliente se hizo una depuración de los paquetes a analizar hasta llegar a unos 25, excluyendo grupo de productos que no interesaban, que no tenían abonados o que estaban inactivos.Se hizo una limpieza y preparación del dataset original para convertirlo en el formato utilizado por Weka para este tipo de análisis.

Se dejaron como atributos solo las columnas correspondiente a los productos y con valores de tipo nominal; «t» para indicar presencia y «?» para indicar ausencia.

Esta preparación inicial se puede realizar directamente en Weka, utilizando alguno de los filtros que incluye en la pestaña de pre procesamiento del «Explorer» e incluso incorporarlos como pasos en el «Knowledge Flow» y así crear flujos de trabajo que puedan ser reutilizables o incluirlos en transformaciones de PDI que realicen todo el procesamiento.

Análisis y resultados

En el panel «Associate» del Explorer se permite elegir el algoritmo para la generación de reglas de asociación a utilizar y las opciones de ejecución. (1.0)

Algunas opciones a tener en cuenta son:

lowerBoundMinSupport – Nivel mínimo de soporte. Las reglas con un soporte inferior al elegido se descartan.
metricType – Tipo de métrica en base a la cual se ordenaran y clasificaran las reglas (Confidence, Lift, Leverage, Conviction).
minMetric – Nivel mínimo de la métrica seleccionada. Se consideraran las reglas que superen este valor.
numRules – Numero de reglas a encontrar.
outputItemSets – Si se habilita, genera en los resultados todos los ItemSets considerados.

Al descender los valores de las opciones lowerBoundMinSupport, minMetric y numRules se aumenta la cantidad de reglas a generar y los tiempos de ejecución.

Utilizando el «Knowledge Flow» se pueden exportar los resultados del análisis directamente a un archivo. En el mismo encontraremos por un lado los distintos ItemSets considerados y por otro las mejores reglas obtenidas.

A los ItemSets los agrupa según el largo (cantidad de items) y para cada combinación de items indica en que cantidad de casos se encontró.

Para las reglas indica: el orden, el antecedente, el consecuente, la cantidad de transacciones donde se cumple la regla y los valores de las métricas correspondientes.

El archivo generado se proceso para presentar la información en tablas y en planillas excel que permitieran un mejor acceso a los resultados.

Reglas de asociación

Sugieren una relación de concurrencia o correlación entre 2 variables (antecedente y consecuencia de la regla)
X -> Y Ejemplo de reglas: {B, C} -> {D}

PRECEDENTE -> CONSECUENTE

Itemset

Un conjunto de uno o más items incluidos en una transacción.
En el ejemplo, el itemset considerado estaría formado por los items «B», «C» y «D».

Soporte o Cobertura

Cantidad de transacciones que incluyen a los items de «X» e «Y» en el total de transacciones analizadas.

En el ejemplo, solo 2 de los 5 transacciones tienen los items «B», «C» y «D».
En este caso Support = 2/5 = 0.40

Soporte = (cantidad de transacciones con precedente & consecuente ) / total de transacciones

Precisión o Confianza

Cantidad de transacciones que incluyen a los items de «X» e «Y» en el total de transacciones que incluyen a «X».

De las 5 transacciones solo 2 tienen los items «B», «C» y «D» de las 3 que tienen «B» y «C». Confianza = 2/3 = 0.667

Conf (X -> Y) = supp ( X U Y ) / supp ( Y )

Lift

Es la confianza dividida la proporción de todas las transacciones que son cubiertas por la consecuencia.
En el ejemplo, 3 transacciones de 5 tienen al producto «D». Entonces el LIFT sería = (2/3)/(3/5) = 1,111
Lift (X -> Y) = supp ( X U Y ) / (supp ( Y ) * supp (X ))

Leverage

Es la proporción de casos adicionales cubiertos por la premisa y la consecuencia por encima de los esperados si fueran independientes entre si.
En el ejemplo, 3 transacciones de 5 tienen al productos «D».

Entonces el LEVERAGE sería = 2/5 – 3/5 * 3/5= 0,04 Leverage = soporte ( precedente & consecuente ) – soporte ( precedente ) * soporte ( consecuente )

El número de transacciones (o casos) por encima de los esperados se muestra como una métrica adicional que da información de contexto sobre la métrica.

Conviction

Es la proporción de casos adicionales cubiertos por la premisa y la consecuencia por encima de los esperados si fueran independientes entre si.