Apriori
Te voy a guiar con un ejemplo paso a paso para usar el algoritmo Apriori en Weka con el dataset “Supermarket” (uno de los datasets incluidos en Weka) para encontrar reglas de asociación.
Paso 1: Abrir Weka y cargar el dataset
- Abre Weka.
- En la ventana principal, selecciona la opción “Explorer”.
- En la pestaña Preprocess, haz clic en el botón “Open file…” y navega a la carpeta donde están los datasets de Weka. Selecciona el dataset “supermarket.arff”.
Descripción del dataset:
El dataset “Supermarket” contiene transacciones de productos comprados en un supermercado. Cada fila representa una transacción, y cada columna es un producto, marcado con un valor booleano (1 si el producto fue comprado en esa transacción, 0 si no).
Paso 2: Seleccionar el algoritmo Apriori
- Ve a la pestaña “Associate” en la parte superior del Explorer.
- Haz clic en el botón “Choose” a la izquierda.
- En el menú desplegable, selecciona “Apriori”. Está ubicado en
weka.associations.Apriori
.
Paso 3: Configurar parámetros de Apriori
- Una vez seleccionado el algoritmo Apriori, puedes ajustar algunos parámetros para controlar el resultado:
- Lower bound on minimum support: Este valor define el soporte mínimo que deben tener los ítems para que sean considerados frecuentes. Por defecto está en 0.1 (10%). Esto significa que solo se considerarán las combinaciones de productos que ocurran en al menos el 10% de las transacciones.
- Minimum metric (confidence): Este parámetro establece la confianza mínima que deben tener las reglas. Puedes dejarlo en el valor predeterminado de 0.9 (90%).
Paso 4: Ejecutar el algoritmo
- Haz clic en el botón “Start” en la parte inferior derecha para ejecutar el algoritmo Apriori.
- Una vez finalizado el proceso, verás las reglas generadas en la ventana de salida.
Paso 5: Interpretar los resultados
Las reglas generadas se mostrarán en la sección “Associations”. Aquí tienes un ejemplo de cómo podría ser el resultado:
Best rules found:
1. butter=1 107 ==> whole milk=1 87 conf:(0.81) lift:(1.40) lev:(0.09) [25]
2. yogurt=1 80 ==> whole milk=1 68 conf:(0.85) lift:(1.48) lev:(0.09) [21]
3. other vegetables=1 193 ==> whole milk=1 144 conf:(0.75) lift:(1.31) lev:(0.11) [36]
4. rolls/buns=1 180 ==> whole milk=1 124 conf:(0.69) lift:(1.20) lev:(0.08) [31]
5. domestic eggs=1 53 ==> whole milk=1 40 conf:(0.75) lift:(1.32) lev:(0.05) [10]
Explicación de las reglas generadas:
- Regla: La estructura general de las reglas es que ciertas combinaciones de artículos y una categoría de “total=high” (presumiblemente representando un gasto o frecuencia alta) implican una alta probabilidad de compra de “bread and cake=t” (pan y pasteles).
- Confianza (conf): La confianza es de 0.91 o 0.92 en todas las reglas, lo que significa que, cuando se cumplen las condiciones del lado izquierdo (por ejemplo, “biscuits=t frozen foods=t fruit=t total=high”), en un 91-92% de los casos también se compra “bread and cake”.
- Lift: La mayoría de las reglas tienen un valor de lift de aproximadamente 1.26 o 1.27. Esto indica que la compra de “bread and cake” es aproximadamente 1.26 veces más probable cuando se cumplen las condiciones de la regla, en comparación con si estos eventos fueran independientes. Aunque es un valor positivo, sugiere que la relación es moderada.
- Leverage (lev): Este valor (0.03 o 0.04) muestra el incremento en la probabilidad de observar ambos conjuntos juntos en comparación con si fueran independientes. Es un valor relativamente bajo, indicando que la combinación ocurre un poco más de lo que se esperaría por azar, pero no de forma muy significativa.
- Convicción (conv): La convicción, entre 2.92 y 3.35, indica una relación sólida entre los elementos en la regla. Esto implica que la ausencia de “bread and cake” cuando los otros artículos están presentes es entre 2.92 y 3.35 veces menos probable de lo esperado, lo cual refuerza la relevancia de la asociación.
- Interpretación general: En general, estos resultados sugieren que las personas que compran artículos específicos como “biscuits,” “frozen foods,” “fruit,” etc., y tienen un gasto total alto, también tienden a comprar “bread and cake” en una alta proporción (alrededor del 91-92% de las veces). La asociación es consistente a través de diferentes combinaciones de productos, lo cual puede ser útil para estrategias de marketing o de organización de productos en una tienda.
Estas reglas te permiten identificar productos que suelen comprarse juntos, lo que puede ayudar a tomar decisiones de marketing o distribución de productos en el supermercado.
Paso 6: Ajustes adicionales
- Si quieres obtener más reglas o ajustarlas, puedes cambiar el valor del soporte mínimo o la confianza mínima y volver a ejecutar el algoritmo.
- También puedes ajustar el número máximo de reglas que se muestran modificando el parámetro “numRules”.
Opciones de Apriori en Weka
- minMetric
- Descripción: Establece el umbral mínimo de confianza para que una regla de asociación sea considerada. Cuanto más alto sea este valor, solo se mostrarán reglas con alta confianza.
- Ejemplo: Un valor de
0.9
significa que solo se considerarán reglas con una confianza del 90% o superior.
- minSupport
- Descripción: Define el soporte mínimo necesario para que se incluya una regla. Representa el porcentaje mínimo de las transacciones que debe contener el antecedente de una regla.
- Ejemplo: Si
minSupport
es0.1
, el antecedente de una regla debe estar presente al menos en el 10% de las transacciones.
- lowerBoundMinSupport
- Descripción: Establece el límite inferior para el soporte mínimo, que puede ser útil si se planea reducir el soporte en cada iteración. Esto ayuda a Apriori a explorar reglas menos comunes al bajar gradualmente el soporte.
- Ejemplo: Si se establece
lowerBoundMinSupport
en0.05
, el algoritmo no bajará el soporte mínimo por debajo del 5%.
- delta
- Descripción: Esta opción disminuye gradualmente el soporte mínimo en cada iteración del algoritmo. Puede ser útil para encontrar reglas que no cumplan inicialmente con el soporte mínimo.
- Ejemplo: Si
delta
es0.01
, el soporte mínimo se reducirá en 1% en cada iteración hasta alcanzar el límite inferior.
- numRules
- Descripción: Define el número máximo de reglas a generar. Esta opción es útil para controlar la cantidad de resultados y evitar que el proceso genere demasiadas reglas.
- Ejemplo: Un valor de
20
limitará la generación a las 20 reglas con mayor confianza.
- outputItemSets
- Descripción: Si se activa, el algoritmo mostrará no solo las reglas, sino también los conjuntos de elementos frecuentes. Esto es útil para estudiar los conjuntos de datos y su frecuencia.
- Ejemplo: Si se activa, además de las reglas, se verán los conjuntos de elementos que aparecen frecuentemente en el conjunto de datos.
- significanceLevel
- Descripción: Establece el nivel de significancia para filtrar reglas estadísticamente relevantes, usando pruebas de chi-cuadrado. Esta opción permite identificar reglas con alta relevancia estadística.
- Ejemplo: Si se configura en
0.05
, solo se considerarán reglas con una significancia del 5% o superior en la prueba de chi-cuadrado.
- car
- Descripción: Cuando se activa, esta opción obliga a Apriori a generar Reglas de Asociación Clasificadoras (CAR). Esto es útil si se planea utilizar Apriori para tareas de clasificación en lugar de simple análisis de asociaciones.
- Ejemplo: Si
car
está activado, se generarán reglas que puedan ser aplicadas en problemas de clasificación, vinculando cada conjunto de elementos con una clase objetivo específica.
- metricType
- Descripción: Permite especificar la métrica de evaluación que se utilizará para ordenar y seleccionar las reglas generadas. Las métricas incluyen confianza, lift y convicción, entre otras.
- Ejemplo: Seleccionar
lift
hará que el algoritmo ordene las reglas según la elevación, o la relación entre la confianza observada y la esperada en caso de independencia.
- classIndex
- Descripción: Esta opción define qué atributo será tratado como la clase objetivo si se activa
car
, permitiendo que el algoritmo genere reglas de clasificación. - Ejemplo: Si
classIndex
se establece en4
, el atributo en la posición 4 se considerará como la clase objetivo para todas las reglas generadas.
- Descripción: Esta opción define qué atributo será tratado como la clase objetivo si se activa